国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android多渠道打包總結(推薦)

2019-10-21 21:37:51
字體:
來源:轉載
供稿:網友

多渠道打包一般應用于向不同應用市場提交app后用來統計不同渠道下載量等一些信息。一般集成友盟sdk(同類型的sdk還有 諸葛io,量江湖等sdk),不同sdk集成方式大同小異,可去各自官網查看詳細文檔。本文以友盟sdk為例。 
渠道:各種應用市場比如 華為應用市場,小米應用市場, 積分墻(花錢的推廣渠道)等。

一,android自帶gradle打包

首先集成友盟sdk,集成方式參照友盟sdk集成,在項目的build.gradle文件中加入以下代碼

  productFlavors {    yingyongbao {}    oppo {}  }  productFlavors.all {    flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]  }

修改生成的apk名字

  applicationVariants.all{ variant->    variant.outputs.each { output->      def oldFile = output.outputFile      if(variant.buildType.name.equals('release')){        def releaseApkName = ''+variant.productFlavors[0].name +"-"+defaultConfig.versionName+ '.apk'        output.outputFile = new File(oldFile.parent, releaseApkName)      }    }  }

AndroidManifest.xml中加入友盟的集成代碼以及權限

  <meta-data      android:name="UMENG_APPKEY"      android:value="Your key" />    <!-- <meta-data android:value="faqiao" android:name="UMENG_CHANNEL"/> -->    <meta-data      android:name="UMENG_CHANNEL"      android:value="${UMENG_CHANNEL_VALUE}" /> //這里改成對應build.gradle中的 productFlavors.all 對應的字符串

然后選擇你要打包的渠道就 可以了 

Android,多渠道,打包 ->

Android,多渠道,打包

缺點:如果渠道過多這種打包方式很費時間20個渠道包差不多要40分鐘的時間。

二 美團walle(瓦力)打包

一些大廠的渠道會多到驚人,美團會有900+的渠道要是按上面的打包方式2*900肯定是不行的。美團技術大牛們也在一直研究快速多渠道打包方法。 

在這介紹美團最新的walle打包,之前美團還有一個打包方式是通過python腳本修改apk(apk也是一個壓縮包)中的一個配置文件的名稱,配置文件名稱也就是渠道名稱從而打不不同的包,這種速度很快,但是從android7.0以后android加入了APK Signature Scheme v2打包方式,因為這種打包方式改變的包里面的內容所以apk在7.0以后的系統中安裝會提示安裝失敗。

在此推薦美團walle打包,此種方式是不通過外部修改配置文件的方式打包具體打包細節可參考美團walle打包 

集成方式 

首先build.gradle中

apply plugin: 'walle'  walle {    // 指定渠道包的輸出路徑//    apkOutputFolder = new File("${project.buildDir}/outputs/channels");    apkOutputFolder = new File("D:/Android/outputs/user/channels");    // 定制渠道包的APK的文件名稱//    apkFileNameFormat = '${appName}-${packageName}-${channel}-${buildType}-v${versionName}-${versionCode}-${buildTime}.apk';    apkFileNameFormat = 'app-${channel}-v${versionName}.apk';    // 渠道配置文件    channelFile = new File("${project.getProjectDir()}/channel")  }dependencies { compile 'com.meituan.android.walle:library:1.1.6'//美團多渠道打包}

這里的 channelFile是一個channel(渠道的一個配置文件)放在該工程的對應的目錄下 

apkOutputFolder 是apk包生成的位置,可更改 

Android,多渠道,打包

該文件用editplus文件編輯器打開格式如下: 

Android,多渠道,打包

然后在 工程的 build.gradle中加入

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

這種打包方式不是更改AndroidManifest的方式,所以先把AndroidManifest中的配置友盟渠道的代碼注釋掉:

 <!--<meta-data-->      <!--android:name="UMENG_APPKEY"-->      <!--android:value="your key" />-->    <!--<!– <meta-data android:value="faqiao" android:name="UMENG_CHANNEL"/> –>-->    <!--<meta-data-->      <!--android:name="UMENG_CHANNEL"-->      <!--android:value="channel" />-->

通過調用walle的方法獲取到的channel的名稱,所以需要在app初始化的 BaseApplication中初始化友盟的channel配置信息。

 private void initUmeng(){    String appkey = "your appkey";    String channelId = WalleChannelReader.getChannel(this.getApplicationContext());    //初始化友盟配置信息 通過代碼方式配置友盟的渠道信息     MobclickAgent.UMAnalyticsConfig config =        new MobclickAgent.UMAnalyticsConfig(this, appkey, channelId);   }

配置好了那么就開始打包了,在as自帶的命令輸入框輸入打包命令,等兩分鐘左右所有的渠道包就打完了! 

Android,多渠道,打包

出現BUILD SUCCESSFUL 就說明打包成功了 

Android,多渠道,打包 
常用的walle打包命令 

//生成所有渠道包 gradlew clean assembleReleaseChannels // 生成單個渠道包: gradlew clean assembleReleaseChannels -PchannelList=meituan//生成多個渠道包: gradlew clean assembleReleaseChannels -PchannelList=meituan,dianping

總結

如果沒有渠道的限制一般用as自帶的gradle打包就可以,如果渠道過多推薦使用walle打包。文中介紹的美團的python打包方式現在還有一些開發者在用,因為那種方法在構建基礎apk包的時候 不選用v2打包方式是沒有問題的,但是我認為v2的簽名打包方式更符合現在的趨勢吧,所以推薦是用美團的walle打包方式。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和平县| 丰台区| 敦煌市| 鸡东县| 峨山| 南雄市| 淮南市| 霍州市| SHOW| 蒲城县| 安国市| 灵宝市| 抚顺县| 理塘县| 游戏| 墨江| 台南县| 芮城县| 西丰县| 本溪市| 剑河县| 龙口市| 商河县| 寿阳县| 惠来县| 华池县| 根河市| 宝丰县| 河池市| 临武县| 富顺县| 济源市| 荔浦县| 诸城市| 北宁市| 新郑市| 阿坝县| 阿克陶县| 沐川县| 疏勒县| 花莲县|