我的 Android 项目包含一个作为 AAR 文件提供的库。
包含本地 AAR 文件有多种选择。
我可以声明一个文件依赖:implementation files('libs/mylib.aar')
或者我可以将 AAR 放入另一个模块,然后使用项目依赖项:implementation project(':mylibmodule')
但是,我想指定我的库的确切版本:mylib:1.0.0
不幸的是,我不知道如何在不使用远程存储库的情况下指定版本。
请注意,我不想将库上传到 JitPack、MavenCentral 或类似的。
我想要的只是指定本地 AAR 文件的版本。
更新
AAR 文件是一个 Zip 文件,内容如下:
/proguard.txt
/R.txt
/AndroidManifest.xml
/public.txt
/classes.jar
/res/values/values.xml
请注意
AndroidManifest.xml
包含库的版本。但是,我假设 gradle 总是需要一个 pom 文件来获取版本信息。
最佳答案
我意识到 gradle 允许在特定路径指定本地 Maven 存储库:
repositories {
maven {
url uri("${projectDir}/mylibdir")
}
}
要使用本地 Maven 存储库,我需要将我的库构建为 Maven 工件。要创建 Maven 工件,只需在正确的子文件夹中创建 POM 文件即可。
AAR 文件保持不变,因为 Maven 不关心工件格式。
可以使用
maven-publish
自动创建 Maven 工件。插件,例如:apply plugin: 'maven-publish'
publishing {
publications {
myRelease(MavenPublication) {
groupId 'com.foo'
artifactId 'my-artifact'
version '1.0.0'
artifact("$buildDir/outputs/aar/my-artifact.aar")
}
}
repositories {
maven {
url "$buildDir/repo"
}
}
}
但是,由于我并不真正需要使用 Maven,因此更简单的选择是将版本添加到 AAR 文件名中。
我使用
build.gradle
中的以下代码段执行此操作我的图书馆:android.libraryVariants.all { variant ->
variant.outputs.all {
outputFileName = "${archivesBaseName}-${variant.name}-${defaultConfig.versionName}.aar"
}
}
关于android - 如何对本地 gradle 依赖项进行版本控制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58647281/