Answers:
看来您需要修改“ AndroidManifest.xml
更改android:testOnly="true"
为” android:testOnly="false"
或删除此属性。
如果您想保留该属性android:testOnly
,则true
可以将pm install
command与-t
option 一起使用,但可能需要push
先将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
adb push bin/hello.apk /tmp/
对我不起作用,adb push ./debug.apk /sdcard/temp/debug.apk
起作用了
adb install -t app/build/outputs/apk/usUnitedStates/debug/app-usUnited-debug.apk
为我工作。
-f: Install package on the internal system memory.
我也遇到类似的问题,Android Studio 3.0.0 Beta 7
无法再发布到Play商店。
如此处所述:https : //developer.android.com/studio/run/index.html
注意:“运行”按钮会使用testOnly =“ true”构建一个APK,这意味着该APK仅可通过adb(Android Studio使用的adb)安装。如果您想要人们无需adb即可安装的可调试APK,请选择您的调试版本,然后点击构建>构建APK。
发布版本也是如此,Android Studio 3
您需要Build > Build APK(s)
拥有一个不可测试的发布apk并提交给商店。
添加-t
安装标志,如下面的屏幕截图所示:
-t
。
就我而言,此错误是在不稳定的gradle版本中。只需使用gradle的稳定版本(不是alpha,甚至不是beta)。这对我来说是固定的
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加载应用程序。当您执行此操作时,Android会创建一个适用于调试但不适用于安装的应用程序。如果尝试使用以下方法安装:
亚行安装-r yourapk
您将收到一条消息,内容为:
失败[INSTALL_FAILED_TEST_ONLY]
发生这种情况时,您需要先清理构建,然后选择构建->构建APK,以重建apk。看下面的图片:
此APK已准备好通过adb install命令或任何其他方法进行安装
希望这可以帮助
大卫
"allowTestPackages": "true"
方案的功能。
以我为例,是上传一个APK,尽管它已通过生产证书签名,并且是发行版本,但还是由Android Studio的运行播放按钮生成的。从Gradle或从“生成APK”菜单选项生成APK后,问题已解决。
我不知道它是否对任何人都有用,但是当我意外地尝试'gradle:2.4.0-alpha5'
在稳定的Android Studio版本(2.3
而不是2.4 preview 5
版本I )中使用测试gradle plugin()版本构建和安装我的项目时,我收到了此错误消息已下载并安装)。
当我意识到自己的错误时,我启动了Android Studio预览版,它可以毫无问题地构建并安装我的项目。
尽管我确定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用户界面进行编译,并且生成了APK,我不能只是
adb install <xxx.apk>
它将产生 Failure [INSTALL_FAILED_TEST_ONLY]
我需要使用gradle编译它./gradlew app:assembleRelease
。然后只有生成的apk,然后才可以安装。
这是因为Android Studio UI编译仅针对特定设备生成测试apk,而./gradlew app:assembleRelease
命令是要在所有设备上安装的实际apk生成(并上传到playstore)
对我有用的是从右侧菜单Refresh all Gradle projects
的Gradle
工具栏中执行的操作。
PFB来自Android Studio的屏幕截图。
Gradle
从右侧菜单中选择工具栏。Refresh
图标这为我解决了这个问题。
我尝试了带有多个apk的外部项目。
来自Studio的命令,看起来像
adb install-multiple -r ....
解决方案-
-t
就我而言,使用Android Studio 4.0,以下解决了该问题;
添加到“ gradle.properties”文件;
android.injected.testOnly=false