根据CommonsWare的blogpost,AndroidManifest.xml
文件可以具有android:testOnly
属性。
在我的AndroidManifest.xml
中,它被设为“false”
android:testOnly="false"
我正在使用“Build APK(s)”菜单选项生成apk文件,如下图所示
当我尝试从命令行安装app时,adb install -r myapp.apk,我仍然收到错误,
失败[INSTALL_FAILED_TEST_ONLY:installPackageLI]
我还应该做些什么让我的应用程序运行?
答案 0 :(得分:16)
您还可以使用以下命令:
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>
答案 1 :(得分:3)
解决方案1
单击包含您的配置的下拉菜单,然后选择Edit Configurations…
选择“常规”标签,然后将-t
添加到Install Flags
字段中。点击确定。
现在再次启动应用程序,它应该可以工作。
解决方案2
这意味着,共享应用程序具有一些测试包,因此 除非已将其删除并重新编译源代码,否则您不会 能够安装这个apk。但是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
答案 2 :(得分:1)
如果您真的希望能够从Android Studio中生成的APK中删除测试标记,可以尝试将以下内容添加到gradle.properties文件中:
android.injected.testOnly = false
答案 3 :(得分:1)
只需使用以下命令:
adb install -t app/build/outputs/apk/debug/app-debug.apk
您不需要使用-r,-r表示重新安装现有应用,并保留其数据。
安装应用程序您可以使用adb在模拟器上安装APK或 使用安装命令连接设备:
adb安装path_to_apk
在安装操作系统时,必须在安装命令中使用-t选项。 测试APK。有关更多信息,请参见-t。
https://developer.android.com/studio/command-line/adb#move
-t:允许安装测试APK。当您仅运行或调试应用程序或使用Android Studio时,Gradle会生成测试APK 生成>生成APK命令。如果APK是使用开发人员构建的 预览SDK(如果targetSdkVersion是字母而不是数字), 如果您是,则必须在安装命令中包含-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 Gradle同步开始
13:44项目设置开始
13:44执行任务:[:app:generateDebugSources, :vplus_explore:generateDebugSources, :vplus_uibase:generateDebugSources, :vplus_widget:generateDebugSources, :vplus_runtime:generateDebugSources, :vplus_cards:generateDebugSources, :vplus_launcher:generateDebugSources, :vplus_settings:generateDebugSources, :vplus_transactions:generateDebugSources, :vplus_payment:generateDebugSources, :vplus_common:generateDebugSources, :vplus_account:generateDebugSources, :vplus_commonres:generateDebugSources, :vplus_bootstrap:generateDebugSources, :vplus_logger:generateDebugSources]
13:44 Gradle同步在27 s 126 ms中完成
13:44 Gradle构建在4 s 666 ms中完成
13:45 *守护程序未运行;从tcp:5037开始
13:45 *守护程序成功启动
13:45执行任务:[:app:assembleDebug]
13:46 Gradle构建在33秒640毫秒内完成
答案 4 :(得分:0)
如果您想手动安装 APK 或使用以下 adb 命令将其交给他人进行手动安装,那么您应该只从菜单栏 -> 构建 -> 构建包/APK 构建 APK。
adb install -r xyz.apk
请勿点击播放按钮,因为它构建 APK 仅用于测试目的。单击播放按钮会覆盖默认位置的 APK,然后可以仅使用以下命令手动安装。
adb install -r -t xyz.apk