厦门专业网站排名推广,自己创办网站,在网上招标做兼职的网站,山西城乡和建设厅网站你也能够查看我的其它同类文章。也会让你有一定的收货关于使用Gradle来控制版本号和生成不同版本号的代码。我总结了三篇文章#xff0c;网上关于这些知识#xff0c;都比較零散。我在学习这些的之前。根本不知道还有这种方法。所以说不知道并不可怕#xff0c;可怕的是不知…你也能够查看我的其它同类文章。也会让你有一定的收货关于使用Gradle来控制版本号和生成不同版本号的代码。我总结了三篇文章网上关于这些知识都比較零散。我在学习这些的之前。根本不知道还有这种方法。所以说不知道并不可怕可怕的是不知道自己不知道。相信这三篇文章会给你不少灵感前言在项目中我们有时会须要依据不同的项目环境使用不同的项目变量举例在測试环境中须要app訪问的server地址是測试server正式公布下的app须要訪问正式server。能够使用以下三种技术来满足要求使用 gradle 在编译时动态设置 Android resValue改动 res value 的方式。比方改动 strings.xml 文件里的 AppName 的值在你的 gradle 文件 buildTypes 或者 productFlavors 以下如 release 体内写上相似resValue string, AppName, app1意为把名为 AppName 的 string value 值改为 app1使用 gradle 在编译时动态设置 Android BuildConfig在你的 gradle 文件 buildTypes 或者 productFlavors 以下如 release 体内写上相似buildConfigField String, ENDPOINT, \http://example.com\gradle sync 一下后BuildConfig.ENDPOINT 就会被赋值为 http://example.com 就能够供 Java 代码调用了。以下介绍怎样设置标签中的变量怎样使用标签中的变量请參考这里使用 gradle 在编译时动态设置 Android Manifest方法一(不推荐)在之前版本号的gradle中大部分的思路都是在AndroidManifest中定义一个变量。然后在编译的时候找出那个AndroidManifest中的变量将它替换掉。如友盟的多渠道打包在原来的 AndroidManifest.xml 文件里加入android:nameUMENG_CHANNEL/然后使用在build.gradle中找出UMENG_CHANNEL_VALUE这个值而且替换掉android.applicationVariants.all{ variant -println ${variant.productFlavors[0].name}variant.processManifest.doLast{copy{from(${buildDir}/manifests){include ${variant.dirName}/AndroidManifest.xml}into(${buildDir}/manifests/$variant.name)filter{String line -line.replaceAll(UMENG_CHANNEL_VALUE, ${variant.productFlavors[0].name})}variant.processResources.manifestFile file(${buildDir}/manifests/${variant.name}/${variant.dirName}/AndroidManifest.xml)}}}方法二使用manifestPlaceholders改变 meta-data(推荐)而在新版本号的gradle中processManifest这种方法被移除掉了而提供了一个新的功能manifestPlaceholders。我们能够在AndroidManifest中定义一个变量。在build.gradle中动态的替换掉十分方便。语法也十分简单。对照上面的功能我们须要动态替换友盟的appkey须要在AndroidManifest中定义一个变量android:nameUMENG_APPKEYandroid:value${umeng_app_key}/接着我们在build.gradle文件里依据不同的环境。生成不同appkey的apk。buildTypes {debug {manifestPlaceholders [umeng_app_key: 你替代的内容]}release {manifestPlaceholders [umeng_app_key: 你替代的内容]}develop {manifestPlaceholders [umeng_app_key: 你替代的内容]}}注意这里的“你替代的内容”。不能为特殊关键词比方TRUE否则在Java代码中获取不到meta-data中的值。错误演示样例manifestPlaceholders [oem: TRUE]执行gralde clean build。你就能够生成不同的appkey的apk是不是感觉好多了。^ ^假设你想要替换多个变量假如你须要两个变量要替换须要依照以下形式进行android:nameUMENG_APPKEYandroid:value${umeng_app_key}/android:nameUMENG_SECRETandroid:value${umeng_app_secret}/buildTypes {debug {manifestPlaceholders [umeng_app_key: 你替代的内容,umeng_app_secret:你要替换的内容]}...}