繁体   English   中英

在Android L上构建并在Android K上安装时分发的调试APK进行测试时崩溃

[英]Debug APK distributed for testing crashes when built on Android L and installed on Android K

所以我现在面对这个问题已有一段时间了。 调试时,我正在使用运行Android 5.1(L)的设备。 完成后,我从/app/build/output/apk提取app-debug.apk ,然后通过Beta(按Fabric)将其转发到测试部门。

因此,在测试人员方面,当安装在运行Android 4.4(K)的设备上时,该应用在打开时会崩溃。 对于Fabric来说这不是问题,因为其他渠道(例如,闲置,电子邮件等)也会发生相同的情况。

如果我在运行Android K的模拟器上再次构建该应用程序并发送apk,它将在测试仪设备上正常运行。 是的,虽然该应用程序在运行Android 4.4的多个设备上崩溃。

我在SO上找不到与此相关的任何内容,因此请考虑提出。 这是Android Studio的已知问题,还是我缺少什么?

我正在使用:

  • Android Studio V2.1.3
  • 最小 SDK版本15
  • 目标SDK版本23
  • 编译的SDK版本23
  • 生成工具版本24.0.2

如果这不是错误,是否意味着我们必须在较低的Android版本上生成带签名的APK,以便它可以在所有设备上运行?

有人知道这个问题吗?

更新:在Android K上崩溃的版本可以在Android L及更高版本上正常运行。

更新:我能够获得Logcat:

FATAL EXCEPTION: mainProcess: com.myapp.qa, PID: 3570 java.lang.RuntimeException: Unable to instantiate application com.android.tools.fd.runtime.BootstrapApplication: java.lang.ClassNotFoundException: Didn't find class "com.android.tools.fd.runtime.BootstrapApplication" on path: DexPathList[[zip file "/data/app/com.myapp.qa-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.myapp.qa-2, /vendor/lib, /system/lib]]
    at android.app.LoadedApk.makeApplication(LoadedApk.java:516)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4317)
    at android.app.ActivityThread.access$1500(ActivityThread.java:135)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:136)
    at android.app.ActivityThread.main(ActivityThread.java:5017)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:515)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
    at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.android.tools.fd.runtime.BootstrapApplication" on path: DexPathList[[zip file "/data/app/com.myapp.qa-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.myapp.qa-2, /vendor/lib, /system/lib]]
    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
    at android.app.Instrumentation.newApplication(Instrumentation.java:975)
    at android.app.LoadedApk.makeApplication(LoadedApk.java:511)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4317) 
    at android.app.ActivityThread.access$1500(ActivityThread.java:135) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:136) 
    at android.app.ActivityThread.main(ActivityThread.java:5017) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:515) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595) 
    at dalvik.system.NativeStart.main(Native Method) 

2016年7月12日更新:我尝试添加多dex支持,但无法解决问题。 logcat提供相同的日志。

请检查您是否启用了即时运行选项。

转到Android Studio的偏好设置 ,然后在生成,执行,部署下找到即时运行选项。

取消选中复选框以禁用即时运行,然后再次清理并在设备中构建代码。 然后将调试apk传递给测试团队。 希望这次不会崩溃。

更新资料

似乎您的问题已经在这里被询问和回答了 尝试在build.gradle启用multidex支持。

defaultConfig {
    ...
    minSdkVersion 14
    targetSdkVersion 21
    ...

    // Enabling multidex support.
    multiDexEnabled true
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM