【问题标题】:Check if APK has been built properly检查 APK 是否已正确构建
【发布时间】:2014-02-25 08:25:25
【问题描述】:

我最近遇到了一个 Android 应用程序问题,我不知道发生了什么。 我正在通过 Eclipse 开发和测试我的应用程序,一切正常。 然后是时候在 PlayStyore 上发布它了(1.0 版已经在几个小时前发布了)。 所以我清理了我的工作区,并通过“Android 工具 => 导出签名的应用程序包”对 APK 进行了签名,并将 .apk 上传到了 GooglePlay。 上传过程完成,没有任何问题。 当应用程序 (1.0.1) 在 PlayStore 上发布时,我尝试下载它并将其安装在我的手机上。它下载正常,但应用程序在 1 秒后崩溃,甚至第一个屏幕都没有出现。 (但它在我的设备连接到 Eclipse 时运行良好,我还在手机上通过电子邮件发送了 apk 并从那里安装,没问题)

安装了我的应用新版本的每个人都无法启动它...

这是我可以在 GooglePlay 上看到的日志

java.lang.RuntimeException:无法实例化应用程序 be.example.ex.Ex: java.lang.ClassNotFoundException: 找不到类 路径上的“be.example.ex.Ex”:/data/app/be.example.ex-2.apk at android.app.LoadedApk.makeApplication(LoadedApk.java:509) 在 android.app.ActivityThread.handleBindApplication(ActivityThread.java:4657) 在 android.app.ActivityThread.access$1400(ActivityThread.java:159) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1376) 在 android.os.Handler.dispatchMessage(Handler.java:99) 在 android.os.Looper.loop(Looper.java:176) 在 android.app.ActivityThread.main(ActivityThread.java:5419) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:525) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1046) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:862) 在 dalvik.system.NativeStart.main(Native Method) 原因: java.lang.ClassNotFoundException:没有找到类“be.example.ex.Ex” 在路径上:/data/app/be.example.ex-2.apk 在 dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:64) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:501) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:461) 在 android.app.Instrumentation.newApplication(Instrumentation.java:992) 在 android.app.LoadedApk.makeApplication(LoadedApk.java:504) ... 11 更多

所以我阅读了一些关于 SO 的帖子,我清理了我的项目(再次),取消链接我的项目的库,然后再次将它们链接回来。 我发布了新的 APK (1.0.2),希望一切正常,用户可以在从 PlayStore 下载后启动它。

现在我有另一个版本要发布,但我无法解决同样的问题。现在越来越多的人下载了这个应用程序,我无法承受这个应用程序在每个用户的手机上崩溃。

有没有办法避免上一个问题?也许是检查 apk 是否已正确构建的工具?

请注意,这是我第一次收到此错误,并且我已经发布了一些应用程序而没有任何问题。我现在每次发布新版本都会吓坏了,所以如果有人可以给我一个建议以确保这种情况不再发生,那就太好了:)

提前致谢!

【问题讨论】:

  • 在Google Play上使用Beta、Alpha阶段,support.google.com/googleplay/android-developer/answer/…
  • 是的,我想过这个问题,但是在尝试打开他们提供的发送给测试人员的链接时,我遇到了错误 404。他们说最多可能需要 24 小时,所以我会等几个小时。这对我来说似乎是最好的方法。
  • @Seb83 在 Google Play 上使用 Alpha/Beta 阶段对您有用吗?
  • 是的。我终于进行了 Alpha/Beta 测试,现在我总是先在 BETA 中发布 APK。我不能再遇到和以前一样的问题了。

标签: android eclipse classnotfoundexception publishing google-play


【解决方案1】:

可能是清单不正确 请检查意图过滤器

<activity
    android:name="com.example.test.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

com.example.test.MainActivity 应该正确声明

【讨论】:

  • 谢谢,但我已经在清单中正确声明了活动。这就是我不明白的。错误日志显示找不到我的应用程序类...
【解决方案2】:

最好的办法是检查eclipse制作的apk。有时,在 google play store 上发布新版本之前,我遇到了同样的问题,我在手机上测试了我的 apk。只需使用以下命令行即可。

adb install pathToMyApk.apk

【讨论】:

  • 我会尝试使用导致问题的以前的 .apk,我会通知您
  • 当您在模拟器中测试您的应用程序时,eclipse 制作了一个 apk。当您导出一个 apk 时,会创建另一个 apk,但有时此 apk 已损坏,因此如果您在手机上测试此 apk 并且一切正常,则可以发布它。
  • 我遇到了与 OP 相同的问题,并且确实,在使用 adb 安装了错误的 apk 后,我可以重现该问题。
猜你喜欢
  • 2011-10-28
  • 1970-01-01
  • 1970-01-01
  • 2020-08-04
  • 2012-06-26
  • 1970-01-01
  • 1970-01-01
  • 2018-04-21
  • 2011-01-02
相关资源
最近更新 更多