记一次小米推送的配置gradle文件管中窥豹

记一次接入小米推送的配置gradle文件管中窥豹

buildTypes {
        release {
            minifyEnabled true
            proguardFile getDefaultProguardFile('proguard-android.txt')
            proguardFile 'proguard-project.txt'
            signingConfig signingConfigs.release
            resValue("string" , "MiPush_AppId","2882xxxxxxx679")
            resValue("string" , "MiPush_AppKey","594xxxxx679")
            manifestPlaceholders = [nim_key : 'f7379xxxxxx31f19c20']
        }
        debug {
//            如果要求debug的app使用正式签名,可以打开下面配置
            signingConfig signingConfigs.release
            applicationIdSuffix ".debug"
            resValue("string", "MiPush_AppId", "288xxxxx788")
            resValue("string", "MiPush_AppKey", "591xxxx88")
            manifestPlaceholders = [nim_key : 'a91axxxxxxcxxeb54']
        }
    }

    productFlavors {
        study_enterprise{
            applicationId = "com.xiao.dong"
        }

        //测试固定Ip
//        offline_test{}
//        offline_mini_test {}
    }

如果要用AS打多包名的apk,这种需求一般是建立在不同渠道或者不同buildType的时候产生的需求。
可以通过配置applicationId = “” 的方式配置不同的appId。
有个疑问,为什么修改applicationId即可修改包名呢?applicationID和packagename到底是什么关系? 实际上, package 代表了 java 代码中的包名。 applicationId 代表了应用中的唯一标识。和应用签名一起用来区别和其他应用不同。我想这也就是为什么 Google 市场能够允许相同应用不同 applicationId 的原因。

这里还有个问题,还可以通过配置applicationIdSuffix “” 配置appId的后缀名,这样需求可能就是要接入第三方sdk的时候,配置key的时候,有些平台需要在debug的时候有特殊要求。还有个好处是有些产品需要有alpha、beta、debug、release各种奇奇怪怪的版本。

还有一个就是

resValue("string", "MiPush_AppId", "2882xxxx788")
resValue("string", "MiPush_AppKey", "591xxx42788")

这种方式执行完,gradle build之后会再

Paste_Image.png

目录下生成一个generated.xml文件,内容是

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <!-- Automatically generated file. DO NOT MODIFY -->

    <!-- Values from build type: debug -->
    <string name="MiPush_AppId" translatable="false">288xxxxx8</string>
    <string name="MiPush_AppKey" translatable="false">59xxxx8</string>

</resources>

原来如此,这种方式就是通过gradle配置自动生成string信息,并且可以通过R.string.MiPush_AppId 的方式访问到。
再说下translatable=“false”是什么意思,一般as新建一个工厂会有很多value-xx的文件,这个是为了做国际化处理的。而我们这里手动设置translatable=“false”就是告诉系统,不要把这个string国际化处理。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,026评论 19 139
  • Gradle对于很多开发者来说有一种既熟悉又陌生的感觉,他是离我们那么近,以至于我每天做项目都需要他,但是他又是离...
    阿_希爸阅读 9,606评论 10 199
  • 最近在项目中遇到需要实现 Apk 多渠道、定制化打包, Google 、百度查找了一些资料,成功实现了上述功能,在...
    看一季残花落幕阅读 2,555评论 1 8
  • 1.介绍 如果你正在查阅build.gradle文件的所有可选项,请点击这里进行查阅:DSL参考 1.1新构建系统...
    Chuckiefan阅读 12,191评论 8 72
  • 近几日,心中满是焦虑和不安,晚上抱着手机迟迟不肯睡去,早上又总是早早醒来。醒来后什么也不做,就躺在床上傻傻地盯着天...
    云栖处阅读 640评论 5 4