我在我的设备上安装apk时有问题。
adb install <.apk>
使用上述命令将返回以下结果:
5413 KB/s (99747 bytes in 0.017s)
pkg: /data/local/tmp/AppClient.TestOnly.App3.apk
Failure [INSTALL_FAILED_TEST_ONLY]
你知道是什么导致了这个问题吗?
它肯定能识别设备。会不会是apk出了问题?
我在我的设备上安装apk时有问题。
adb install <.apk>
使用上述命令将返回以下结果:
5413 KB/s (99747 bytes in 0.017s)
pkg: /data/local/tmp/AppClient.TestOnly.App3.apk
Failure [INSTALL_FAILED_TEST_ONLY]
你知道是什么导致了这个问题吗?
它肯定能识别设备。会不会是apk出了问题?
看起来你需要修改你的AndroidManifest.xml 将android:testOnly="true"更改为android:testOnly="false"或删除此属性。
如果你想保持android:testOnly属性为true,你可以使用pm install命令和-t选项,但你可能需要先将apk推到设备。
$ adb push bin/hello.apk /tmp/
5210 KB/s (825660 bytes in 0.154s)
$ adb shell pm install /tmp/hello.apk
pkg: /tmp/hello.apk
Failure [INSTALL_FAILED_TEST_ONLY]
$ adb shell pm install -t /tmp/hello.apk
pkg: /tmp/hello.apk
Success
我能够重现相同的问题,上面解决了它。
如果你的APK在设备外部(在你的桌面上),那么下面的命令可以做到:
$ adb install -t hello.apk
虽然我相信Saurabh的答案对大多数人都适用,但我确实想确定为了安装apk我必须采取的额外步骤。
我尝试向设备推送,结果如下:
? adb push AppClient.TestOnly.App3.apk \tmp\
failed to copy 'AppClient.TestOnly.App3.apk' to '\tmp\': Read-only file system
在四处查看更改文件系统RW权限后,我最终执行了以下命令:
? adb shell
255|shell@android:/ $ su
shell@android:/ # mount -o remount,rw /
mount -o remount,rw /
当我再次尝试推的时候,我得到了这个:
? adb push AppClient.TestOnly.App3.apk /tmp
failed to copy 'AppClient.TestOnly.App3.apk' to '/tmp': Permission denied
我可以推送到sdcard:
? adb push AppClient.TestOnly.App3.apk /sdcard/
3178 KB/s (99747 bytes in 0.030s)
这时我可以执行Saurabh的命令:
shell@android:/ # pm install -t /sdcard/AppClient.TestOnly.App3.apk
pm install -t /sdcard/AppClient.TestOnly.App3.apk
pkg: /sdcard/AppClient.TestOnly.App3.apk
Success
我不知道它是否对任何人有用,但我得到了这个错误消息,当我不小心试图在稳定的Android Studio版本(2.3,而不是2.4预览5版本我之前下载和安装)中构建和安装测试gradle插件('gradle:2.4.0-alpha5')版本的项目时。
当我意识到自己的错误时,我启动了预览版Android Studio,它构建并安装了我的项目,没有任何问题。
我同意Elisey的观点。在2.4预览中打开我的项目,然后在android studio 2.3中打开相同的项目后,我得到了同样的错误
修正了在构建中更改这一行的问题。它从
classpath 'com.android.tools.build:gradle:2.4.0-alpha5'
to
classpath 'com.android.tools.build:gradle:2.3.1'
解决这个问题最简单的方法是在运行配置中添加'-t'选项(用于pm install),而不需要恢复到旧的gradle版本。
testOnly='false'没有任何影响。该错误是由alpha版本的gradle插件导致的,该插件使调试APK“仅用于测试目的”。-t选项允许安装这样的APK。在运行配置中设置它会像往常一样自动安装APK。
我尝试了外部项目,有多个apk。
来自工作室的命令,看起来像
adb install-multiple -r ....
解决方案-
选择控制台 带-t的Aste命令
在我的例子中是通过上传一个APK,虽然它是用生产证书签名的,并且是一个发布变体,但它是由Android工作室的运行播放按钮生成的。 从Gradle或Build APK菜单选项生成APK后问题解决。
我在Android Studio 3.0.0 Beta 7中也遇到了类似的问题,无法再向游戏商店发布游戏。
如上所述:https://developer.android.com/studio/run/index.html
注意:Run按钮用testOnly="true"构建APK,这意味着 APK只能通过adb (Android Studio使用)安装。如果 你想要一个可调试的APK,人们可以在没有adb的情况下安装,选择 然后单击Build > Build APK(s)。
对于发布版本也是一样,对于Android Studio 3,你需要去build > build APK(s)来拥有一个不可测试的发布APK,你可以提交给商店。
我看到了接受的答案,但你不必真正地推动apk,然后在adb shell上运行命令直接adb install with -t flag实际上是有效的
Adb install -t“apk在你电脑上的路径”
附上截图供参考
Android studio 3.0只生成测试APK。
我已经通过添加“android:testOnly”属性到android manifest的标签解决了这个问题。
<application
.....
android:testOnly="false"
android:theme="@style/AppTheme">
然后通过Android studio3.0菜单生成APK:Build—>Build APK(s)。
更多信息: https://commonsware.com/blog/2017/10/31/android-studio-3p0-flag-test-only.html
我的发现如下。如果我使用Android Studio UI编译,并生成APK,我不能只是
adb install <xxx.apk>
它将生成失败[INSTALL_FAILED_TEST_ONLY]
我需要使用gradle即./gradlew app: assemblerrelease编译它。然后只有生成的apk,然后才能安装。
这是因为Android Studio UI Compile只为特定设备生成测试apk,而./gradlew app: assemblerrelease命令是实际生成的apk,将安装在所有设备上(并上传到playstore)
如文档中所述:
Android Studio在单击Run时自动添加此属性
所以,为了能够安装你的apk与adb安装<路径到apk文件>你需要组装从终端:./gradlew assembleDebug和adb安装。或者只运行./gradlew installDebug在设备上同时构建和安装。
从Android Studio构建你的发行版.apk,如下所示
构建—>构建Apk(s)(用于未签名的构建) 生成签名APK(用于签名构建)
这些选项使用android:testOnly="false"选项构建APK,允许您通过命令显式地将APK安装到设备中。
adb安装你的apk
对我来说有效的方法是从右边菜单的Gradle工具栏刷新所有的Gradle项目。
PFB来自Android Studio的截图。
从右边的菜单中选择Gradle工具栏。 选择刷新图标
这为我解决了问题。
之前的帖子都没有解决我的问题。下面是我的情况: 我通常通过点击“运行”按钮从android工作室加载应用程序。当你这样做时,android会创建一个适合调试但不适合安装的应用程序。如果您尝试使用以下方法安装:
Adb install -r yourapk
你会收到一条信息,上面写着:
失败(INSTALL_FAILED_TEST_ONLY)
当这种情况发生时,您将需要通过首先清理构建来重新构建apk,然后选择build -> build apk。请看下图:
这个APK可以通过adb install命令或任何其他方法安装
希望这能有所帮助
大卫
以我为例,使用Android Studio 4.0解决了这个问题;
添加到gradle。属性的文件;
android.injected.testOnly=false
如果你正在寻找一个不那么永久的解决方案,那么添加android.inject。testOnly=false到你的gradle。如果你不介意使用命令行,那么在安装之前执行以下两个命令即可:
rm -v **/build/**/AndroidManifest.xml
gradle build
Windows用户:从所有构建目录中删除所有AndroidManifest.xml。但不是从src目录,所以DEL /S不是最好的主意。
我也有同样的问题,没有答案。 最后,我发现在我的安全文件夹(或安全文件夹取决于手机品牌)中仍然有一个安装,它没有在Android卸载普通安装时被删除。删除它,这个问题就解决了。 希望这能帮助到其他人!