记一次 vivo x21 Android 8.1.1 调试Apk填坑

项目做版本适配

项目在功能方面接近尾声的时候,轮到了适配工作,首先要解决 Android版本适配问题,也就是在不同安卓版本的机型上要跑起来无障碍。经过 20 多部手机测试,发现只有 vivo x21手机安装不了,但是同样还有一台 Android 8.1的手机安装运行却无问题。于是开始填坑…

首先要解决的是权限

安卓开发者应该都知道,安卓 8.0 开始限制了“允许安装未知来源软件”的开关,在此之前是可以在手机的设置里面找到此入口,打开即可;当然,解决这个问题并不难,只需要在 AndroidManifest.xml 中添加下面这行代码即可:

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

但是,即使如此,在 vivo x21手机上还是行不通……经过一番折腾,终于有了解决方案

1.设置你的AS,关闭Instant Run。File->Settings->BUild,Execution…->Instant Run , 关闭勾选Enable Instant Run…
2.在你的gradle.properties文件添加一句:android.injected.testOnly = false

解释

其中第一个没啥说的,关于开发过程中是否开启 Instant Run,我个人建议还是关闭它,我在开发过程中一直都是关闭着的,因为之前开启它,出现了一些莫名其妙的问题,目前我们的神器 Android Studio 已经优化的很好了,即使重新打包,也浪费不了多少时间。

关于第二个之所以要在 gradle.properties 文件加这句

android.injected.testOnly = false

那是因为我们跑的 run apk都是 debug 版本,也就是测试版本,而 vivo x21就不支持这个测试apk(网上有人这样说,经过验证,不假,在找答案的过程中,看到过很多吐槽:vivo x21不适合做测试机,因为它只认正式包)

果然这样我的 apk 就顺利安装上了。但是,有时候你可能还会遇到一个问题,为什么这么说呢?

想想,上面的做法是把打好的包通过 QQ 或者其他第三方软件发到 vivo x21 手机上的,比如说:发到 QQ 了,这个时候如果你的 QQ 是不允许安装未知应用的,那就会同样出现无法安装的问题。

解决方式
根据每个手机不同,未知也不太一样,比如 vivo x21 是在:设置 -> 更多设置 -> 未知xx管理(记不太清楚了)。

一加3T前段时间更新了 Android 8.0 ,它的位置在: 设置 -> 应用程序 -> 特殊访问权限 -> 安装未知应用。如下图,打开对应的软件即可。

安装未知应用

额外坑

经过爬坑,好不容易上来了,但是又一个坑来了,完美安装完毕,但是点击桌面图标,闪退,打不开软件,此时,我的内心真是奔溃的,无奈之下,将手机连接 AS 通过报错信息查看到是 xxx/libs xxx.so(非蓝色) 项目代码没有任何报错,还好,看到这个 Log,我心里已经不那么担心了,想了下,问题排查在 so 这块,因为这个项目使用到的 so 是在 2016 年加入的,那个时候 Android 8.0还没到来,第三方的 so 还没有适配,所以出现这个问题很正常,这样问题就好解决了,重新配置一遍 so 文件,果然顺利的跑起来了。

总结

  1. 对于高版本的特殊机型适配,需要会搜索和分析
  2. 对于项目使用到的第三方东西,要考虑版本兼容和适配
  3. 排查问题,定位问题,很锻炼自己解决问题的能力
©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页