美文网首页
gradle多渠道打包

gradle多渠道打包

作者: pal_xie | 来源:发表于2017-08-08 14:23 被阅读20次

前言:已经有一段时间没有做过app开发, 今天重拾了Android Studio多渠道打包的流程.Android 多渠道打包一般是用来配合运营进行数据统计的, 大部分运营会选择友盟统计来统计app在不同应用商店下载量和激活等情况,今天就重新梳理一下多渠道打包流程.

注: 本文只是本人学习, 还未投入生产使用.

  1. 友盟注册应用
    第一步先去友盟注册我们的应用http://mobile.umeng.com, 这个步骤就不细讲, 按流程来就好, 注册应用主要是为了分配一个应用的AppKey, 友盟就是通过这个Key来进行应用的统计的.

  2. 导入友盟sdk
    一般我习惯使用Gradle依赖来添加, 在mudule的build文件加入

dependencies {
        compile'com.umeng.analytics:analytics:latest.integration'}

无法集成时,在project的build文件中加入

allprojects {
        repositories {
                mavenCentral()
        }
}

3.添加权限
在manifest中加入权限

<manifest……>
<uses-sdk android:minSdkVersion="8"></uses-sdk>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application ……>
……
<activity ……/>
<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/>
<meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>
</application>    
</manifest>

注意: 最后要把AppKey换成你申请的Key
Channel Id 先用一个${UMENG_CHANNEL_VALUE}占位, 后面在gradle动态替换
4.初始化
在Application中初始化友盟
MobclickAgent.setDebugMode(true);
MobclickAgent.openActivityDurationTrack(false);

  1. mudule 的 gralde.build文件
android {
    compileSdkVersion 25
    buildToolsVersion '26.0.0'
    defaultConfig {
        applicationId "com.halove.business"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"

        // 1.第一步
        manifestPlaceholders = [UMENG_CHANNEL_VALUE: "imooc"]
    }

    signingConfigs {
        debug {

        }

        // 2.把.jks签名文件拷到同级目录下
        release {
            storeFile file("business.jks")
            storePassword "xie7561331"
            keyAlias "test"
            keyPassword "test123456"
        }
    }


    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            //生成签名包
            signingConfig signingConfigs.release

            //3.指定我们release包的输出文件名就是我们的渠道名字,去掉打出来的包的前缀"app"
            applicationVariants.all { variant ->
                variant.outputs.each { output ->
                    def outputFile = output.outputFile
                    if (outputFile != null && outputFile.name.endsWith(".apk")) {

                        def fileName = "${variant.productFlavors[0].name}" + ".apk"
                        output.outputFile = new File(outputFile.parent, fileName);
                    }
                }
            }
        }
    }


    //4. 添加渠道
    productFlavors {
        imooc {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "imooc"]
        }

        googleplayer {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "googleplayer"]
        }

        //有各种新的渠道安装这种写法就可以添加了
        baidu {
            manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
        }

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

    //使AS知道.so文件的位置
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

  1. 生成签名包
    在Terminal中输入命令
./gradlew assembRelease      // 打出所有release 包
./gradlew assembDebug         // 打出Debug包
./gradlew assembBaiduRelease // 只打baidu的release包

相关文章

网友评论

      本文标题:gradle多渠道打包

      本文链接:https://www.haomeiwen.com/subject/xdptrxtx.html