多渠道打包

来源:互联网 发布:matlab 最优化算法 书 编辑:程序博客网 时间:2024/06/10 17:54

友盟多渠道打包
添加依赖:

compile 'com.umeng.analytics:analytics:latest.integration'

添加权限和友盟appkey:

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />        <meta-data            android:name="UMENG_APPKEY"            android:value="57f894e6e0f55acf8d00002c" />//填写你的appkey        <meta-data            android:name="UMENG_CHANNEL"            android:value="${UMENG_CHANNEL_VALUE}" />//使用占位符,方便多渠道打包
//生成签名文件    signingConfigs {        release {            keyAlias 'leon'            keyPassword '123456'            storeFile file('../storekeys/common.jks')            storePassword '123456'        }        debug {        }    }     defaultConfig {        applicationId "com.example.leon.autocompletetext"        minSdkVersion 15        targetSdkVersion 22        versionCode 1        versionName "1.0"        //突破应用方法数65535的一个限制        multiDexEnabled true        //占位符        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]    }     buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            //添加这一行代码            signingConfig signingConfigs.release        }    }

三种打包方式:

第一种:比较麻烦

    productFlavors {        xiaomi {            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]        }        wandoujia {            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]        }    }

第二种:最常用

    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            signingConfig signingConfigs.release            //指定我们release包的输出文件名就是我们的渠道名称            applicationVariants.all{                variant -> variant.outputs.each{                    output -> def outFile = output.outputFile                        if(outFile != null && outFile.name.endsWith(".apk")){                            def fileName = "${variant.productFlavors[0].name}"+".apk"                            output.outputFile = new File(outFile.parent, fileName);                        }                }            }        }    }    productFlavors {        xiaomi {//里面什么都不用写        }        wandoujia {}        baidu {}        c360 {}        uc {}        yingyongbao {}        huawei {}        sangxing {}        oppo {}        vivo {}        anzhi {}        meizu {}        ppzhushou {}    }    productFlavors.all{        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]    }

第三种:可同时安装多个测试包
与第二种代码区别,主要是在productFlavors{}里面,
注意:使用时,必须将strings.xml的app_name注释掉,否则会报错

    productFlavors {        okhttp {            //在applicationID后面添加后缀,即打包后的名称            applicationIdSuffix "okhttp"            resValue "string", "app_name", "okhttp"        }        jpush {            applicationIdSuffix "jpush"            resValue "string", "app_name", "jpush"        }    }

windows下打包命令:

gradlew assembleRelease
0 0
原创粉丝点击