美文网首页
Android项目gradle本地配置(二)

Android项目gradle本地配置(二)

作者: 被咯苏州 | 来源:发表于2016-11-15 22:03 被阅读82次

    好了,继续跟着上次的文章往下写。人生真是寂寞如雪啊~~~



    上次介绍的是Project的gradle, 相信大家对一些变量的定义和使用有了一定的认识了。今天我们介绍的是Module的gradle。

    android {
        //配置keystore签名
        signingConfigs {
        }
        //系统自带的
        defaultConfig {
        }
        //变种
        productFlavors{
        }
        //打包类型
        buildTypes {
        }
    }
    
    

    我暂时就用到这几种,那我们先一个个来介绍。
    1.signingConfigs ,这个方法是用来配置你run的情况下Apk打的是哪个签名。可以这样配置。

    signingConfigs {
            GWT {
                //引入签名的路径
                storeFile file("./xxx.jks")
                //签名密码
                storePassword "password"
                //别名
                keyAlias "keyAlias"
                //key的密码
                keyPassword "password"
            }
    
            GWTTest {
                storeFile file("./xxx_test.jks")
                storePassword "password"
                keyAlias "keyAlias"
                keyPassword "password"
            }
    }
    

    这里我用生成的两个jks来配置不同环境下打入不同的签名包,这里可能有人会问那到底怎么用呢,先别急,慢慢来,这个主要是为了和后面的一起配合的,现在是说明下用法,让大家了解下这个地方该怎么写。

    敲黑板。。。注意哈,这里我的jks是放在了Module的gradle的同级文件里,也就是他们俩是在一起的,所以我的路径是“./xxx.jks”,大家最好也这样,因为团队合作的话路径就一致了,没那么多幺蛾子。

    GWT配置的是我项目中正式的jks,steelCityDevelop配置的是我开发的jks,一般来说开发都会有两套jks,当然如果还有更多的话那么在下面继续定义就是了。

    2.productFlavors变种(我自己这样叫的,别打我),这个方法里面会用来配置不同环境的差异参数,比如说正式和开发的接口路径,包名,打哪个签名,App包名,各种第三方的key。

    productFlavors {
            GWTTest {
                //修改包名,在包名后面加了个.test
                applicationIdSuffix ".test"
                //执行上面的签名配置,意思就是我这个打开发签名包
                signingConfig signingConfigs.GWTTest
                //往BuildConfig.java里面添加一个叫SERVICE_URL的字段,这里的用途是动态改变接口路径
                buildConfigField "String", "SERVICE_URL", GWTConfig.serviceUrlDevelop
                //往BuildConfig.java里面添加一个叫BAIDU_PUSH的字段,这里的用途是动态改变百度推送的key
                buildConfigField "String", "BAIDU_PUSH", GWTConfig.baiDuPushKeyDevelop
                //这个下面单独讲
                addManifestPlaceholders([BAIDU_KEY_VALUE: GWTConfig.baiDuMapKeyDevelop as String,
                                         APP_NAME:GWTConfig.labelDevelop as String])
    
            }
            GWT {
                signingConfig signingConfigs.GWT
                buildConfigField "String", "SERVICE_URL", GWTConfig.serviceUrl
                buildConfigField "String", "BAIDU_PUSH", GWTConfig.baiDuPushKey
                addManifestPlaceholders([BAIDU_KEY_VALUE: GWTConfig.baiDuMapKey as String,
                                         APP_NAME: GWTConfig.label as String])
            }
        }
    

    addManifestPlaceholders,这个属性看属性名可以了解的差不多,意思就是往AndroidManifest.xml填加一个它可以用的属性
    语法是:

    addManifestPlaceholders([
        BAIDU_KEY_VALUE: GWTConfig.baiDuMapKey as String,
        APP_NAME: GWTConfig.label as String
    ])
    

    这里的BAIDU_KEY_VALUE是我配置在AndroidManifest里面的百度地图key,以下是AndroidManifest的代码:

    <meta-data
                android:name="com.baidu.lbsapi.API_KEY"
                android:value="${BAIDU_KEY_VALUE}"  />
    

    这里用${BAIDU_KEY_VALUE}就可以引用了。

    这里的APP_NAME是我配置在AndroidManifest里面的程序名称,免得自己分不清楚,到时候操作了正式环境的数据给我九条命也不够,以下是AndroidManifest的代码:

    <application
            android:name="com.xxx.xxx.App"
            android:allowBackup="true"
            android:icon="@mipmap/app_icon"
            android:label="${APP_NAME}"
            android:supportsRtl="true"
            tools:replace="android:label"
            android:theme="@style/MyAppTheme">
    </application>
    

    老样子,用${APP_NAME}就可以引用了。

    这里我先停止下,有些人这时候可能在吐槽我怎么知道我打包的时候它到底会走哪个,你讲了半天废话,过来看我不打死你。

    大哥冷静啊。至少让我说完好不好!!!用Androidstudio的朋友们听好了(额,其他的我就管不到了)。

    打开你的AS,左上角状态栏顺数第三个有个叫View的,点开它,选择Tool Windows,选择Build Variants,我这里是这样的:

    Buidle.png

    坑~~~~~~~

    1.整个gradle请按照顺序来

    apply plugin: 'com.android.application'
    //apply plugin: 'android-apt'
    
    def androidConfig = rootProject.ext.android
    def GWTConfig = rootProject.ext.config
    
    android {
        // 编译SDK的版本
        compileSdkVersion androidConfig.compileSdkVersion
        // build tools的版本
        buildToolsVersion androidConfig.buildToolsVersion
    
        signingConfigs {
            
        }
    
        defaultConfig {
        }
    
        productFlavors {
        }
    
        buildTypes {
        }
    }
    
    dependencies {
    
    }
    
    

    因为这个语法是按照顺序来的,所以别写错位置了,否则容易报错,你们也可以按照我上面找Build Variants的方式把Gradle Console打开,看看具体执行。

    现在知道了吧,要执行哪个,选择,直接run就好啦。

    今天先讲到这里,大家去试试吧。

    相关文章

      网友评论

          本文标题:Android项目gradle本地配置(二)

          本文链接:https://www.haomeiwen.com/subject/mislpttx.html