导出android应用程序偶尔会错误地打包类

时间:2013-03-15 09:24:56

标签: android eclipse adt eclipse-adt

从Eclipse开始,我会点击该项目,导出Android应用程序并使用自生成的密钥库进行签名。

  1. 导出后,我偶尔会发现APK文件的大小比我正常情况下要小。

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

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

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

  5. 我观察到父母用一个子包进行了俱乐部,因此父母的其他子类不存在。

  6. enter image description here

    由于包装不正确,我在启动应用程序时面临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。

    任何帮助都会非常感激。

0 个答案:

没有答案