1. 程式人生 > >android-------- 多渠道打包(借助友盟移動統計分析)

android-------- 多渠道打包(借助友盟移動統計分析)

each https get 限制 adl .cn 是我 tle mina

好久沒有發博客了,原因是換工作了,今天端午假期,所以來發一篇博客,

多渠道打包,借助友盟移動統計分析,希望對各位有所幫助

多渠道打包的理解:

渠道包就是要在安裝包中添加渠道信息,也就是channel,對應不同的渠道,例如:小米市場、豌豆莢、應用寶市場等

為什麽要提供多渠道包?

我們要在安裝包中添加不同的標識,應用在請求網絡的時候攜帶渠道信息,方便後臺做運營統計(這就是添加渠道信息的用處)。

實現多渠道打包的原理

一般來講,這個渠道的標識會放在AndroidManifest.xml的Application的一個Metadata中。然後就可以在java中通過API獲取對應的數據了。

進入主題

註冊友盟,並且添加新應用,獲得AppKey

技術分享圖片

引入依賴

 compile ‘com.umeng.sdk:common:latest.integration‘

AndroidManifest.xml 添加appkey 和渠道占位符

<!--友盟統計相關 meta-data-->
        <meta-data
            android:value="5b2497a6f29d985d850001b3"
            android:name="UMENG_APPKEY"/><!--友盟 appkey-->
        
        <
meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/><!--渠道號-->

在build.gradle中去動態的替換掉我們的占位符的value即可

defaultConfig {
        applicationId "com.zhangqie.channel"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName 
"1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true //突破應用方法數65535的一個限制 manifestPlaceholders = [UMENG_CHANNEL_VALUE:"name"] }

簽名文件生成 可以看我的博客Android Studio apk打包,keystore.jks文件生成,根據keystore密鑰獲取SHA1安全碼

簽名配置

signingConfigs {
        debug {}
        //release包添加簽名文件配置
        release{
            storeFile file("../channle.jks")
            storePassword "123456"
            keyAlias "channle"
            keyPassword "123456"
        }
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
            signingConfig signingConfigs.release
        }
    }

渠道指定兩種方式

  productFlavors{
        xiaomi{
            //manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
        }
        wandoujia{
            //manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
        }

    }

  //2 productFlavors.all{ flavor
-> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] }

把前面的註釋取消, 第2處下面代碼刪除就是第二種方式

之後再控制臺 Terminal

輸入 gradlew assembleRelease 執行打包(註意: Mac的要這樣添加 ./gradlew assembleRelease

當然 gradlew assembleDebug 這是debug的

也可以指定打包 gradlew assembleWandoujiaRelease豌豆莢的

執行打包

技術分享圖片

我弄時遇到一個坑

技術分享圖片

原因是我的 位置順序放錯誤了

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
            signingConfig signingConfigs.release
         
        }
    }
 signingConfigs {
        debug {}
        //release包添加簽名文件配置
        release{
            storeFile file("../channle.jks")
            storePassword "123456"
            keyAlias "channle"
            keyPassword "123456"
        }
    }

所以要註意,

打包完成

技術分享圖片

生成apk包了

技術分享圖片

我們可以改變apk輸出的名稱

buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
            signingConfig signingConfigs.release

            //指定我們release包的輸出文件名 就是我們的渠道名字
            applicationVariants.all{ variant ->
                variant.outputs.each { output->
                    def outFile = output.outputFile
                    if (outFile != null && outFile.name.endsWith(".apk")){
                        def fileName = "${variant.productFlavors[0].name}"+".apk"
                        output.outputFile = new File(outFile.parent,fileName);
                    }

                }

            }

        }
    }

輸入 gradlew assembleRelease 執行打包

技術分享圖片

名稱已改變,根據自己的需要設置,

這樣我們多渠道打包就完成了

android-------- 多渠道打包(借助友盟移動統計分析)