在 Android 工作室3.0中失败[ INSTALL_FAILED_TEST_ONLY: installPackageLI ]

根据 CommonsWare 的这个 博客文章AndroidManifest.xml文件可以有一个 android:testOnly属性。

在我的 AndroidManifest.xml中,它被设置为“ false”

android:testOnly="false"

我正在使用“ Build APK (s)”菜单选项生成 APK 文件,如下图所示,

enter image description here

当我尝试从命令行安装应用程序时,adb install-r myapp.apk 仍然出现错误,

失败[ INSTALL _ FAILED _ TEST _ ONLY: installPackageLI ]

Android 工作室版本如下, enter image description here

我还应该做什么才能让我的应用程序运行?

56402 次浏览

如果您真的希望能够从 Android Studio 生成的 APK 中删除测试标志,您可以尝试将以下内容添加到 gradle.properties 文件中:

TestOnly = false

您也可以像下面这样使用命令:

adb install -r -t myapp.apk

对我很有效:

PS C:\Users\languoguang> adb -P 12345 install -r D:\GreeneTrans\HelloWorld-signed.apk
adb: failed to install D:\GreeneTrans\HelloWorld-signed.apk: Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
PS C:\Users\languoguang> adb -P 12345 install -t D:\GreeneTrans\HelloWorld-signed.apk
Success
PS C:\Users\languoguang> adb -P 12345 install -r -t D:\GreeneTrans\HelloWorld-signed.apk
Success
PS C:\Users\languoguang>

只需使用以下命令:

adb install -t app/build/outputs/apk/debug/app-debug.apk

您不需要使用-r,-r 表示重新安装现有的应用程序,并保留其数据。

安装应用程序您可以使用 adb 在模拟器或 使用 install 命令连接设备:

Adb install path _ to _ apk

安装时,必须在 install 命令中使用-t 选项 有关更多信息,请参见。

Https://developer.android.com/studio/command-line/adb#move

- t: 允许安装测试 APK。当你只运行或调试了你的应用程序或者使用了 Android 工作室的时候,Gradle 会生成一个测试 APK 构建 > 构建 APK 命令。如果使用开发人员构建 APK 预览 SDK (如果 targetSdkVersion 是字母而不是数字) , 如果是,则必须在 install 命令中包含-t 选项 安装测试 APK。

Https://developer.android.com/studio/command-line/adb#-t-option

或者您可以使用与单击“在 Android Studio 中运行”相同的命令

adb push {project dir}/app/build/outputs/apk/debug/app-debug.apk /data/local/tmp/{appId}


adb shell pm install -t /data/local/tmp/{appId}

AppId 在 app/build.gradle 中定义。

defaultConfig {
applicationId appId

现在应用程序从本地安装在设备上 启动第一个活动。

adb shell am start -n "{package name}/{package name}.splash.SplashActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER

2019年11月13日13:43同步开始

13:44项目设置开始

13:44执行任务: [ : app: generateDebugSource, : vplus _ Explorer: generateDebugSource, : vplus _ uibase: generateDebugSource, : vplus _ widget: generateDebugSource, : vplus _ run: generateDebugSource, : vplus _ card: generateDebugSource, : vplus _ launcher: generateDebugSource, : vplus _ sets: generateDebugSource, : vplus _ actions: generateDebugSource, : vplus _ pay: generateDebugSource, : vplus _ common: generateDebugSource, : vplus _ account: generateDebugSource, : vplus _ common res: generateDebugSource, : vplus _ bootstrap: generateDebugSource, : vplus _ logger: generateDebugSource ]

13:44分级同步完成27秒126毫秒

13:44分级建设完成4秒666毫秒

13:45 * 守护进程未运行; 现在从 tcp: 5037开始

13:45 * 守护进程成功启动

13:45执行任务: [ : app: Assembly bleDebug ]

13:46分级建造完成时间为33秒640

解决方案1

单击带有配置的下拉菜单并选择 Edit Configurations…

Edit Configurations…

选择“常规”选项卡并将 -t添加到 Install Flags字段。单击“确定”。

Install Flags

现在重新启动应用程序,它应该可以工作。

解决方案2

这意味着,共享应用程序有一些测试包,因此 除非这些已经删除并且重新编译了源代码,否则您将不会 但是 adb 命令提供了一个标志“-t” 使用它,您可以安装测试包的应用程序。

$ adb install -r -t YourAndroidApp.apk
2566 KB/s (7266004 bytes in 2.764s)
Success

解决方案3

如果将项目从存储在不同目录中的其他计算机移动,则可能发生此错误。解决问题: Clean the project并重新构建它。

解决方案4

转到“ Settings”-> “ Build, execution, deployment”并禁用“ instant run到热交换代码...”

解决方案5 将这一行添加到 gradle.properties:

android.injected.testOnly = false

如果您想手动安装一个 APK,或者使用以下 adb 命令将其交给某人手动安装,那么您应该只从菜单栏-> Build-> Build Bundle/APK 构建 APK。

 adb install -r xyz.apk

不要点击播放按钮,因为它构建 APK 仅用于测试目的。单击播放按钮将覆盖默认位置的 APK,然后只需使用以下命令即可手动安装该 APK。

adb install -r -t xyz.apk