Android重命名库项目的输出

时间:2014-07-11 13:27:11

标签: android android-gradle

我假设我的google-fu只是让我失望,但我无法弄清楚如何将版本号添加到我的图书馆项目的输出中。

我正在使用Android Studio(gradle)来构建库,并将其包含在其他项目中。我希望能够在文件中添加一个版本来跟踪给定项目正在使用的库版本,因此我希望版本号在生成的.aar中。

我无法弄明白。有什么指针吗?

2 个答案:

答案 0 :(得分:4)

重命名com.android.library模块的输出文件与com.android.application模块的输出略有不同。

在com.android.application gradle插件中,您可以输入

android.applicationVariants.all { variant ->
    def file = variant.outputFile
    variant.outputFile = 
        new File(file.parent, 
                 file.name.replace(".apk", "-" + defaultConfig.versionName + ".apk"))
}

但是在com.android.library gradle插件中你使用:

android.libraryVariants.all { variant ->
    def file = variant.outputFile
    variant.outputFile = 
        new File(file.parent, 
                 file.name.replace(".aar", "-" + defaultConfig.versionName + ".aar"))
}

如果您只想对特定变体执行此操作,您可以这样:

if(variant.name == android.buildTypes.release.name) {
}

答案 1 :(得分:3)

Android Gradle Plugin v2。+

较新的(2. +)Android Gradle插件版本没有variant.outputFile属性。这对我有用:

android.libraryVariants.all { variant ->
    variant.outputs.each { output ->
        output.outputFile = new File(
                output.outputFile.parent,
                output.outputFile.name.replace((".aar"), "-${version}.aar"))
    }
}

See the docs for complete description of the dsl for v2.3

Android Gradle Plugin v3。+

版本3插件不再支持outputFile。这是因为在配置阶段不再创建特定于变体的任务。这导致插件不能预先知道所有输出,但也意味着更快的配置时间。请注意,您需要使用all而不是each,因为配置时对象不存在新模型。

android.libraryVariants.all { variant ->
    variant.outputs.all {
        outputFileName = "${variant.name}-${variant.versionName}.aar"
    }
}

See the v3 migration guide for more detail.