android - 如何对本地 gradle 依赖项进行版本控制?

标签 android gradle android-gradle-plugin dependency-management aar

我的 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/

相关文章:

android - mergeReleaseResources 失败,原因为 `not valid resource name`(来自 package.json 的版本)

android - Gradle 依赖项问题 : Could not find org. jetbrains.trove4j

android - Android数据绑定(bind)与Guava冲突导致ProGuard报错

Android volley 不会在 POST 请求中调用 getParams

android - 获取 R.java 文件的路径

java - 在 Android Studio 3.2.1 中禁用代理设置不起作用

java - 无法使用 Gradle 通过 BinTray 将 Java 项目发布到 Maven

android - Gradle clean 任务因未解析所有依赖项而失败

Android ListView 返回空值?

android - 使用 Android 强制关闭上传图片但仍在工作