AndroidStudio 3.2+ AndroidX 爬坑

2019-11-11  本文已影响0人  失吾爱后而心死

升级的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

上一篇下一篇

猜你喜欢

热点阅读