天天看點

友盟統計+友盟多管道

開始吧:産品-》移動統計-》進入新版-》建立新應用-》擷取到appkey

一、在項目的build.gradle中添加

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/umsdk/release' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.4.0'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/umsdk/release' }
    }
}
           

二、現在在module裡添加依賴

// 下面各SDK根據宿主App是否使用相關業務按需引入。
// OAID目前為目前國内市場主流的Android Q裝置辨別,可根據需要選擇。
// 友盟統計SDK
implementation  'com.umeng.umsdk:common:9.1.0' // (必選)
implementation  'com.umeng.umsdk:game:9.1.0+G' // 遊戲統計SDK依賴(可選)
implementation  'com.umeng.umsdk:asms:1.1.3' // asms包依賴(必選)
implementation 'com.umeng.umsdk:crash:0.0.4' // native crash包依賴(必選)

implementation  'com.umeng.umsdk:oaid_lenovo:1.0.0' // (可選)
implementation  'com.umeng.umsdk:oaid_mi:1.0.0' // (可選)
implementation  'com.umeng.umsdk:oaid_oppo:1.0.4' // (可選)
implementation  'com.umeng.umsdk:oaid_vivo:1.0.0.1' // (可選)
           

三、清單檔案中的權限

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
           

四、清單檔案中的權限

<meta-data
        android:name="UMENG_APPKEY"
        android:value="你申請的友盟appkey" />
    <!--value的值填寫管道名稱,例如yingyongbao。這裡設定動态管道名稱變量-->
    <meta-data
        android:name="UMENG_CHANNEL"
        android:value="${UMENG_CHANNEL_VALUE}" />
           

五、初始化,在application的oncreate()方法裡添加

//第一種 UMConfigure.init(this, "5f31f196b4b0*********", "ysj", UMConfigure.DEVICE_TYPE_PHONE, "");
/** 
* 注意:如果您已經在AndroidManifest.xml中配置過appkey和channel值,可以調用此版本初始化函數。
*/
//第二種
UMConfigure.init(Context context, int deviceType, String pushSecret);
           

六、混淆配置

-keep class com.umeng.** {*;}

-keep class com.uc.** {*;}

-keepclassmembers class * {
   public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
}
-keep class com.zui.** {*;}
-keep class com.miui.** {*;}
-keep class com.heytap.** {*;}
-keep class a.** {*;}
-keep class com.vivo.** {*;}
           

七、配置管道(與defaultConfig、signingConfigs、并列關系)

記得配置簽名資訊signingConfigs

/配置管道/

flavorDimensions "default"
productFlavors{
    loveeat {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "loveeat"]
    }
    yingyongbao {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "yingyongbao"]
    }
    wandoujia {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
    }
    huawei {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "huawei"]
    }
    xiaomi {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"]
    }
    c360 {
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "c360 "]
    }
}

/*自定義打包apk名稱*/
android.applicationVariants.all { variant ->
    variant.outputs.all { output ->
        variant.productFlavors.each { flavor ->
            def project = "acf"
            def separator = "_"
            def buildType = variant.variantData.variantConfiguration.buildType.name
            def versionName = variant.versionName
            def versionCode = variant.versionCode
            def date = new Date()
            def formattedDate = date.format('yyyyMMdd')

            def apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + ".apk"
            if (buildType == "release") {
                apkName = project + separator + "v" + versionName + separator + versionCode + separator + buildType + separator + flavor.name + separator + formattedDate + ".apk"
            }

            output.outputFileName = apkName
        }
    }
}
           

八、 執行打包指令

隻需在Android Studio的指令行Terminal下輸入以下指令即可:

gradlew.bat assembleRelease