Android动态功能模块启用时签名APK崩溃:null InputStream异常
问题:启用动态功能模块后签名APK崩溃,移除模块后恢复正常
我的项目中,启用动态功能模块并生成签名APK时应用会崩溃;移除动态功能模块后,应用可正常运行。相关错误日志(已翻译)如下:
BoxUtil com.google.android.gms.persistent E [应用诊断工具] 输入流为空 [上下文 service_id=254 ] java.io.IOException: 输入流为空 at csij.d(:com.google.android.gms@234414038@23.44.14 (190400-580326705):209) at csgr.l(:com.google.android.gms@234414038@23.44.14 (190400-580326705):7) at csgi.apply(:com.google.android.gms@234414038@23.44.14 (190400-580326705):35) at com.google.android.gms.stats.service.DropBoxEntryAddedChimeraService.a(:com.google.android.gms@234414038@23.44.14 (190400-580326705):481) at com.google.android.gms.framework.tracing.wrapper.TracingIntentService.onHandleIntent(:com.google.android.gms@234414038@23.44.14 (190400-580326705):14) at njh.handleMessage(:com.google.android.gms@234414038@23.44.14 (190400-580326705):7) at android.os.Handler.dispatchMessage(Handler.java:106) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.os.HandlerThread.run(HandlerThread.java:67)
解决方案
- 统一主模块与动态模块的签名配置:确保动态功能模块的签名文件、密钥别名、密码等参数和主模块完全一致。签名APK时,主模块和动态模块必须使用同一套签名信息,否则会触发验证失败,导致系统读取模块文件时出现空输入流异常。
- 检查动态模块的文件完整性:排查动态模块中是否存在缺失的资源或核心文件,打包过程中遗漏关键文件会引发此类流读取错误。可以重新构建动态模块,确认所有必要文件都被正确打包。
- 更新Google Play服务依赖与设备版本:日志显示错误来源于Google Play服务组件,尝试将项目中的
com.google.android.gms依赖更新到稳定版,同时确保测试设备上的Google Play服务升级至最新版本,排除版本不兼容问题。 - 校验动态模块的清单配置:检查动态模块的
AndroidManifest.xml,确认权限声明、组件配置等没有错误,错误的清单设置可能导致模块加载失败。 - 用APK Analyzer排查结构问题:使用Android Studio内置的APK Analyzer工具,检查签名后的主APK和动态模块APK的文件结构,查看是否存在签名不匹配、文件缺失等异常情况。
内容的提问来源于stack exchange,提问作者Jasmin Patel
相关产品推荐
相关产品推荐

