安装apk时的那些事儿

参考文章:https://mp.weixin.qq.com/s/YAOraVMJ2gsWRichERobjA

1.assembleDebug命令

如果build文件没有指定签名,会默认使用android的debug签名。如果build文件指定了则会使用build文件指定的签名文件签名,这样构建出来的apk可以安装。

2.assembleRlease命令

只会使用build文件指定的签名,如果没有配置则构建出来的apk不会签名,将导致在手机上安装失败。

3.testOnly属性

android studio中直接执行run命令AS Run 起来的 Apk,会使用debug签名,不过安装不上,并不是签名的问题。而是因为testOnly的属性。

在这里插入图片描述
通过反编译demo_debug.apk可以看到清单文件的确有该属性的存在:在这里插入图片描述

对于多年 Android 经验的开发者来说,如果曾经将 Run 出来的 Debug.apk 分享给别人时,早年间是可以正常安装的,那 testOnly 属性是在什么时候被加在 Debug.apk 上的呢?

虽然 FLAG_TEST_ONLY 属性最早可以追溯到 APK Level 4,但是它其实是在 Android Studio 3.0 上才被默认加入到 APK 中的。只有 AS 3.0+ 的 IDE 上,Run 出来的 APK,才会默认带上 testOnly 属性,这将阻止你使用正常的方式安装。

简单小结一下:

  • 我们无法通过正常安装方式,安装一个带有 android:testOnly=“true” 的 Apk。
  • 这个属性,是在 AS 3.0 中加入的。

3.1 如何安装带有testOnly属性的apk
只需要在 adb install 上,增加 -t 即可在这里插入图片描述
3.2 如何去除testOnly标记
如果想要阻止 AS 在 Run 时,构建的 APK 中增加 android:testOnly 标记,可以在 gradle.properties 文件中,增加 android.injected.testOnly=false 即可。去除该标记后使用As Run构建的apk将是可以直接安装的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值