INSTALL_FAILED_TEST_ONLY
一、今天利用adb install 安装apk文件 时,报INSTALL_FAILED_TEST_ONLY的错误,刚开始以为是打包时哪里不对了,可以利用androidStudio运行时,可以正常运行,利用adb install 运行会报错,于是上网查找问题的原因
二、网上解决方案如下
1、在AndroidMainfest.xml中设置了apk属性为testOnly.
<appliaction
...
android:testOnly="false">
</application>
设置该属性为false或才删除这个属性,原因是qr忽略它是debug版本的apk检测。
2、buile.gradle中设置修改属性,注意这里的gradle文件是project的gradle而不是app的gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.4.0-alpha3' //版本为测试版
//这里修改为
classpath 'com.android.tools.build:gradle:2.4.0' //版本为测试版
}
}
3、放大招
adb install -t *.apk
三、上面三种办法 都试了一遍,只有第三种是可行的,但是第三种局限性太强,只能用于强制让它可以安装执行,如果该apk发给别人,别人照样装 不上应用。故该方案还是不行。于是继续找办法 ,终于找到了真正的办法
解决办法:
1、把上面两种方案的代码添加到app中,然后进入androidStudio的build设置选项,点击Build APK(s),这样生成的.apk文件就可以成功的利用adb install 命令安装程序了。问题完美解决。
解决方案参照网上http://blog.sina.com.cn/s/blog_6cbd24890102x0ki.html的博客
以下内容应该是源码注释,
Note: The Run button builds an APK with testOnly="true", which means the APK can only be installed via adb (which Android Studio uses). If you want a debuggable APK that people can install without adb, select your debug variant and click Build > Build APK(s).
也就是说,只要在AndroidStudio3.0内,点击绿三角运行Run,跑出来的apk,一定是TEST_ONLY的。
意思是说,如果点击androidStudio上的绿三角运行Run,它跑出来的apk文件 ,是TEST_ONLY的,如果利用adb install 安装这个apk文件 ,即使里边都设置对了,它依然是装不上的,故我们不应该利用run后的apk文件 来进行adb install安装 ,而应该,在build设置中,执行Build APK(s),这样生成的apk文件 才可以利用adb install来进行正常的安装 。
以上内容就是本人在开发中遇到的问题及解决方案。