版本化我自己的Android库

版本化我自己的Android库,第1张

概述我目前正在为 Android开发自定义库. 我的想法是为应用程序创建一个版本(我目前在de build.gradle文件中设置它并且工作正常),以及该库的不同版本. 如果没有将两个build.gradle文件合并在一起,是否有最佳实践? 我在SO上发现了几个类似的问题,但他们已经4岁了,并没有多大帮助. 解决方案不是Git,因为你可能已经想到了. OP希望对库进行外部版本,可能是在不提供源代码的情 我目前正在为 Android开发自定义库.

我的想法是为应用程序创建一个版本(我目前在de build.gradle文件中设置它并且工作正常),以及该库的不同版本.

如果没有将两个build.gradle文件合并在一起,是否有最佳实践?

我在SO上发现了几个类似的问题,但他们已经4岁了,并没有多大帮助.

解决方法 解决方案不是Git,因为你可能已经想到了. OP希望对库进行外部版本,可能是在不提供源代码的情况下向第三方提供API的方法.

这对Gradle来说并不是微不足道的,但它是可行的.

你可以在不同的层面上做到这一点,我将解释最容易和最直接的.

设置版本号

首先,您需要将一个版本变量添加到gradle.propertIEs文件中.您可以使用简单的单行设置此变量:

版本0.1.0 =-SNAPSHOT

构建版本字符串

在你的项目中创建一个名为versioning.gradle的文件并将以下代码粘贴到内部(我很久以前在网上找到了这个,我没有源代码):

ext {    /**  * Builds an AndroID version code from the version of the project.  * This is designed to handle the -SNAPSHOT and -RC format.  *  * I.e. during development the version ends with -SNAPSHOT. As the code stabilizes and release nears  * one or many Release CandIDates are tagged. These all end with "-RC1","-RC2" etc.  * And the final release is without any suffix.  * @return  */    buildVersionCode = {        //The rules is as follows:        //-SNAPSHOT counts as 0        //-RC* counts as the RC number,i.e. 1 to 98        //final release counts as 99.        //Thus you can only have 98 Release CandIDates,which ought to be enough for everyone        def candIDate = "99"        def (major,minor,patch) = version.tolowerCase().replaceAll('-','').tokenize('.')        if (patch.endsWith("snapshot")) {            candIDate = "0"            patch = patch.replaceAll("[^0-9]","")        } else {            def rc            (patch,rc) = patch.tokenize("rc")            if (rc) {                candIDate = rc            }        }        (major,patch,candIDate) = [major,candIDate].collect{it.toInteger()}        (major * 1000000) + (minor * 10000) + (patch * 100) + candIDate;    }}

完成此 *** 作后,请确保在main build.gradle文件中包含versioning.gradle文件,方法是在AndroID插件的加载位置附近添加apply:’.. / version.gradle’.

然后,在defaultConfig块中,您希望将默认版本变量更改为以下值:

versionCode buildVersionCode()versionname version

库的文件名中的版本号

如果您真正构建了一个AndroID库,那么预期的输出就是.aar文件.

因此,请将以下gradle代码添加到build.gradle文件中:

libraryVariants.all {    variant -> variant.outputs.each {        output -> output.outputfile = new file(                output.outputfile.parent,output.outputfile.name.replace(".aar","-${defaultConfig.versionname}.aar")        )    }}

就是这样!您的输出文件将具有您在gradle.proprtIEs文件中指定的版本号的名称.

注意事项

这将以非常静态的方式对您的库和/或API进行版本控制.这意味着开发人员无法通过方法调用动态获取版本号.

一定要有一个方法可以为客户端开发人员提供版本号,并确保两者保持同步.只有这样你才能拥有一个正确版本的库.

总结

以上是内存溢出为你收集整理的版本化我自己的Android库全部内容,希望文章能够帮你解决版本化我自己的Android库所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1138090.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-30
下一篇2022-05-30

发表评论

登录后才能评论

评论列表(0条)

    保存