Android之./gradlew assembleReleas

2021-03-30  本文已影响0人  学费

问题:执行gradle命令打多个release包失败了(./gradle assembleRelease)

报错:(以下为其中1个,都是这种类别的)

> Task :ocr_lib:verifyReleaseResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':ocr_lib:verifyReleaseResources'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.Workers$ActionFacade
   > Android resource linking failed
     /Users/lopez/.gradle/caches/transforms-2/files-2.1/ec609e8cee787e2dff3592c66b08a66a/core-1.0.0/res/values/values.xml:57:5-88:25: AAPT: error: resource android:attr/fontVariationSettings not found.
         
     /Users/lopez/.gradle/caches/transforms-2/files-2.1/ec609e8cee787e2dff3592c66b08a66a/core-1.0.0/res/values/values.xml:57:5-88:25: AAPT: error: resource android:attr/ttcIndex not found.

格式的话,大概是下面这样的,只是上面的那个ec609e8cee787e2dff3592c66b08a66a字符串不是固定的

.gradle\caches\transforms-2\files-2.1(32位的随机码,好像是hash值,目测是core-1.1.0.zip这个压缩文件的md5,找不到以前看过的那篇文章了,有知道的老铁麻烦说声)\core-1.1.0\res\values\values.xml:行号:列号-行号:列号: AAPT: error: resource android:attr/xxx not found.

PS:ocr_lib是project中的一个library,也就是所谓的module

场景:

  1. 在AS IDE上方菜单Build里点击Make/Clean/Build Project啥的都是能build成功的
  2. 直接点击AS右上角的gradle task直接执行命令比如installUat1Debug/Release是能成功编译好然后安装成功的
  3. 点击gradle的sync按钮也是能同步成功
  4. 执行打包单个渠道/环境的包是能成功的,比如./gradlew assembleUat1Release ,注意这里无论debug/release的buid type都能成功
  5. 执行打多个Release包命令的时候(./gradlew assembleRelease)就报错了,如上面所示
  6. 针对第5点,执行./gradlew assembleDebug命令能成功打包
  7. 上述情景,基于相同的gradle buildTypes配置,只配置了
signingConfig signingConfigs.config
minifyEnabled false

PS:这里配置是没开混淆,实际默认就是没开混淆的,相当于不加上这行也行,但还有些问题就先不开了

  1. targetSdkVersion全局是26
  2. app module与问题module的compileSdkVersion不一致,app module compileSdkVersion 28,问题module compileSdkVersion 26
  3. 各module都添加了androidx的依赖,如
    implementation 'androidx.appcompat:appcompat:1.2.0'

分析:

./gradlew assembleRelease 命令执行完后就看到上面的编译报错,然后按build失败提示里添加命令--warning-mode all查看已弃用的警告信息及--info --debug --stacktrace查看堆栈信息,但也还是没有发现涉及到项目里的内容,都是提示找不到某个库里的某个资源,然后项目中也并没有使用到这个资源,但就是这个原因导致build不成功,所以就还是定位为编译问题

方案:

前者流程:

172-2-22-8:xxxproject lopez$ ./gradlew assembleUat2Release

> Task :ocr_lib:stripReleaseDebugSymbols UP-TO-DATE
Compatible side by side NDK version was not found.

> Task :app:stripUat2ReleaseDebugSymbols UP-TO-DATE
Compatible side by side NDK version was not found.

BUILD SUCCESSFUL in 2s
47 actionable tasks: 47 up-to-date

后者流程

172-2-22-8:xxxproject lopez$ ./gradlew assembleRelease

> Task :ocr_lib:stripReleaseDebugSymbols UP-TO-DATE
Compatible side by side NDK version was not found.

> Task :app:stripProductReleaseDebugSymbols UP-TO-DATE
Compatible side by side NDK version was not found.

> Task :ocr_lib:verifyReleaseResources FAILED

FAILURE: Build failed with an exception.
上一篇 下一篇

猜你喜欢

热点阅读