安卓多渠道打包的搭建

前言

最近学习了多渠道打包,此博客用以记录学习的内容
多渠道打包,渠道可以理解为应用市场,多渠道打包就是生成支持各种应用市场的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
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值