gradle.properties使用过程中的注意事项

假如我们的gradle.properties文件内容如下:

# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Project-wide Gradle settings.
# IDE (e.g. Android Studio) users:
# Gradle settings configured through the IDE *will override*
# any settings specified in this file.
# For more details on how to configure your build environment visit
# http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
org.gradle.jvmargs=-Xmx1536m
# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
# org.gradle.parallel=true

SDK_RELEASE=true
SDK_VERSION=2.0.15
appVersionCode=100
appVersionName=1.0.0
RELEASE_STORE_PASSWORD=111111
RELEASE_KEY_ALIAS=key0
RELEASE_KEY_PASSWORD=111111
android.useAndroidX=true
android.enableJetifier=true
appKey="oosjv"
appType="1"
#不能使用中文做变量内容,乱码
alihotfixFlag=""

现在我们要获取useAndroidX、appKey、appType、hotfixTag这几个参数,则流程如下:

首先

在app下的build.gradle里面配置参数:

buildTypes {
    release {
        ......
        buildConfigField("String", "appKey", project.properties.get("appKey"))
        buildConfigField("String", "appType", project.properties.get("appType"))
        buildConfigField "String", "hotfixTag", hotfixTag
        buildConfigField("boolean", "useAndroidX",  project.properties.get("android.useAndroidX"))
    }
    debug {
        ......
        buildConfigField("String", "appKey", project.properties.get("appKey"))
        buildConfigField("String", "appType", project.properties.get("appType"))
        buildConfigField "String", "alihotfixFlag", alihotfixFlag
        buildConfigField("boolean", "useAndroidX",  project.properties.get("android.useAndroidX"))
    }
}

然后

在BuildConfig里面配置对应的属性:

public final class BuildConfig {
	public static final boolean DEBUG = Boolean.parseBoolean("true");
	public static final String APPLICATION_ID = "com.bjh.iauhgdf";
	public static final String BUILD_TYPE = "debug";
	public static final String FLAVOR = "developDebug";
	public static final int VERSION_CODE = 100;
	public static final String VERSION_NAME = "1.0.0";
	public static final String appKey = "oosjv";
	public static final String appType = "1";
	public static final String alihotfixFlag= "";
	public static final boolean useAndroidX = true;
}

最后

最后在要用到的地方获取:

String alihotfixFlag= BuildConfig.alihotfixFlag;
boolean isuseAndroidX = BuildConfig.useAndroidX;
String appTyp = BuildConfig.appTyp
String appKey = BuildConfig.appKey

这里在获取gradle.properties里面的值的时候有几个地方要注意:

在app下的build.gradle里面配置参数的时候要注意参数类型要与gradle.properties对应,否则报错。

比如这里的appKey、appType、alihotfixFlag、isuseAndroidX这四个都是字符串String型,但是alihotfixFlag在app的build.gradle文件里面的处理方式完全不一样。这里要注意

在python的打包构建中,对于替换gradle.properties文件里面的内容有以下几点要注意:

1、gradle.properties文件里面的变量的值不能设置为中文。gradle.properties在中文编码会出现乱码而且很难解决。
2、在构建脚本里面,针对key=“value"的键值对,我们要用’value=”{0}"’.format(value),注意“0”的花括弧{}外面还要引号"".
3、针对key=value的键值对,我们用’value={0}’.format(value),“0”的花括弧{}外面没有引号"".

总结

在python的format()格式化中有这么一个细节:
‘iCode="{0}"’.format(“111”)得到的icode是一个带""的字符串:icode=“111”;
‘{0}’.format(“111”)得到的是这样的一个对象iCode=111;

也就是说:
——当我们需要key-“value"形式的时候就用’”{0}"’.format(“xxxx”)格式化;
——当我们需要key-value形式的时候就用’{0}’.format(“xxxx格式化”)

原创文章 118 获赞 149 访问量 9万+

猜你喜欢

转载自blog.csdn.net/haoyuegongzi/article/details/104616570
今日推荐