Android ADB安装失败,仅安装测试失败

Android ADB安装失败,仅安装测试失败,android,installation,apk,adb,Android,Installation,Apk,Adb,我在设备上安装apk时遇到问题 adb install <.apk> 你知道是什么导致了这个问题吗 它肯定能认出这个设备。这可能是apk的问题吗?看起来您需要修改您的AndroidManifest.xml 将android:testOnly=“true”更改为android:testOnly=“false”或删除此属性 如果您想将属性android:testOnly保持为true,您可以使用带有-t选项的pm install命令,但是您可能需要先将apk推送到设备上 $ adb p

我在设备上安装apk时遇到问题

adb install <.apk>
你知道是什么导致了这个问题吗


它肯定能认出这个设备。这可能是apk的问题吗?

看起来您需要修改您的
AndroidManifest.xml

将android:testOnly=“true”更改为
android:testOnly=“false”
或删除此属性

如果您想将属性
android:testOnly
保持为
true
,您可以使用带有
-t
选项的
pm install
命令,但是您可能需要先
将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
我可以推到SD卡:

? 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

在我的例子中,这个错误出现在不稳定的gradle版本中。只需使用稳定版本的gradle(不是alpha,甚至不是beta)。它对我来说是固定的,我不知道它是否对任何人有用,但我得到了这个错误消息,当我不小心尝试在稳定的Android Studio版本中用test gradle插件(
'gradle:2.4.0-alpha5')版本构建并安装我的项目时(
2.3
,不在我以前下载并安装的
2.4预览版5
版本中)


当我意识到我的错误时,我启动了预览Android Studio版本,它构建并安装了我的项目,没有任何问题。

我同意Elisey的观点。在2.4预览中打开我的项目,然后在Android Studio 2.3中打开同一项目后,我遇到了同样的错误

通过将build.gradle中的此行从

classpath 'com.android.tools.build:gradle:2.4.0-alpha5'


在不恢复到较旧的gradle版本的情况下,最容易解决此问题的方法是在运行配置中添加“-t”选项(对于pm安装)


testOnly='false'没有任何影响。该错误是由gradle插件的alpha版本导致的,该版本使debug APK“仅用于测试目的”。-t选项允许安装此类APK。在运行配置中设置它会使它像往常一样自动安装APK。

添加
-t
安装标志,如下面的屏幕截图所示:


我尝试了使用多个apk的外部项目

来自Studio的命令,看起来像

adb install-multiple -r ....
溶液-

  • 选择控制台
  • -t

在我的例子中,是通过上传一个APK,虽然它是用生产证书签署的,并且是一个版本变体,但它是由Android studio的run play按钮生成的。
从Gradle或Build APK菜单选项生成APK后,问题已解决。

如果要测试APK,只需添加
-t
命令行选项

命令示例:

adb install -t .\app-debug.apk

我在Android Studio 3.0.0 Beta 7中遇到了类似的问题,无法再发布到play store

如下文所述:

注意:Run按钮构建了一个带有testOnly=“true”的APK,这意味着 APK只能通过adb安装(Android Studio使用adb)。如果 如果您想要一个人们可以在没有adb的情况下安装的可调试APK,请选择 调试变量,然后单击构建>构建APK


发布版本也一样,使用
androidstudio3
你需要进入
build>buildapk
有一个不可测试的发行版apk,您可以提交到商店。

这对我有效adb安装-t myapk.apk

我看到了接受的答案,但您不必实际推送apk,然后在adb shell上运行命令直接adb安装-t标志实际有效

adb安装-t“您计算机中apk的路径”

附加屏幕截图以供参考

Android studio 3.0只生成测试APK

我通过将“android:testOnly”属性添加到android清单的标记中解决了这个问题

 <application
    .....
    android:testOnly="false"
    android:theme="@style/AppTheme">

我的发现如下。如果我使用Android Studio UI编译,并生成APK,我不能

adb install <xxx.apk>
adb安装
它将生成
失败[安装失败\u仅测试失败]

我需要使用gradle编译它,即
/gradlew app:assembleerelease
。然后只有生成的apk才能安装

这是因为Android Studio UI Compile仅为特定设备生成测试apk,而
/gradlew app:assembleerelease
命令是所有设备上安装的实际apk生成(并上传到playstore)

,如中所述:

Android Studio会在您单击“运行”时自动添加此属性


因此,为了能够使用adb安装来安装apk,您需要从terminal:
/gradlew AssembledBug
组装构建并使用adb安装。或者只需运行
/gradlew installDebug
来同时在设备上构建和安装。

对我来说,它已经起作用了执行gradle任务“清理”(在:app下,渐变窗格,通常位于右侧)并再次运行项目。

首先删除不稳定的版本:

adb卸载
有问题的软件包名称


;然后重新安装apk。

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

生成-->生成Apk(用于未签名的生成) 生成-->生成签名APK(用于签名生成)

这些选项使用android:testOnly=“false”选项构建APK,该选项允许您通过commond将APK快速安装到设备中

adb安装yourbuild.apk

 <application
    .....
    android:testOnly="false"
    android:theme="@style/AppTheme">
adb install <xxx.apk>
android.injected.testOnly=false
android.injected.testOnly=false
android.injected.testOnly=false