2

Eclipse からプロジェクトを右クリックし、Android アプリケーションをエクスポートして、自己生成キーストアで署名します。

  1. エクスポート後、APK ファイルのサイズが通常よりも小さくなることがあります。

  2. APK ファイルのサイズが正しくない場合、アプリケーション クラス、つまり DataSystem で CNF 例外が発生します。

  3. 正しい APK と正しくない APK の両方を抽出しました。

  4. dex2jar ユーティリティの助けを借りて、classes.dex を classes_dex2jar.jar に変換し、Java 逆コンパイラ (jdgui) で開きました。

  5. 親が子パッケージの 1 つでクラブ化されているため、親の他の子クラスが存在しないことがわかります。

ここに画像の説明を入力

パッケージが正しくないため、アプリケーションの起動時に ClassNotFoundException に直面します。

java.lang.RuntimeException: アプリケーション com.tsf.esharp.DataSystem をインスタンス化できません: java.lang.ClassNotFoundException: com.tsf.esharp.DataSystem で android.app.LoadedApk.makeApplication(LoadedApk.java:482) で android.app .ActivityThread.handleBindApplication(ActivityThread.java:3952) で android.app.ActivityThread.access$1300(ActivityThread.java:128) で android.app.ActivityThread$H.handleMessage(ActivityThread.java:1199) で android.os.Handler .dispatchMessage(Handler.java:99) で android.os.Looper.loop(Looper.java:137) で android.app.ActivityThread.main(ActivityThread.java:4514) で java.lang.reflect.Method.invokeNative( com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) の java.lang.reflect.Method.invoke(Method.java:511) のネイティブ メソッド)。 ZygoteInit.main(ZygoteInit.java:557) dalvik.system.NativeStart.main(Native Method) で 原因: java.lang.ClassNotFoundException: com.tsf.esharp.DataSystem at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) at java. lang.ClassLoader.loadClass(ClassLoader.java:501) で java.lang.ClassLoader.loadClass(ClassLoader.java:461) で android.app.Instrumentation.newApplication(Instrumentation.java:946) で android.app.LoadedApk.makeApplication (LoadedApk.java:477) ... 11 以上の強制終了アクティビティ com.tsf.esharp.ui.activity/.LauncherActivityloadClass(ClassLoader.java:461) at android.app.Instrumentation.newApplication(Instrumentation.java:946) at android.app.LoadedApk.makeApplication(LoadedApk.java:477) ... 11 以上esharp.ui.activity/.LauncherActivityloadClass(ClassLoader.java:461) at android.app.Instrumentation.newApplication(Instrumentation.java:946) at android.app.LoadedApk.makeApplication(LoadedApk.java:477) ... 11 以上esharp.ui.activity/.LauncherActivity

予防措置として、ビルド時に APK のサイズを常に監視し、正常でない場合は再ビルドします。しかし、私のアプリケーションは開発段階にあるため、コンポーネントは頻繁に追加/削除されるため、比較する固定の標準サイズがないため、この予防策を常に使用することは実際には不可能です.

これは ADT プラグインのバグですか? 最新のリビジョン、つまり 21.1 を使用していることに注意してください。

どんな助けでも本当に感謝しています。

4

0 に答える 0