1.签名apk,在小米盒子4(6.0.1)上安装的时候,显示安装失败,在自己的手机上安装一切正常。
ok,好,adb 连接上盒子,打印一下看看日志信息。(adb 连接过程就不说了)很顺利拿到了日志。
解决路程11-10 10:13:50.244 ? W/ResourceType: No known package when getting value for resource number 0x7f0f002e 11-10 10:13:50.244 ? W/PackageManager: Failure retrieving text 0x7f0f002e in package com.cloud.vega android.content.res.Resources$NotFoundException: String resource ID #0x7f0f002e at android.content.res.Resources.getText(Resources.java:312) at android.app.ApplicationPackageManager.getText(ApplicationPackageManager.java:1287) at android.content.pm.PackageItemInfo.loadLabel(PackageItemInfo.java:131) at com.android.packageinstaller.ui.InstallAppProgress$a.packageInstalled(Unknown Source) at android.content.pm.PackageManager$LegacyPackageInstallObserver.onPackageInstalled(PackageManager.java:4689) at android.app.PackageInstallObserver.onPackageInstalled(PackageInstallObserver.java:34) at android.content.pm.IPackageInstallObserver2$Stub.onTransact(IPackageInstallObserver2.java:79) at android.os.Binder.execTransact(Binder.java:455)
从日志上看,是因为找不到 resource ID #0x7f0f002e ,那就去看看R文件里这个id,是那个变量
这不就是应用名字么,它怎么会用问题呢,有点怀疑,先试着改一下名字看看,String 文件,找到app_name, 修改为 app_name_world, 再次打包,安装,还是安装失败,那就可以确定,不是应用名的问题。突然脑子 闪过一个想法,adb连着设备,那就直接run 一下看看能不能装上,,,结果还就安装成功了。。。。这样一看,那问题就明确了,debug 包能安装,签名包安装失败。那就剩签名与不签名的问题了。
然后就找到了一篇文章, 这篇博客,让我解决了问题。签名apk安装失败,都是signature version惹的祸_MingHuang2017的博客-CSDN博客
打签名包的时候你有注意到这个地方吗,V1,V2,打包之前没有想过区别是什么,就直接勾选 V2。正是这个举动造就了此次的错误。
大概的原因是:
v2是android7.0引入的一个签名机制,相比v1使得apk更安全及在安装时速度更快,但有可能会引起问题,具体可能会遇到什么问题并没有说,所以这个v2签名机制并不是强制性的,原文说如果不能正确构建则可以不用v2签名,只用v1签名。
如果不勾选V1,那么就会导致7.0一下版本的设备应用安装失败
勾选上V1,V2,重新打包,安装成功。
开心之际回想下刚触摸到bug 的时候,好像被日志误导了,不理解为什么会提示应用名app_name 找不到呢,,,待会再去想想,先晒一下安装成功的界面。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)