我试图从命令行运行gradlew,但我不断遇到以下错误.
Brendas-MacBook-Pro:appx_android brendalogy$ ./gradlew compileDebug --stacktrace
-bash: ./gradlew: Permission denied
Run Code Online (Sandbox Code Playgroud)
我已经从我的项目目录中运行此命令.需要运行此命令,因为我遇到Android Studio 0.2.x上遇到的相同(非描述性)错误:Android studio和gradle build error
我做错了什么,我该如何解决这个问题?
我试图了解Gradle Wrapper的工作原理.在许多源代码库中,我看到以下结构:
projectRoot/
src/
build.gradle
gradle.properties
settings.gradle
gradlew
gradlew.bat
gradle/
wrapper/
gradle-wrapper.jar
gradle-wrapper.properties
Run Code Online (Sandbox Code Playgroud)
我的问题:
gradlew
/ gradlew.bat
?您是否应该在项目首次创建时仅生成一次,每次提交/推送更改时是否生成它们?它们是如何产生的?gradle/wrapper/*
文件(gradle-wrapper.jar
和gradle-wrapper.properties
)?*.gradle
在项目gradle
目录中看到其他文件.这些额外的Gradle文件是什么?它们代表什么/做什么?自定义插件?settings.gradle
与内部应该定义的属性有什么不同gradle.properties
?问题是,debug
当我切换到release
模式时,我可以运行我的应用程序但是当我切换到模式时它会失败.
例外:
FAILURE:构建因异常而失败.
任务':app:transformClassesWithDexForRelease'的执行失败.com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException:org.gradle.process. internal.ExecException:进程'command'/ Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/bin/java''以非零退出值1结束
当我使用stacktrace运行gradle build命令时,这就是我得到的
./gradlew app:transformClassesWithDexForRelease --stacktrace
Run Code Online (Sandbox Code Playgroud)
com.android.build.api.transform.TransformException:com.android.ide.common.process.ProcessException:java.util.concurrent.ExecutionException:com.android.ide.common.process.ProcessException:org.gradle.process. internal.ExecException:进程'命令'/Library/Java/JavaVirtualMachines/jdk1.8.0_73.jdk/Contents/Home/bin/java''以非零退出值1结束
例外情况是:
org.gradle.api.tasks.TaskExecutionException:任务':app:transformClassesWithDexForRelease'的执行失败.在org.gradle上的org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46) .api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)在org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:64)在org.gradle.api.internal .tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)在org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)在org.gradle.api.internal.tasks.execution .skipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecu org.gradle.execution.taskgraph.DefaultTaskGraphExecuter上的ter.execute(ExecuteAtMostOnceTaskExecuter.java:43)org.gradle.execution.taskgraph.DefaultTaskGraphExecuter $ EventFiringTaskWorker.exe(EventTaskTraphExecuter.java) 185)在org.gradle.execution.taskgraph.AbstractTaskPlanExecutor $ TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)在org.gradle.execution.taskgraph.AbstractTaskPlanExecutor $ TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)在org.gradle.execution .taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)at at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)at org.gradle.execution.DefaultBuildExecuter.access $ 000(DefaultBuildExecuter.jav)一:23)在org.gradle.execution.DefaultBuildExecuter $ 1.proceed(在org.gradle.execution.DefaultBuildExecuter.execute DefaultBuildExecuter.java:43)在org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)( DefaultBuildExecuter.java:37)在org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)在org.gradle.initialization.DefaultGradleLauncher $ 4.run(DefaultGradleLauncher.java:154)在org.gradle.internal.Factories $ 1 .create(Factories.java:22)在org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)在org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)在有机gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)在org.gradle.initialization.DefaultGradleLauncher.access $ 200(DefaultGradleLauncher.java:32)在org.gradle.initialization.DefaultGradleLauncher $ 1,创建(DefaultGradleLauncher.java:99)在组织.gradle.initialization.DefaultGradleLauncher $ 1.创建(DefaultGradleLauncher.java:93)在org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)在org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java :62)org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)atg.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)org.gradle.launcher.exec.InProcessBuildActionExecuter $ DefaultBuildController.运行(InProcessBuildActionExecuter.java:94)在org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)在org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)在组织.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)at org .gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:78)在org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:48)在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) )org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:26)org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)at org. gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSi ngleUsedDaemon.java:34)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的org.gradle.launcher.daemon.server.exec.ForwardClientInput $ 2.call(ForwardClientInput.java:72)atg.gradle.util.Swapper.swap(Swapper.java:38)位于org.gradle.launcher.daemon.server的org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)的.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:72)位于org.gradle.launcher.daemon.server.exec.LogToClient的org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)的.health.DaemonHealthTracker.execute(DaemonHealthTracker.java:47)位于org.gradle.launcher.daemon.server.api.Daemo的org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)中的.doBuild(LogToClient.java:66)nCommandExecution.proceed(DaemonCommandExecution.java:120)在org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:72)在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.health.HintGCAfterBuild.execute(HintGCAfterBuild.java: 41)在org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:120)在org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy $ 1.run(StartBuildOrRespondWithBusy.java:50)在org.gradle.launcher.daemon.server.DaemonStateCoordinator $ 1.run(DaemonStateCoordinator.java:246)位于org.gradle.internal.concurrent的org.gradle.internal.concurrent.ExecutorPolicy $ CatchAndRecordFailures.onExecute(ExecutorPolicy.java:54) .StoppableExecutorImpl $ …
我一直试图让ActionBarSherlock工作并遇到一些问题.我遇到的一个问题是在尝试构建它时出现以下消息:
Plugin with id 'android-library' not found
Run Code Online (Sandbox Code Playgroud)
特别:
D:\Projects\Android\actionbarsherlock>D:\Projects\Android\gradlew --info build
Starting Build
Settings evaluated using empty settings script.
Projects loaded. Root project using build file
'D:\Projects\Android\actionbarsherlock\build.gradle'.
Included projects: [root project 'actionbarsherlock']
Evaluating root project 'actionbarsherlock' using build file
'D:\Projects\Android\actionbarsherlock\build.gradle'.
FAILURE: Build failed with an exception.
* Where:
Build file 'D:\Projects\Android\actionbarsherlock\build.gradle' line: 1
* What went wrong:
A problem occurred evaluating root project 'actionbarsherlock'.
> Plugin with id 'android-library' not found.
Run Code Online (Sandbox Code Playgroud)
我把它视为一个单独的线程中的ABS问题,所以在这里我很好奇如何解决一般问题:
Plugin with id 'android-library' not found
Run Code Online (Sandbox Code Playgroud)
这是build.gradle:
apply …
Run Code Online (Sandbox Code Playgroud) 我通过删除本地目录等清洗整个项目~/.gradle
,~/.m2
~./android
并~/workspace/project/.gradle
和艇员选拔File -> Invalidate Caches / Restart...
Android Studio中.现在执行命令./gradlew
会导致以下输出:
usr$ ./gradlew tasks
Error: Could not find or load main class org.gradle.wrapper.GradleWrapperMain
Run Code Online (Sandbox Code Playgroud)
不用说,我删了太多,问题是如何再次修复?你有任何想法如何解决这个问题?
在将Android Studio更新到2.2版(在Windows 10上)之后,第二天早上我在任何项目上构建了gradle时收到了这样的错误:
__PRE__
尽管gradlew -build命令已成功运行并完成.我尝试了WTF修复集的典型android开发:清理构建,无效缓存,删除构建文件夹,删除.gradle文件夹,尝试不同的gradle设置,甚至重新安装android工作室,没有任何帮助.
我创建这个问题只是为了与社区分享我的经验,因为我浪费了两个小时.
问题实际上是什么 - 您可以通过命令行直接向gradlew发出任何命令来构建,打包和部署到设备吗?
我发表了以下评论:
./gradlew app:installDebug
Run Code Online (Sandbox Code Playgroud)
只有满足日志:
FAILURE: Build failed with an exception.
* What went wrong:
Could not determine java version from '11.0.2'.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
* Get more help at https://help.gradle.org
Run Code Online (Sandbox Code Playgroud)
我的gradle版本是5.1.1:
------------------------------------------------------------
Gradle 5.1.1
------------------------------------------------------------
Build time: 2019-01-10 23:05:02 UTC
Revision: 3c9abb645fb83932c44e8610642393ad62116807
Kotlin DSL: 1.1.1
Kotlin: 1.3.11
Groovy: 2.5.4
Ant: Apache Ant(TM) version 1.9.13 compiled on July 10 2018
JVM: 11.0.2 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用gradle-wrapper(gradlew
)构建一个gradle项目.
当我构建时./gradlew build
,它输出文本
正在下载http://services.gradle.org/distributions/gradle-1.11-bin.zip
我已经单独下载了gradle-1.11-bin.zip,我不想在构建时再次下载它.
那么,我应该把gradle-1.11-bin.zip放在我的项目或系统中,以便我不必再次下载?
gradle/wrapper/gradle-wrapper.properties如下.
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://services.gradle.org/distributions/gradle-1.11-bin.zip
Run Code Online (Sandbox Code Playgroud)
我已经尝试将gradle-1.11-bin.zip复制到gradle/wrapper/dists中,但这并没有解决问题.