2013-12-20 11 views
5

私のアプリはサードパーティ製のCustomViewを使用していますが、これをプロジェクトに正しく追加しませんでした。 私は何をしましたか?* .javaとしてプロジェクトのファイルをダウンロードし、com.blabla.utils.CustomViewパッケージのプロジェクトに手動で追加しました(これは、このクラスを使用した* .xmlファイルで定義したものです) 。 私は、複数のデバイス(usbケーブルを使用し、テスターに​​署名apkを送信する)でアプリケーションをデバッグ/テストしていたとき、すべてが正常であるようでした。私は生産にアプリをアップロードするとき しかし、私は突然、今すぐ例外android.view.InflateException(エラーをクラスを膨張させる)プロダクションでのみ

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.*.*}: android.view.InflateException: Binary XML file line #55: Error inflating class com.*.*.CustomView

を持って、私は私の問題は、私は適切にプロジェクトを追加していない、何であったか実現し、 私はとライブラリを追加するために必要な既存のプロジェクトを自分のワークスペースに追加し、このプロジェクトをメインプロジェクトにリンクします。 そして、com.blabla.utils.CustomViewを* .xmlファイルのcom.theoriginaldeveloper.packageに変更しました。 問題を解決して新しいAPKをアップロードしました。

私の質問は、アプリをデバッグしているうちにこのメッセージが表示されない理由です。 どうすればそのような例外をプロダクションで避けることができますか? 私はここで何が欠けていますか?

(注意:Eclipseのテストや使用に使用したのと同じキーストアでAPKに署名しました)

ありがとうございました。

答えて

0

リリースビルドが実行され、デバッグビルドが難読化されていない間にクラス名を変更したobfuscatorがありました。

Androidアプリでは、通常、難読化/最適化ツールとしてProGuardを使用しています。

ライブラリプロジェクトには、XMLレイアウトから動的に参照可能にする必要があるため、特定のクラスを難読化しないルールが含まれているproguard構成ファイルがあるため、元のクラス名と一緒に機能するのはなぜですか。パッケージ名を変更すると、obfuscatorルールは新しいパッケージ名と一致しませんでした。

具体的には、

-keep public class foo.somepackage.SomeClassName 

のようにプロジェクトディレクトリに、そこのルールにproguard-project.txtを探して、あなたがパッケージまたはクラス名を変更した場合、ルールが更新されていることを確認します。

+1

私が知っている限り、彼はサードパーティのアプリケーションとしてインストールしたパッケージにも署名し、エクスポートしました。アプリケーションがプレイストアに公開されると、ProGuardの難読化が影響を受ける可能性があると思いますか? – MikeIsrael

関連する問題