2

在 Eclipse 中,我点击了项目,导出了 Android 应用程序并使用自生成的密钥库进行签名。

  1. 导出后,我偶尔会发现 APK 文件的大小比我通常得到的要小。

  2. 当 APK 文件大小不正确时,我的应用程序类(即 DataSystem)遇到 CNF 异常。

  3. 我提取了正确和不正确的 APK。

  4. 在 dex2jar 实用程序的帮助下,我将 classes.dex 转换为 classes_dex2jar.jar 并在 java 反编译器 (jdgui) 中打开。

  5. 我观察到父级与其中一个子包合并,因此父级的其他子类不存在。

在此处输入图像描述

由于包装不正确,我在启动应用程序时遇到 ClassNotFoundException。

java.lang.RuntimeException:无法实例化应用程序 com.tsf.esharp.DataSystem:java.lang.ClassNotFoundException:com.tsf.esharp.DataSystem at android.app.LoadedApk.makeApplication(LoadedApk.java:482) at 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(本机方法)在 java.lang.reflect.Method.invoke(Method.java:511) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:790) 在 com.android.internal.os。 ZygoteInit.main(ZygoteInit.java:557) at 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) at java.lang.ClassLoader.loadClass(ClassLoader.java:461) at android.app.Instrumentation.newApplication(Instrumentation.java:946) at 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 更多 强制完成活动 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 更多 强制完成活动 com.tsf。 esharp.ui.activity/.LauncherActivity

作为预防措施,在构建时我总是观察 APK 的大小,如果它不正常,我会重新构建它。但由于我的应用程序处于开发阶段,组件的添加/删除非常频繁,因此我没有固定的标准尺寸可供比较,因此实际上并不总是可以使用这种预防措施。

这是 ADT 插件的错误吗?请注意,我使用的是最新版本,即 21.1。

任何帮助将非常感激。

4

0 回答 0