我正在尝试使用 gradlew cat 命令与我的 Android 手机执行连接的 Android 测试。但我收到以下错误日志,并且无法安装该应用程序。
如果使用adb命令,应用程序就会安装。
上述命令适用于 OnePlusOne 手机,但不适用于联想和华硕
错误日志如下:
Unable to install /home/admin/MyApp/app/build/outputs/apk/app-local-debug.apk
com.android.ddmlib.InstallException: Failed to install all
at com.android.ddmlib.SplitApkInstaller.install(SplitApkInstaller.java:91)
at com.android.ddmlib.Device.installPackages(Device.java:901)
at com.android.builder.testing.ConnectedDevice.installPackages(ConnectedDevice.java:119)
at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:121)
at com.android.builder.internal.testing.SimpleTestCallable.call(SimpleTestCallable.java:48)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)
这恰好是大多数中国制造的手机的一个非常常见的问题。问题出在你的 gradle-plugin 依赖关系中,有两种方法可以解决它。
第1步:转到第8行的
sampleProject/android/build.gradle
并将类路径修改为com.android.tools.build:gradle:1.2.3
或1.2.1。
sampleProject/android/gradle/wrapper/gradle-wrapper.properties
并将distributionUrl修改为https://services.gradle.org/distributions/gradle-2.2-all.zip
第 1 步:在
sampleProject/android/app/build/outputs/apk
找到 app-debug.apk。
编辑!!!!!!!!!
执行上面列出的任何一个选项都变得如此疲惫和令人沮丧,我找到了另一个解决方案。
adb devices
。从输出中获取设备 ID H80xxxxxx。
react-native run-android --deviceId H80xxxxxx
注意:就个人而言,我现在每次出现错误时都会使用选项 3!!
使用
adb devices
检查您的手机是否正确可见
如果是,请尝试使用
adb
在您的手机上安装应用程序,如果已安装并且工作正常,则使用 ./gradlew connectedAndroidTest
(在 Linux 上)运行测试。
根据问题:https://github.com/facebook/react-native/issues/2720
这可能是 Gradle 插件版本的问题,所以如果您仍然遇到问题,请降级您的 gradle-plugin 依赖项。
希望对你有帮助
问题是因为您可能有
connected both Emulator & Real device
。删除其中一个就可以了。
由于我在删除真实设备后遇到了同样的问题,它修复了错误。
我从我的设备中卸载了该 apk。完成此操作后,我的问题得到了解决。
我也有同样的问题。 我的解决方案:手动删除
app-local-debug.apk
或app-debug.apk
文件,然后再次运行
我发现我在
archivesBaseName
下设置了 defaultConfig
,这样我就可以跟踪生产包版本,其中包括一个空格字符。一旦我删除了空格字符,它就很高兴。
即在模块级别
build.gradle
更改
android {
...
defaultConfig {
...
archivesBaseName = "myappname v${myVersionCode}"
...
到
android {
...
defaultConfig {
...
archivesBaseName = "myappname-v${myVersionCode}"
...