Android-友盟-多渠道打包-移動統(tǒng)計

前言

工作隨筆,方便記起

1.集成友盟移動統(tǒng)計SDK

友盟SDK下載

2.AndroidManifest文件中引入友盟的APPKEY(記得添加相應(yīng)權(quán)限)
<!-- 友盟APPKEY -->
  <meta-data
        android:name="UMENG_APPKEY"
        android:value="00000000000000000000000" />
3.AndroidManifest文件中設(shè)置渠道號
  <!-- 渠道號 -->
  <meta-data
          android:name="UMENG_CHANNEL"
          android:value="${UMENG_CHANNEL_VALUE}" />
4.在工程Module的build.gradle文件中
apply plugin: 'com.android.application'

android {
    compileSdkVersion COMPILE_SDK_VERSION
    buildToolsVersion BUILD_TOOLS_VERSION

    defaultConfig {
        applicationId "com.sir.app.test"
        minSdkVersion MIN_SDK_VERSION
        targetSdkVersion TARGET_SDK_VERSION
        versionCode 0
        versionName "1.0.0"
}

//添加簽名文件配置(將signingConfigs{}放到了buildType{}的后面,導(dǎo)致編譯的時候無法找到)
signingConfigs {
    debug {
        try {
            storeFile file("D:\\test.jks")
            storePassword STORE_PASSWORD
            keyAlias KEY_ALIAS
            keyPassword KEY_PASSWORD
        } catch (ex) {
            throw new InvalidUserDataException("You should define KEYSTORE_PASSWORD and KEY_PASSWORD in gradle.properties.")
        }
    }
    release {
        try {
            v2SigningEnabled false
            storeFile file("D:\\test.jks")
            storePassword STORE_PASSWORD
            keyAlias KEY_ALIAS
            keyPassword KEY_PASSWORD
        } catch (ex) {
            throw new InvalidUserDataException("You should define KEYSTORE_PASSWORD and KEY_PASSWORD in gradle.properties.")
        }
    }
}

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

        //指定release APK名稱
        applicationVariants.all { variant ->
            variant.outputs.all {
                    // 輸出apk名稱為 test_1.0_vivo.apk
                    def fileName = "test_${defaultConfig.versionName}_${variant.productFlavors[0].name}.apk"
                    outputFileName = fileName
                }
            }
        }
        debug {
            minifyEnabled false
            signingConfig signingConfigs.debug
        }
    }
    //指定渠道
    productFlavors {
        vivo {}
        oppo {}
        huawei {}
        xiaomi {}
        chuizi {}
        wandoujia {}
        yingyongbao {}
    }
    //通過腳本獲取所有渠道
    //在Terminal控制臺輸入gradlew assembleRelease開始打包
    //包生成在build-->outputs-->apk文件夾
    productFlavors.all {
        //遍歷替換所有渠道
        flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
    }

    //Terminal窗口輸入
    //打包wandoujia渠道的release版本,執(zhí)行如下命令
    //    gradlew assembleWandoujiaRelease
    //打包wandoujia渠道的debug版本,執(zhí)行如下命令
    //    gradlew assembleWandoujiaDebug
    // 只打wandoujia渠道版會生成wandoujia渠道的Release和Debug版本
    //    gradlew assembleWandoujia
    //打全部Release版本
    //    gradlew assembleRelease
}
5.執(zhí)行打包相關(guān)命令
2.jpg
6.APK生成位置
1.jpg
7.初始化友盟SDK
public class MyApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        //獲取渠道號
        String channelName = AnalyticsConfig.getChannel(this);
 
      /**
       * 初始化common庫
       * 參數(shù)1:上下文,必須的參數(shù),不能為空
       * 參數(shù)2:友盟 app key
       * 參數(shù)3:友盟 channel 渠道號
       * 參數(shù)4:設(shè)備類型,必須參數(shù),傳參數(shù)為UMConfigure.DEVICE_TYPE_PHONE則表示手機(jī);
       * 傳參數(shù)為UMConfigure.DEVICE_TYPE_BOX則表示盒子;默認(rèn)為手機(jī)
       * 參數(shù)5:Push推送業(yè)務(wù)的secret,需要集成Push功能時必須傳入Push的secret,否則傳空
       */
        UMConfigure.init(this,"000000000000000",channelName,UMConfigure.DEVICE_TYPE_PHONE,"");
    }
}
8.使用友盟移動統(tǒng)計

即啟動數(shù)據(jù)的統(tǒng)計(包括新增用戶、活躍用戶、啟動次數(shù)、使用時長等基本數(shù)據(jù))

需要在BaseActivity的onResume方法中調(diào)用 MobclickAgent.onResume(Context),
onPause方法中調(diào)用 MobclickAgent.onPause(Context),如下:

@Override
protected void onResume() {
    super.onResume();
    //Session啟動、App使用時長等基礎(chǔ)數(shù)據(jù)統(tǒng)計
    MobclickAgent.onResume(this);
}

@Override
protected void onPause() {
    super.onPause();
    MobclickAgent.onPause(this);
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容