AndroidStudio 3.2+ AndroidX 爬坑
升级的as,然后一个半年没有维护的项目就打不开了,各种报错,决定通过逐个击破的方式解决这个问题。
第一条
更新gradle插件版本,和Gradle版本,按照as的提示进行。
第二条
一个警告,是说这个varinat.getJavaCompile() API将会在2019年后移除。
WARNING: API 'variant.getJavaCompile()' is obsolete and has been replaced with 'variant.getJavaCompileProvider()'.
It will be removed at the end of 2019.
当然还有另一个问题
Android resource compilation failed
G:\as320work\jfsmart\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:3795: error: duplicate value for resource 'attr/layout_anchorGravity' with config ''.
G:\as320work\jfsmart\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:3795: error: resource previously defined here.
猜测这个也是由于api等内容不对造成的,看了一下,项目中引用的一个依赖包targetSdkVersion 仍然用的是22,决定改成28试试
仍然不行, 更新一下项目中引用的其他依赖版本,就是报警告的那些,尤其是v7,v4,design包,这几个比较重要。
漫长的编译,下载一些东西。。。
第三条
然鹅,之前将gradle插件版本更新到了
classpath 'com.android.tools.build:gradle:3.4.0'
提示当前工具不能支持,让我升级as,去官网看了一些,果然as3.4版本已经出来了
本着不作不死的精神,决定更到最新(短期小版本更新改动应该不大)
漫长下载....
第四条
然鹅,还是那个will remove end of 2019, 当前as,gradle插件版本,gradle版本,api也是最新的,继续看报错详情
org.gradle.execution.MultipleBuildFailures: Build completed with 1 failures.
at org.gradle.initialization.DefaultGradleLauncher$ExecuteTasks.run(DefaultGradleLauncher.java:386)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:301)
at org.gradle.internal.operations.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:293)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:175)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:91)
at org.gradle.internal.operations.DelegatingBuildOperationExecutor.run(DelegatingBuildOperationExecutor.java:31)
at org.gradle.tooling.internal.provider.runner.BuildModelActionRunner.run(BuildModelActionRunner.java:54)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:67)
at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36)
at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
Caused by: org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:mergeDebugResources'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:95)
at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:91)
at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:119)
at org.gradle.api.internal.tasks.execution.ResolvePreviousStateExecuter.execute(ResolvePreviousStateExecuter.java:43)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:93)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:134)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker$1.execute(DefaultPlanExecutor.java:129)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:202)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:193)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:129)
... 6 more
Caused by: com.android.ide.common.workers.WorkerExecutorException: 1 exception was raised by workers:
com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource compilation failed
D:\androidSDK\.gradle\caches\transforms-2\files-2.1\b5660f198583de4443198b08ec4402b9\res\values\values.xml:19:5-827: AAPT: error: duplicate value for resource 'attr/layout_anchorGravity' with config ''.
D:\androidSDK\.gradle\caches\transforms-2\files-2.1\b5660f198583de4443198b08ec4402b9\res\values\values.xml:19:5-827: AAPT: error: resource previously defined here.
感觉像是在说sdk有什么问题,打开sdk manager,瞅瞅吧,貌似也没啥大问题,除了AndroidQ的相关内容没下载,android pd的内容相关都有下载,难不成把报错这个删除了试试看?
然而并没有卵用
求助google,又说values下文件报错的,那就排查一下。然而并没有发现任何的不规范写法
第五条
尝试添加:android.enableAapt2=false(这句遭废弃了,删除没用)
依然没有什么卵用,查看sync下的日志,发现:
WARNING: The following project options are deprecated and have been removed:
android.enableAapt2
This property has no effect, AAPT2 is now always used.
Affected Modules: SmallVideoLib, app
引入的一个SmallVideoLib 视频录制插件报错,决定删除,毕竟这个功能不用了,开始删除。。
没用
第六条
开始搞成Android X,我还就不信了
Android resource compilation failed
G:\as320work\jfsmart\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:3749: error: duplicate value for resource 'attr/layout_anchorGravity' with config ''.
G:\as320work\jfsmart\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:3749: error: resource previously defined here.
G:\as320work\jfsmart\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml: error: file failed to compile.
第六条
删除了不用的依赖,升级为androidX ,一切问题貌似都解决了
果然,第三方的东西要谨慎使用
build : complete successfully