造成这种错误的原因可能有很多,下面是我的解决过程,希望能对大家有所帮助!
背景:正在做一个手机蓝牙的应用,在AVD上不支持,只能在真机上进行调试
平台:android 7.1.1 、Android studio3.0
问题:apk安装失败,提示:INSTALL_FAILED_TEST_ONLY
1、手机USB连电脑->打开手机开发者选项->打开USB调试
2、在Android Studio上点击绿色运行按钮,选择自己的设备,点击OK:
3、手机上一路允许,最后结果安装失败,结果如下。
4、一开始以为是手机禁止安装未知来源程序,所以安装失败了!在设置手机安全设置里发现应用安装已经被允许了,排除是手机的问题。
5、可能是Android studio的问题了,网上查一下这个问题,有很多解决办法,可参考这篇博客http://blog.csdn.net/xiaoyaozaimz/article/details/78555667
里面的方法都试了一遍,都没有解决。
6、最后看到一篇文章(传送门)说,在studio3.0里,只要点击绿色三角形的运行按钮,默认都是testOnly="true":
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).
这段话字面的意思就是 testOnly=''true''就是说只能用ADB来安装,如果不通过ADB来安装就要选择Build > Build APK(s)来生成APK。
其实不是很理解这段话的意思,到底是要用ADB还是不用ADB呢?
7、 先不管到底什么意思了,反正直接点击运行是不行的。先尝试用Build APK(s),看行不行。
8、Build > Build APK(s) , 然后再点击运行按钮,结果还是不行。
9、尝试用APK安装:打开cmd-> 进入APK目录->输入命令:adb install -r *.apk。报错:
10、因为刚才最后是点击运行按钮生成的APK, 尝试Build > Build APK(s)重新生成APK,运行命令
这就安装成功了。(注意:想在cmd下直接运行adb命令, 要将先adb.exe所在的路径添加到环境变量里去。...\android-sdk-windows\platform-tools)
总结:
1、错误原因:Android Studio3.0 直接点击运行按钮,会使testOnly属性默认为true。
2、解决方法:先用Build > Build APK(s)生成APK,再在命令行下使用ADB安装APK。