亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2018年10月12日 09:30:50   作者:墨龍龍龍  
多渠道打包一般應(yīng)用于向不同應(yīng)用市場提交app后用來統(tǒng)計不同渠道下載量等一些信息,這篇文章主要介紹了Android多渠道打包總結(jié),非常具有實用價值,需要的朋友可以參考下

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

一,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中加入友盟的集成代碼以及權(quán)限

  <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}" /> //這里改成對應(yīng)build.gradle中的 productFlavors.all 對應(yīng)的字符串

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

->

 

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

二 美團walle(瓦力)打包

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

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

在此推薦美團walle打包,此種方式是不通過外部修改配置文件的方式打包具體打包細節(jié)可參考美團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(渠道的一個配置文件)放在該工程的對應(yīng)的目錄下

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

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

 

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

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

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

 <!--<meta-data-->
      <!--android:name="UMENG_APPKEY"-->
      <!--android:value="your key" />-->
    <!--&lt;!&ndash; <meta-data android:value="faqiao" android:name="UMENG_CHANNEL"/> &ndash;&gt;-->
    <!--<meta-data-->
      <!--android:name="UMENG_CHANNEL"-->
      <!--android:value="channel" />-->

通過調(diào)用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自帶的命令輸入框輸入打包命令,等兩分鐘左右所有的渠道包就打完了!

出現(xiàn)BUILD SUCCESSFUL 就說明打包成功了


常用的walle打包命令

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

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

總結(jié)

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

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Convert WebP to PNG using java

    Convert WebP to PNG using java

    本文主要介紹Convert WebP to PNG using java,這里對 WebP 做了詳細說明,并講解Linux 環(huán)境下WebP 轉(zhuǎn)png格式的示例,有興趣的小伙伴可以參考下
    2016-08-08
  • 記錄Android studio JNI開發(fā)的三種方式(推薦)

    記錄Android studio JNI開發(fā)的三種方式(推薦)

    JNI (Java Native Interface)是一套編程接口,用來實現(xiàn)Java代碼和其他語言(c、C++或匯編)進行交互。下面通過本文給大家講解Android studio JNI開發(fā)的三種方式,需要的朋友參考下吧
    2017-12-12
  • Android 布局文件Layout XML屬性

    Android 布局文件Layout XML屬性

    本文主要介紹Android Layout XML 一些屬性,在Android開發(fā)過程中布局文件大家肯定都會用到,在這里對Layout XML 進行詳解,希望能對大家有所幫助
    2016-07-07
  • Android Studio實現(xiàn)簡易登錄界面制作

    Android Studio實現(xiàn)簡易登錄界面制作

    這篇文章主要為大家詳細介紹了Android Studio實現(xiàn)簡易登錄界面制作,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Android無需權(quán)限調(diào)起系統(tǒng)相機

    Android無需權(quán)限調(diào)起系統(tǒng)相機

    在進行一些小型APP的開發(fā),或者是對拍照界面沒有自定義要求時,我們可以用調(diào)起系統(tǒng)相機的方式快速完成拍照需求
    2023-03-03
  • Android 側(cè)邊滑動關(guān)閉Activity的示例代碼

    Android 側(cè)邊滑動關(guān)閉Activity的示例代碼

    這篇文章主要介紹了Android 側(cè)邊滑動關(guān)閉Activity的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-05-05
  • Android?ViewStub使用方法學(xué)習(xí)

    Android?ViewStub使用方法學(xué)習(xí)

    這篇文章主要為大家介紹了Android?ViewStub使用方法學(xué)習(xí),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • Android 自動化測試經(jīng)驗分享 UiObejct.getFromParent()的使用方法

    Android 自動化測試經(jīng)驗分享 UiObejct.getFromParent()的使用方法

    本篇文章對Android中UiObejct.getFromParent()的使用進行了詳細的分析介紹。需要的朋友參考下
    2013-05-05
  • Android條目拖拽刪除功能實例代碼

    Android條目拖拽刪除功能實例代碼

    最近做項目遇到這樣的需求,要做條目條目拖拽刪除效果,實際效果和QQ消息刪除一樣,側(cè)滑有制定和刪除,下面通過本文給大家分享Android條目拖拽刪除功能,需要的朋友參考下吧
    2017-08-08
  • Kotlin Fragment的具體使用詳解

    Kotlin Fragment的具體使用詳解

    Fragment是Android3.0后引入的一個新的API,他出現(xiàn)的初衷是為了適應(yīng)大屏幕的平板電腦, 當然現(xiàn)在他仍然是平板APP UI設(shè)計的寵兒,而且我們普通手機開發(fā)也會加入這個Fragment, 我們可以把他看成一個小型的Activity,又稱Activity片段
    2022-10-10

最新評論