Android多渠道打包

来源:互联网 发布:关于网络道德的论文 编辑:程序博客网 时间:2024/05/06 08:53

使用android studio进行多渠道打包

以本博客记录多渠道打包,以便以后快速复习与使用:

博主采用的友盟统计,大家可以到官方文档上去学习,很齐全,很简单。

  • 1. 添加友盟库的依赖
  • 2. 在清单文件中去声明我们的appkey,以及我们的渠道的占位符
  • 3. 在我们的应用中的build.gradle中去动态的替换我们的占位符的value即可

在友盟注册一个应用,获取到key,然后在清单文件进行配置,其中5858d54065b6d66de000008f即为你申请的key, ${UMENG_CHANNEL_VALUE}为占位符,需要在build.gradle中配置

<meta-data android:value="5858d54065b6d66de000008f" android:name="UMENG_APPKEY"/>    <meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>

配置build.gradle中内容

首先我们配置defaultConfig

defaultConfig {    applicationId "com.lingchen.multichannelapkdemo"    minSdkVersion 15    targetSdkVersion 25    versionCode 1    versionName "1.0"    multiDexEnabled true// 突破默认的方法数    manifestPlaceholders = [UMENG_CHANNEL_VALUE: "umeng"]// 默认为友盟渠道}

签名文件的配置,有debug和release签名

signingConfigs {    debug {        keyAlias 'androiddebugkey'        keyPassword 'android'        storeFile file('../mydeug.keystore')        storePassword 'android'    }    release {        storeFile file("../umeng.jks")        storePassword "umengu"        keyAlias "umeng"        keyPassword "umengu"    }}

使用签名

buildTypes {    debug {        minifyEnabled false// 是否使用混淆        signingConfig signingConfigs.debug    }    release {        minifyEnabled false        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        signingConfig signingConfigs.release    }}

配置多个渠道

productFlavors {    xiaomi {        resValue "string", "app_name", "小米"// 替换应用的名字        applicationId "com.yitong.xiaomi"   //这里可以配置不同的包名    }    wandoujia {        resValue "string", "app_name", "豌豆荚"    }    okhttp {        applicationIdSuffix "okhttp"// 给包名添加一个后缀        resValue "string", "app_name", "okhttp"    }}productFlavors.all {    flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]// 遍历所有渠道,替换UMENG_CHANNEL_VALUE为渠道名}

在生成的apk文件,修改下命名

applicationVariants.all { variant ->    variant.outputs.each { output ->// 进行遍历        def outputFile = output.outputFile        if (outputFile != null && outputFile.name.endsWith(".apk")) {            def fileName            if(variant.buildType.name.equals('debug')){// 判断是否是debug版本                fileName = "debug-${variant.productFlavors[0].name}" + ".apk";// 重命名为:debug-渠道名.apk            } else{                def timeStamp = new Date().format("MMddHH", TimeZone.getTimeZone("GMT+8"));// 获取当前时间,并自定显示样式                fileName = "${variant.productFlavors[0].name}" + "-${timeStamp}" + ${defaultConfig.versionName} + ".apk";// 重命名为: 渠道名 + 时间戳 + 版本号 + ".apk"            }            output.outputFile = new File(outputFile.parent, fileName);        }    }}

使用友盟不要完了依赖以及权限的添加

dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])compile 'com.android.support:appcompat-v7:25.0.1'compile 'com.umeng.analytics:analytics:latest.integration'}<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.READ_PHONE_STATE"/><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/><uses-permission android:name="android.permission.INTERNET"/>
0 0
原创粉丝点击