JJD*_*JJD 18 android gradle android-library aar maven-publish
TL\'DR:在此 Android Kotlin 库中,我从 Gradle 5.6.4 更新到 6.6.1(提交d5d8d2)。现在我无法再依赖 aar 来构建项目了。
我构建aar并将其部署到mavenLocal ...
\n$ ./gradlew clean :roadsigns:assemble\n$ ./gradlew publishToMavenLocal\nRun Code Online (Sandbox Code Playgroud)\n...然后在示例 Androidapp模块中引用已部署的库工件。mavenLocal()首先,我在根build.gradle文件中添加:
allprojects {\n repositories {\n google()\n mavenCentral()\n jcenter()\n mavenLocal() // <-- Add this\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n我mavenLocal()直接引用依赖项:
dependencies {\n implementation\n // implementation project(":roadsigns")\n implementation "info.metadude.kotlin.library.roadsigns:roadsigns:$version"\n implementation Libs.kotlinStdlib\n // ...\nRun Code Online (Sandbox Code Playgroud)\n当我构建示例应用程序时,我收到以下构建错误:
\n$ ./gradlew clean assembleDebug\n\nExecution failed for task \':checkDebugAarMetadata\'.\n> Multiple task action failures occurred:\n\n > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction\n > A dependency\'s AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) does\n not specify an aarFormatVersion value, which is a required value.\n Dependency: info.metadude.kotlin.library.roadsigns:roadsigns:4.0.0.\n AAR metadata file: /home/USERNAME/.m2/repository/info/metadude/kotlin/library/roadsigns/roadsigns/4.0.0/roadsigns-4.0.0-javadoc.jar.\n\n > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction\n > A dependency\'s AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) does\n not specify an aarFormatVersion value, which is a required value.\n Dependency: info.metadude.kotlin.library.roadsigns:roadsigns:4.0.0.\n AAR metadata file: /home/USERNAME/.m2/repository/info/metadude/kotlin/library/roadsigns/roadsigns/4.0.0/roadsigns-4.0.0-sources.jar.\n\n > A failure occurred while executing com.android.build.gradle.internal.tasks.CheckAarMetadataWorkAction\n > A dependency\'s AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties) does\n not specify an aarFormatVersion value, which is a required value.\n Dependency: info.metadude.kotlin.library.roadsigns:roadsigns:4.0.0.\n AAR metadata file: /home/USERNAME/.m2/repository/info/metadude/kotlin/library/roadsigns/roadsigns/4.0.0/roadsigns-4.0.0.aar.\nRun Code Online (Sandbox Code Playgroud)\n当我尝试使用 Gradle 5.6.4 进行相同操作时,没有错误。
\n在我使用的 Android Kotlin 库中:
\n\n我在我的机器上使用Java 8 (OpenJDK),并验证在另一台计算机上也出现相同的错误。
\n从 Gradle 5 到 Gradle 6 发生了什么变化导致 aar被破坏(?)
\n我查看了正在部署的文件mavenLocal():
~/.m2/repository/info/metadude/kotlin/library/roadsigns
\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 路标
\n\xe2\x94\x9c\xe2\x94\ x80\xe2\x94\x80 4.0.0
\n\xe2\x94\x82\xc2\xa0\xc2\xa0\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 路标-4.0.0。 aar
\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 roadsigns-4.0.0-javadoc.jar \n\xe2\
x94 \x82\xc2\xa0\xc2\xa0\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 roadsigns-4.0.0.module
\n\xe2\x94\x82\xc2\xa0\xc2\ xa0 \xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 roadsigns-4.0.0.pom
\n\xe2\x94\x82\xc2\xa0\xc2\xa0 \xe2\x94\x94\xe2 \x94\x80\xe2\x94\x80 roadsigns-4.0.0-sources.jar
\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 maven-metadata-local.xml
我比较了使用 Gradle 5 和 Gradle 6 部署的文件。有趣的是,这些roadsigns-4.0.0.aar文件是二进制等效的。但该pom文件有所不同:
roadsigns-4.0.0.module另外,仅当我使用 Gradle 6 部署时才会有一个文件。
当我从使用 Gradle 6 部署的文件中手动删除“新”部分时,应用程序构建成功!问题仍然是......这里发生了什么?!do_not_remove: published-with-gradle-metadata
Jac*_*nkr 11
我遇到了很多这样的错误:
...
The minCompileSdk (31) specified in a
dependency's AAR metadata (META-INF/com/android/build/gradle/aar-metadata.properties)
is greater than this module's compileSdkVersion (android-30).
Dependency: androidx.lifecycle:lifecycle-livedata-core:2.4.0.
AAR metadata file: C:\Users\CUR_USER\.gradle\caches\transforms-3\4e8a32482e233cfbbc450e03aabed8dd\transformed\lifecycle-livedata-core-2.4.0\META-INF\com\android\build\gradle\aar-metadata.properties.
...
Run Code Online (Sandbox Code Playgroud)
我所做的修复是
build.gradle(应用程序)compileSdk从 30 增至 31targetSdk从 30 增至 31问题很可能来自于您用于发布库的插件 ( digital.wup:android-maven-publish:3.6.3) 以及相当废弃的 bintray Gradle 插件,该插件尚未更新以支持 Gradle 元数据。
我敢打赌,由于这两个插件的工作方式,Gradle 6 消费者项目中.module优先于文件内容的文件填充不正确。pom.xml
幸运的是,现在 Android Gradle 插件(因此是第一方)中有内置maven-publish支持,并在此处记录:https://developer.android.com/studio/build/maven-publish-plugin
有了它,您可以发布到 mavenLocal、bintray 和任何其他合适的 Maven 存储库。
如果您使用它而不是任何第三方替代品,您应该不会有任何问题。
| 归档时间: |
|
| 查看次数: |
37509 次 |
| 最近记录: |