android多渠道打包:umeng+美團walle+騰訊樂固

概述

在android開發時,我們需要加固以確保安全,需要多渠道進行精準客戶分析,並且需要一個平臺進行統計分析。

我現在常用的就是,騰訊樂固進行加固,美團進行多渠道打包,然後用友盟進行渠道分析。

方案

我採取的方案是
1、配置walle
2、先打包出來一個apk
3、樂固加固
4、簽名
5、walle多渠道
6、多渠道配置到umeng分析

步驟這樣的主要原因是因爲加固會把渠道包給去掉。

walle

walle ,是美團Android Signature V2 Scheme簽名下的新一代渠道包打包神器。
walle 多渠道打包的使用 https://github.com/Meituan-Dianping/walle

配置build.gradle
在位於項目的根目錄 build.gradle 文件中添加Walle Gradle插件的依賴, 如下:

buildscript {
    dependencies {
        classpath 'com.meituan.android.walle:plugin:1.1.6'
    }
}

並在當前App的 build.gradle 文件中apply這個插件,並添加上用於讀取渠道號的AAR

apply plugin: 'walle'

dependencies {
    compile 'com.meituan.android.walle:library:1.1.6'
}

配置插件

walle {
    // 指定渠道包的輸出路徑
    apkOutputFolder = new File("${project.buildDir}/outputs/channels");
    // 定製渠道包的APK的文件名稱
    apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';
    // 渠道配置文件
    channelFile = new File("${project.getProjectDir()}/channel")
}

在需要渠道等信息時可以通過下面代碼進行獲取

String channel = WalleChannelReader.getChannel(this.getApplicationContext());‘

生成渠道包 ./gradlew clean assembleReleaseChannels

簽名

採用命令行簽名,把簽名文件,apk放到一個文件夾中,命令行cd進入到該文件夾下,然後進行如下操作

驗證簽名:

jarsigner -verify -verbose -certs app.apk   

加固之後重新簽名

jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore 簽名文件名稱 -storepass 簽名密碼 簽名apk名字 簽名別名
對齊:zipalign 4 apk名字 apk新名字

walle多渠道

在這裏插入圖片描述
把walle下面的jar包放到文件夾中,channel文件中配置的是渠道信息(該步驟僅需要這兩個文件,其他文件是簽名需要)

channle.txt內容如下,根據自己的需要配置。

xiaomi # 小米
meizu
huawei
oppo
vivo
googleplay
baidu
360cn
yyb
wangzhan

命令行進入該文件夾下

cd C:\Users\Administrator\Desktop\donghaohuosign

然後打包只需要一句命令行

java -jar walle-cli-all.jar batch -f C:\Users\Administrator\Desktop\donghaohuosign\channel.txt  C:\Users\Administrator\Desktop\donghaohuosign
\donghaohuo.apk  C:\Users\Administrator\Desktop\donghaohuosignpk 

最後的一個路徑是配置apk生成位置,默認生成在目錄下,精簡可以這樣

  java -jar walle-cli-all.jar batch -f C:\Users\Administrator\Desktop\donghaohuosign\channel.txt  C:\Users\Administrator\Desktop\donghaohuosign
    \donghaohuo.apk

就可以生成渠道包了。

umeng分析配置

你的應用中已經配置上了umeng了,我就不多贅述配置過程。

如果不修改,umeng肯定不能識別到渠道包啊,因爲我們去掉了manifest中的umeng 渠道的配置和 gradle中的productFlavors 。
解決的辦法也很簡單。

只需要在初始化的時候,把第二個參數改成你獲取到的channel

  //友盟初始化
  String channel = WalleChannelReader.getChannel(this.getApplicationContext());
   Log.i("yicooll", "" + "*****************************" + channel);
  UMConfigure.init(this, "", channel, UMConfigure.DEVICE_TYPE_PHONE, "")
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章