android多渠道打包&&几个打包小技巧

来源:互联网 发布:搞笑网络段子精选 编辑:程序博客网 时间:2024/04/19 19:05

android多渠道打包


多渠道的意义

  • 更详细的统计app被下载的途径
  • 查看app在每个渠道的表现
  • 有利于app的推广

使用友盟实现多渠道打包

多渠道打包的原理

  • 为每个渠道的apk指定一个唯一的标识符
  • android中通常在Manifest.xml中为其指定
  • 也可以在代码中指定,但一般不用

使用友盟步骤

  1. 上友盟官网注册并创建新应用,获得Appkey
  2. 下载SDK并集成,推荐使用studio集成
  3. Manifest.xml中配置渠道号和Appkey
  4. 在moudle的build.gradle中编写多渠道脚本

1.集成友盟SDK

在build.gradle中添加依赖:

dependencies {   compile 'com.umeng.analytics:analytics:latest.integration'}

2.Manifest.xml中配置渠道号和Appkey,以及相关权限

<manifest……><uses-sdk android:minSdkVersion="4"></uses-sdk><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"/><application ……>    ……    <activity ……/>    <!--友盟AppKey-->    <meta-data         android:name="UMENG_APPKEY"        android:value="YOUR_APP_KEY" />    <!--渠道号-->    <!--此处使用占位符,然后在build.gradle中动态的替换它-->    <meta-data         android:name="UMENG_CHANNEL"        android:value="${UMENG_CHANNEL_VALUE}" />    </application>    </manifest>

3.在moudle的build.gradle中编写多渠道脚本

apply plugin: 'com.android.application'android {    compileSdkVersion 23    buildToolsVersion "23.0.3"    defaultConfig {        applicationId "com.shaw.testapp"        minSdkVersion 9        targetSdkVersion 23        versionCode 100        versionName "1.0.0"        multiDexEnabled true//突破应用方法数65535的限制        manifestPlaceholders = [UMENG_CHANNEL_VALUE:"umeng"]//设置默认的渠道名    }    //添加我们的签名文件配置    signingConfigs{        //为我们的release包添加签名文件配置        myConfigs {            storeFile file("key.jks")//            storePassword "shaw666"            keyAlias "shaw"            keyPassword "shaw666"        }    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            //添加我们的签名文件配置            signingConfig signingConfigs.myConfigs        }    }    //多渠道的支持    productFlavors{        xiaomi{}        wandoujia{}    }    //遍历渠道,将每个渠道的name替换到UMENG_CHANNEL_VALUE中    productFlavors.all{        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    testCompile 'junit:junit:4.12'    compile 'com.android.support:appcompat-v7:23.2.1'    //添加友盟统计库依赖    compile 'com.umeng.analytics:analytics:latest.integration'}

4.使用命令行打包

在Terminal中使用命令gradlew assembleRelease自动打出所有的渠道包
gradlew assembleDebug //所有平台的debug包
gradlew assemblewandoujiaRelease //只打wandoujia的Release包


关于打包的其他技巧

1.修改release包的输出文件名

    buildTypes {        release {            ……            applicationVariants.all{ variant ->                variant.outputs.each{ output ->                    def outFile = output.outputFile                    if (outFile != null && outFile.name.endsWith(".apk")){                        def fileName = defaultConfig.applicationId + '_v'                                      + defaultConfig.versionName + '_'                                      + variant.productFlavors[0].name + '.apk'                        output.outputFile = new File(outFile.parent, fileName);                    }                }            }        }    }

效果如下:

2.在每个渠道中的资源的变动

    //多渠道的支持    productFlavors{        xiaomi{            resValue "string", "app_name", "xiaomi_app"        }        wandoujia{            resValue "string", "app_name", "wandoujia_app"        }    }

先定义,再在代码使用,最后在打包时,将之前定义的value替换掉。(需要将之前定义的value删除,否则会报错)

3.在同一设备上同时安装多个不同功能点的app

    //多渠道的支持    productFlavors{        okhttp{            //给defaultConfig.applicationId添加后缀(不会影响程序中获取的包名)            applicationIdSuffix"okhttp"            resValue "string", "app_name", "okhttp_app"        }        jpush{            applicationIdSuffix"jpush"            resValue "string", "app_name", "jpush_app"        }    }

效果如下:

0 0
原创粉丝点击