Android配置文件中的一些小秘密

1、manifestPlaceholders

这个占位符我们在平时开发中用的多吗?

先简单介绍一下这个东东的使用场景:

在实际项目中,AndroidManifest里十几个地方的值是需要动态的改变(生成apk文件的时候)。如果每次去改也可以,但是累啊,在我之前他们打包是用手动替换,但我觉得这是是在没办法的办法,但是有了manifestPlaceholders占位符后就简单的多了,只需要改一个地方就行了。

作用:

它可以在 build.gradle文件中定义字符串并将值映射到 AndroidManifest清单文件的指定位置。

<application
        android:name="com.icbc.PhoneApplication"
        android:allowBackup="false"
        android:debuggable="true"
        //我们引用的地方
        android:icon="${icon}"
        android:label="${app_name}"

        android:theme="@style/Theme.AppCompat.Light.NoActionBar"
        tools:ignore="HardcodedDebugMode">
...
</application>

productFlavors {
        test{
            ...
            //我们配置的地方
            manifestPlaceholders = [app_name: "测试一", icon:"@drawable/ic_launcher1"]
            ...
        }
}

当然我们在引入第三方的时候是不是如下:

<meta-data
     android:name="qq"
     android:value="${value}">
</meta-data>

我们的value值赋值之后,你可知道怎么获取的吗?

ApplicationInfo applicationInfo = null;
    try {
        applicationInfo = getPackageManager().getApplicationInfo(getPackageName(), 
        PackageManager.GET_META_DATA);
    } catch (PackageManager.NameNotFoundException e) {
         e.printStackTrace();
    }
    if (applicationInfo == null)return;
    String value = applicationInfo.metaData.getString("qq");

这么一个小小的占位符可以帮我们节省这么多的操作。

2、BuildConfig

这个东东我们先介绍一下

BuildConfig是android studio在打包时自动生成的一个java类。

BuildConfig类在项目工程的build/generated/source/buildConfig/androidTest或debug或release中,这些目录中的BuildConfig类中有相同的常量字段。

那它有什么神奇之处呢?

如果你想实现多渠道打包你就会发现他的好处。

我们就可以通过定义一些常量使其在debug以及release中生成不同的字段来实现我们的目的。

怎么做呢?


当然要实现多渠道打包还需要添加许多配置,我们这里只是介绍一这个BuildConfig文件的用处

我们可以将敏感信息存放在BuildConfig文件,同时通过将敏感信息存放在工程中的gradle.properties中,可以避免将其上传到版本控制系统(svn或者git上),从而将敏感信息控制在少数人手里,而不是暴露给所有svn或者git权限的人。
但是安全级别也是很低的,我们可以对生成的APK反编译,查看BuildConfig.class文件,还是可以看到API Key的取值。



未完待续。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值