我在我的设备上安装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出了问题?


当前回答

我的发现如下。如果我使用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 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

虽然我相信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 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,你可以提交给商店。

将这一行添加到你的gradle.properties中

android.injected.testOnly=false

从Android Studio构建你的发行版.apk,如下所示

构建—>构建Apk(s)(用于未签名的构建) 生成签名APK(用于签名构建)

这些选项使用android:testOnly="false"选项构建APK,允许您通过命令显式地将APK安装到设备中。

adb安装你的apk