什么都不必说 Gradle--buildTypes--productFlavors

300 阅读1分钟
buildTypes {
        release {
            //配置URL
            buildConfigField "String", "URL", "\"http://xxx.com/\""
            //是否混淆
            minifyEnabled true
            //是否压缩
            zipAlignEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }

        debug {
            //配置URL
            //在代码中直接引用BuildConfig.URL即可获取对应参数值
            buildConfigField("String", "URL", "\"http://xxx/xxx/\"")
            minifyEnabled false
            zipAlignEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
 productFlavors{

    //自定义名字不过不能和上面buildType中相同,不然Gradle编译会不通过。
        TX{
            // manifestPlaceholders中写到的『str』,『package_name』不支持用大写,否则Gradle编译会不通过。
            // 这里所设置的变量可以直接使用在『AndroidManifest.xml』中,使用方式为:${package_name}
            // android:label="${package_name}"
            manifestPlaceholders = [APP_NAME:"腾讯版",APP_KEY:"2D673912328262FA81968B"]

            // 这里的参数是为了在 java 代码中使用,具体的使用方式为:context.getResources().getString(R.string.strKey);
            resValue("string" , "strKey","releaseStrValue")
        }

        //使用manifestPlaceholders的这种配置,同样适用于manifest的其他配置。比如你需要在不同渠道发布的apk里面,指定不同的启动Activity。
        // 比如在豌豆荚里面发布的,启动的Activity显示的是豌豆荚首发的界面,应用宝里面启动的是应用宝首发的界面.
        // 你就可以对你的activity的值使用${activity_name}的方式
        // 然后在productFlavors里面配置这个${activity_name}的值。
        CHANNEL{
            manifestPlaceholders = [APP_NAME:"渠道版",APP_KEY:"C9FFA09BC76F949CE3EF"]

            resValue("string" , "strKey","devStrValue")
        }

在build Variants中可以选择默认的运行版本