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

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
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值