您的位置:首页 > 移动开发 > Android开发

浅谈Android多渠道打包

2017-01-09 10:46 323 查看


注:如转载,请标明出处!

多渠道简介

        渠道是国内Android平台特有的名词,由于google play无法使用,因此出现了众多的市场。所以我们可以理解为一个渠道即代表一个应用市场。所以当我们研发的app应用需要提供多种下载途径,就会用到多渠道。例如:官网下载,豌豆荚下载,应用宝下载等。通过多渠道,可以更详尽的统计app被下载的途径,可以查看app在每个渠道上的表现,可以更有利于我们的app推广。

多渠道打包的实现

        在多渠道打包中,本人习惯用友盟来进行统计等业务需求。那么下面让我来详细的讲解一下使用友盟的步骤:
        1.下载sdk并集成。

        2.在manifest.xml中配置渠道号和Appkey。

        3.在应用module中的build.gradle中编写多渠道脚本。(大家如果有需求的话,可以去学习一个这个脚本,本文中只对需求需要的脚本语言进行编写)

首先让我们去友盟官网获取唯一的appkay

然后在你项目中app下的build.gradle中dependencies中添加以下代码进行sdk集成:

compile 'com.umeng.analytics:analytics:latest.integration'


下面我们需要对manifest.xml进行编写了:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.liuzhuang.myipctext">

//切记要添加权限
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
//value为之前得到的唯一appkey
<meta-data android:value="5850a2829f06fd5b05001ba3" android:name="UMENG_APPKEY"/>
//value为Channel ID(渠道号),此时让我们用占位符来代替
<meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/>
</application>

</manifest>


下面进行最重要也是最复杂的一步,就是在build.gradle中编写主要的脚本了:

android {
compileSdkVersion 24
buildToolsVersion "25.0.0"
defaultConfig {
applicationId "com.example.liuzhuang.myipctext"
minSdkVersion 18
targetSdkVersion 24
versionCode 1
versionName "1.0"
multiDexEnabled true  //突破应用方法数65535的一个限制
manifestPlaceholders = [UMENG_CHANNEL_VALUE:"umeng"]//添加渠道,默认是友盟渠道

}
productFlavors{
//可以直接如注释掉的一样写,但是为了方便,我定义了productFlavors.all来循环,只需要在productFlavors中写:渠道名{}就可以了。
xiaomi{
//            manifestPlaceholders=[UMENG_CHANNEL_VALUE: "xiaomi"]
}
wandoujia{
//            manifestPlaceholders=[UMENG_CHANNEL_VALUE: "wandoujia"]
}
}
productFlavors.all{
flavor -> flavor.manifestPlaceholders=[UMENG_CHANNEL_VALUE: name]
}

//添加签名文件位置
signingConfigs {
debug {}
//这里是签名的信息,这里就不多介绍了
release {
storeFile file("appkey.jks")
storePassword "123456"
keyAlias "nihao"
keyPassword "123456"
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

//指定去执行signingConfigs的release
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);

}
}
}
}
}
}

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'com.umeng.analytics:analytics:latest.integration'
testCompile 'junit:junit:4.12'

}


到此时,基本我们的准备工作已经完成,下面就是检验成果的时候了,要实现多渠道打包的最后一步,我们还需要控制台,下面是一些打包的语句:

./gradlew assembleRelease   //去自动的打出所有渠道的包
./gradlew assemblewandoujiaRelease   //打单独指定的包


这是最基础的打包方式,如果你使用的是studio,那么它已经为你提供了一个快捷的方法

在Gradle中Tasks下的build中找到相应的语句,然后直接点击运行就可以了。是不是简单了不少呢。

总结

到这里,我们的多渠道打包就已经有完成了。当然了,多渠道打包并不仅仅这一种第三方,还有百度多渠道打包等,只是本人习惯用友盟而已,如果猿友们有别的第三方需求不明白,可以给我留言。最后谢谢审阅。希望我们共同进步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息