蓝光R1高清手机 - Android未能安装:未知失败([CDS]关闭[0]) [英] Blu R1 HD Phone - Android Failed to install: Unknown failure ([CDS]close[0])
问题描述
在设备农场实验室使用的所有Android设备中,当我进行操作时,Blu R1 HD始终崩溃
$ b
./ gradlew cDDAT
Min api 16并且max api是25。
日志:
$ b $ pre $ 安装APK' app-qa-debug.apk'在'BLU Advance 5.0 - 5.1'for app:qaDebug
10:02:53 E / 740494441:上传app-qa-debug.apk时出错:Unknown failure([CDS]关闭[0])
无法安装/Users/repos/mobile-android/app/build/outputs/apk/app-qa-debug.apk
com.android.ddmlib.InstallException:未能安装所有
在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.build.gradle.internal.tasks.InstallVariantTask.install(InstallVariantT ask.java:134)在sun.reflect.NativeMethodAccessorImpl.invoke0
(本机方法)
处sun.reflect sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
。 DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在java.lang.reflect.Method.invoke(Method.java:498)
在org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod。 Java的:75)
在org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory $ StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:227)
。在org.gradle.api.internal.project.taskfactory。 AnnotationProcessingTaskFactory $ StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory $ StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)
at org.gradle。 api.internal.AbstractTask $ TaskActionWrapper.execute(阿布斯tractTask.java:585)
处org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter org.gradle.api.internal.AbstractTask $ TaskActionWrapper.execute(AbstractTask.java:568)
。在org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions executeAction(ExecuteActionsTaskExecuter.java:80)
(ExecuteActionsTaskExecuter.java:61)
。在org.gradle.api.internal.tasks。执行.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
在org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
在org.gradle.api。 internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org。 gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(跳过EmptySourceFilesTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution。 SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
处org.gradle.execution.taskgraph org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
。 DefaultTaskGraphExecuter $ EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)维持在org.gradle.execution.taskgraph org.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
。 AbstractTaskPlanExecutor $ TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)维持在org.gradle.execution org.gradle.execution.taskgraph.AbstractTaskPlanExecutor $ TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
。 taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
在org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
在org.gradle.execution.SelectedTaskExecutionAction.execute( SelectedTaskExecutionAction.java:37)
在org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
在org.gradle.execution.DefaultBuildExecuter.access $ 000(DefaultBuildExecuter.java:23)
。在org.gradle.execution.DefaultBuildExecuter $ 1.proceed(DefaultBuildExecuter.java:43)$ b $在org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)b
。在org.gradle .execute.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher $ 4.run( DefaultGradleLauncher.java:154)
在org.gradle.internal.Factories $ 1.create(Factories.java:22)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle。 internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
at org.gradle.initialization.DefaultGradleLauncher.access $ 200 (DefaultGradleLauncher.java:32)
at org.gradle.initialization.DefaultGradleLauncher $ 1.create(DefaultGradleLauncher.java:99)
at org.gradle.initialization.DefaultGradleLauncher $ 1.create(DefaultGradleLauncher.java:93 )美元,org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90 b $ b)
在org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
在org.gradle.initiali zation.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
处org.gradle.launcher.exec.InProcessBuildActionExecuter $ DefaultBuildController org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
。运行(InProcessBuildActionExecuter.java:94)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run( ChainingBuildActionRunner.java:35)
org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java: 28)$在org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75 b $ b)
。在org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:45)
在org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
在org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
在org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
在org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection。 java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger。执行(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server。 exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed (DaemonCommandExecution.java:120)
位于org.gradle.launcher.daemon.server.exec.ForwardClientInput $ 2.call(ForwardClientInput.java:74)
位于org.gradle.launcher.daemon.server。 exec.ForwardClientInput $ 2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec .ForwardClientInput.execute(ForwardClientInput.java:72)
在org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
在org.gradle.launcher.daemon .server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
在org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
在org.gradle .launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
在org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
在org.grad le.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
在org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)处使用org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
)
在org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution .java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy $ 1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator $ 1 .run(DaemonStateCoordinator.java:246)$ or $ $ b $ org.gradle.internal.concurrent.ExecutorPolicy $ CatchAndRecordFailures.onExecute (ExecutorPolicy.java:54)
在org.gradle.internal.concurrent.StoppableExecutorImpl $ 1.run(StoppableExecutorImpl.java:40)$ B $在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java B:
at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)$ b $ at java.lang.Thread.run(Thread.java:745)
:app :installQaDebug失败
失败:生成失败,出现异常。
*出错:
任务':app:installQaDebug'的执行失败。
> com.android.builder.testing.api.DeviceException:com.android.ddmlib.InstallException:无法安装所有
*尝试:
使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获取更多日志输出。
BUILD FAILED
Android版本:5.1但是,当我从Android Studio(右键单击包 - >运行测试)运行测试时,它运行良好。
>
任何人都有什么想法和可能的解决方案吗?在官方Android的Google代码页上发现了非常类似的问题:
https: //code.google.com/p/android/issues/detail?id=207148
您遇到 Android问题权限
运行时控制,随最新Android M提供。
因为我已经检查过您的设备是使用Android v6.0 Marshmallow,这里描述: http://www.bluproducts.com/r1-hd/
通过 Android Studio安装
可以工作ause IDE 在应用运行时提供了所需的权限,因此您无需担心。
当您运行Gradle的控制台时,您需要自行提供或指定您需要运行应用程序的权限。
请阅读以下内容:
https:/ /developer.android.com/training/permissions/requesting.html
如果您不想实施Android以标准方式运行许可运行时,可以使用 Dexter
或者 PermissionsDispatcher
库,但最简单的方法是为避免实现Android权限运行时,请转至您的应用 build.gradle
并降级 targetSdkVersion
从 24
或 23
至 22
。所以你的 Gradle
文件应该包含:
defaultConfig {
minSdkVersion 15
targetSdkVersion 22
...
}
它应该解决问题。
Among all the android devices I use in the device farm lab, the Blu R1 HD always crashes when I do
./gradlew cDDAT
Min api 16 and max api is 25.
Log:
Installing APK 'app-qa-debug.apk' on 'BLU Advance 5.0 - 5.1' for app:qaDebug
10:02:53 E/740494441: Error while uploading app-qa-debug.apk : Unknown failure ([CDS]close[0])
Unable to install /Users/repos/mobile-android/app/build/outputs/apk/app-qa-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.build.gradle.internal.tasks.InstallVariantTask.install(InstallVariantTask.java:134)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:227)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:220)
at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:209)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585)
at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
at org.gradle.internal.Factories$1.create(Factories.java:22)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:75)
at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:45)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:52)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:37)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:34)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:74)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.call(ForwardClientInput.java:72)
at org.gradle.util.Swapper.swap(Swapper.java:38)
at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:66)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.health.HintGCAfterBuild.execute(HintGCAfterBuild.java:41)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)
at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50)
at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:246)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54)
at org.gradle.internal.concurrent.StoppableExecutorImpl$1.run(StoppableExecutorImpl.java:40)
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)
:app:installQaDebug FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:installQaDebug'.
> com.android.builder.testing.api.DeviceException: com.android.ddmlib.InstallException: Failed to install all
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Android Version: 5.1
However, when I run the tests from Android Studio (Right Click Package -> Run Test), it runs fine.
Anyone has any idea on what's going on and possible solution?
I found pretty similar issue on official Android's Google Code page: https://code.google.com/p/android/issues/detail?id=207148
You have a problem with Android Permissions
runtime control, provided with latest Android M.
As I'd already checked your device is using Android v6.0 Marshmallow as it is described here: http://www.bluproducts.com/r1-hd/
Installing through Android Studio
works because IDE provides the needed permissions at the app runtime, so you don't need to worry about it.
When you run Gradle's console you need to provide by yourself or to specify which permissions do you need to run your application.
Read this: https://developer.android.com/training/permissions/requesting.html
If you don't want to implement Android permission runtime in standard way, you can use Dexter
or PermissionsDispatcher
libraries, but the easiest way would be avoid them.
To avoid implementing Android permissions runtime, go to your's app build.gradle
and downgrade targetSdkVersion
from 24
or 23
to 22
. So your Gradle
file should contains:
defaultConfig {
minSdkVersion 15
targetSdkVersion 22
...
}
It should solve the problem.
这篇关于蓝光R1高清手机 - Android未能安装:未知失败([CDS]关闭[0])的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!