安卓多渠道打包的搭建

来源:互联网 发布:域名的作用 编辑:程序博客网 时间:2024/06/07 01:04

前言

最近学习了多渠道打包,此博客用以记录学习的内容
多渠道打包,渠道可以理解为应用市场,多渠道打包就是生成支持各种应用市场的apk文件,因为安卓的应用市场很多,所以这个知识也是很重要的
··············································
开始,我们使用友盟的多渠道打包sdk
首先把步骤列出

获取appkey

那么第一步
百度搜索友盟,注册账号
找到U-APP应用统计,点击进入
这里写图片描述
进入后,点击立即使用
这里写图片描述
进入后,左下角会有一个添加新应用
这里写图片描述
打开android stuido新建一个安卓项目
刚好今天新建了一个broadcastreceiver demo就将就着用吧
然后点击添加新应用
下面是我填写好后的信息
这里写图片描述
点击提交,获取appkey
这里写图片描述
这个时候完成了我们的第一步
获取到了我们的应用对应的appkey

添加友盟的sdk

接下来添加友盟的统计库
android studio可以直接使用代码添加,eclipse的可以去友盟官网看一下导入方法,都是很简单的
在app的build的配置文件中dependencies下添加

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

如果添加失败了
就在project的build中添加

allprojects {    repositories {            mavenCentral()         }}

这是添加maven库,默认的只有jcenter库,有的时候可能会有一些奇怪的原因导致你在jcenter库中没有下载下来,

配置manifest文件

首先添加权限
添加在applica标签的外面

<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"/>

接下来添加友盟对应的meta-data

<meta-data android:value="YOUR_APP_KEY" android:name="UMENG_APPKEY"/><meta-data android:value="Channel ID" android:name="UMENG_CHANNEL"/>

添加在application标签的里面
对齐进行修改

<meta-data            android:name="YOUR_APP_KEY"            android:value="58b3959875ca351577000840"/>        <meta-data            android:name="UMENG_CHANNEL"            android:value="${UMENG_CHANNEL_NAME}"/>

因为我们添加的是多渠道打包,所以需要动态的配置,所以这里使用占位符$,这样方便在后续的操作中进行修改

生成签名文件,并配置进项目

首先生成签名文件,需要debug包的也可以配置debug配置
点击build,在点击红色圈选中的选项
这里写图片描述

这里写图片描述
点击creat new
这里写图片描述
接下来大家自己生成俩个,一个的buildtype选择debug一个选择release就行了
然后得到了俩个jks文件
这里写图片描述
接下来把签名文件配置到我们的APP项目中
点击
这里写图片描述

这里写图片描述
将debug和release都配置好
进入APP的build中
会发现帮我们默认生成了很多东西
比如
···
signingConfigs {
debug {
keyAlias ‘china’
keyPassword ‘123456’
storeFile file(‘D:/work/debug.jks’)
storePassword ‘123456’
}
release {
keyAlias ‘china’
keyPassword ‘123456’
storeFile file(‘D:/work/release.jks’)
storePassword ‘123456’
}
}
···

添加打包脚本

接下来继续对app的build进行修改
修改如下,新添加的代码行我都标上了注释

apply plugin: 'com.android.application'android {    compileSdkVersion 25    buildToolsVersion "25.0.1"    defaultConfig {        applicationId "com.anlaiye.swt.broadcastreceiver"        minSdkVersion 14        targetSdkVersion 25        versionCode 1        versionName "1.0"        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"        multiDexEnabled true //突破应用方法数为65535的限制        manifestPlaceholders = [UMENG_CHANNEL_NAME: "UMENG"]  //为meta_data添加placeholder    }    //导入jks文件后会自动生成    signingConfigs {        debug {            keyAlias 'china'            keyPassword '123456'            storeFile file('D:/work/debug.jks')            storePassword '123456'        }        release {            keyAlias 'china'            keyPassword '123456'            storeFile file('D:/work/release.jks')            storePassword '123456'        }    }    //这里添加release,和debug的指向    buildTypes {        release {            minifyEnabled false   //这里是代码混淆,展示不需要,默认false就行            signingConfig signingConfigs.release  //添加release签名            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }        debug {            minifyEnabled false            signingConfig signingConfigs.debug  //添加debug签名            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    productFlavors {  //在这里添加你所有需要打包的渠道        xiaomi {}        //xiaomi渠道
        meizu {}         //魅族        //遍历上面填写的渠道修改为对应的name        productFlavors.all { flavor ->            flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]        }    }    //对生成的apk进行一些简单的配置    applicationVariants.all { variant ->        variant.outputs.each { output ->            def outputFile = output.outputFile            def buildType            if (variant.buildType.name.equals('release')) {                buildType = "release"            } else if (variant.buildType.name.equals('debug')) {                buildType = "debug"            }            if (outputFile != null && outputFile.name.endsWith('.apk')) {                // 输出apk名称为我们自己配置的名字+.apk                //def fileName = "Anlaiye-v${defaultConfig.versionName}-${getDate()}-${variant.productFlavors[0].name}-${buildType}.apk"                def fileName = "Sunwentao-v${defaultConfig.versionName}-${variant.productFlavors[0].name}-${buildType}.apk"                output.outputFile = new File(outputFile.parent + buildType, fileName)            }        }    }}dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    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:25.0.1'    testCompile 'junit:junit:4.12'    compile 'com.umeng.analytics:analytics:latest.integration'}

mac打包命令
./dradlew assembleRelease
windows下打包命令
gradlew assembleRelease

输入后开始打包
这里写图片描述

打包成功
在project视图下 找到build目录下面有个release
这里写图片描述
可以看到生成了xiaomi和魅族的release包
同时生成的名字也是我们自定义设置的名字
到这里基本上就都已经结束了
同时这里要说一个坑 就是signingConfigs 要放到buildtype上面,不然会报错 ,很奇怪的东西
同时360渠道的渠道包是需要下载360加固助手进行加固才能上到应用市场的
好了 祝大家打包愉快

0 0