从Eclipse开始,我会点击该项目,导出Android应用程序并使用自生成的密钥库进行签名。
导出后,我偶尔会发现APK文件的大小比我正常情况下要小。
当APK文件大小不正确时,我的应用程序类即DataSystem会遇到CNF异常。
我提取了正确的&不正确的APK。
在dex2jar实用程序的帮助下,我将classes.dex转换为classes_dex2jar.jar并在java反编译器(jdgui)中打开。
我观察到父母用一个子包进行了俱乐部,因此父母的其他子类不存在。
由于包装不正确,我在启动应用程序时面临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)at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1199) 在android.os.Handler.dispatchMessage(Handler.java:99)at android.os.Looper.loop(Looper.java:137)at android.app.ActivityThread.main(ActivityThread.java:4514)at java.lang.reflect.Method.invokeNative(Native Method)at java.lang.reflect.Method.invoke(Method.java:511)at 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方法)引起: java.lang.ClassNotFoundException:com.tsf.esharp.DataSystem at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61) 在java.lang.ClassLoader.loadClass(ClassLoader.java:501)at java.lang.ClassLoader.loadClass(ClassLoader.java:461)at android.app.Instrumentation.newApplication(Instrumentation.java:946) 在android.app.LoadedApk.makeApplication(LoadedApk.java:477)... 11 更多力量整理活动 com.tsf.esharp.ui.activity / .LauncherActivity
作为预防措施,在构建时我总是会观察APK的大小,如果不正常我会重新构建它。但是当我的应用程序处于开发阶段时,组件会频繁地添加/删除,因此我没有固定的标准大小来进行比较,因此使用此预防措施实际上并非总是可行。
这是ADT插件的错误吗?请注意,我使用的是最新版本,即21.1。
任何帮助都会非常感激。