Android——APP多渠道打包

偏执的太偏执、 2022-06-02 01:23 399阅读 0赞

1.添加友盟统计依赖库

compile ‘com.umeng.analytics:analytics:latest.integration’

allprojects {

repositories {

mavenCentral()

}

}

2.Manifest中配置权限和Key

< uses-permission android :name= “android.permission.INTERNET” />

< 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.READ_PHONE_STATE” />

< meta-data android :value= “5a446bf3f29d987e88000061” android :name= “UMENG_APPKEY” />

< meta-data android :value= “${UMENG_CHANNEL_VALUE}“ android :name= “UMENG_CHANNEL” />

3.app build.gradle动态配置Manifest的占位符和默认值

defaultConfig {

flavorDimensions “versionCode”

… multiDexEnabled true // 突破方法数65535限制

manifestPlaceholders = [UMENG_CHANNEL_VALUE:”umeng”]

}

4.配置签名文件信息,注意:signingConfigs要在buildTypes之前

signingConfigs {

debug {}

release {

keyAlias ‘key0’

keyPassword ‘123456’

storeFile file ( ‘release.jks’ )

storePassword ‘123456’

}

buildTypes {

release {

minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard‑android.txt’), ‘proguard‑rules.pro’

signingConfig signingConfigs.release

}

}

5.添加渠道信息

productFlavors {

xiaomi{ manifestPlaceholders = [UMENG_CHANNEL_VAULE: “xiaomi”]

}

  1. wandoujia\{ manifestPlaceholders = \[UMENG\_CHANNEL\_VAULE: "wandoujia"\] \}

}

为了简单可以用脚本去替换重复代码

productFlavors.all { flavor ‑> flavor.manifestPlaceholders = [UMENG_CHANNEL_VAULE: name]

}

7.在Android studio的Terminal中使用命令gradlew assembleRelease进行打包(mac或Linux下使用./gradlew assembleRelease),会在app的build下生成对应渠道的apk包

SouthEast

8.可以配置多渠道打包输出的名字,比如打包的名字就是渠道名字

buildTypes {

release {

minifyEnabled false

proguardFiles getDefaultProguardFile ( ‘proguard-android.txt’ ), ‘proguard-rules.pro’

signingConfig signingConfigs. release

// 指定我们 release 包输出文件名就是我们渠道的名字

applicationVariants. all { variant ->

variant .outputs. each { output ->

def outputFile = outputFileName

if (outputFile != null && outputFile.name.endsWith( “.apk” )) {

def fileName = “ ${ variant .productFlavors[ 0 ].name} “ + “.apk”

outputFileName = new File (outputFile.parent, fileName);

}

}

}

}

}

Android3.0

  • 使用 all() 替换 each()
  • 使用 outputFileName 替换 output.outputFile

9.其他技巧:

①可以给不同渠道的apk赋不同的应用名

productFlavors {

xiaomi{

// manifestPlaceholders = [UMENG_CHANNEL_VALUE: “xiaomi”] resValue “string”, “app_name”, “xiaomi”

}

  1. wandoujia\{ // manifestPlaceholders = \[UMENG\_CHANNEL\_VALUE: "wandoujia"\] resValue "string", "app\_name", "wandoujia"

}

}

②给测试打不同功能点可以安装在同一个手机上的测试包

productFlavors {

// xiaomi{ manifestPlaceholders = [UMENG_CHANNEL_VALUE: “xiaomi”] // resValue “string”, “app_name”, “xiaomi”

// }

// // wandoujia{ manifestPlaceholders = [UMENG_CHANNEL_VALUE: “wandoujia”] // resValue “string”, “app_name”, “wandoujia”

// }

okhttp {

applicationIdSuffix “okhttp” resValue “string”, “app_name”, “okhttp”

}

  1. jpush \{

applicationIdSuffix “jpush” resValue “string”, “app_name”, “jpush”

}

}

发表评论

表情:
评论列表 (有 0 条评论,399人围观)

还没有评论,来说两句吧...

相关阅读

    相关 多渠道打包

    多渠道打包的本质:在APK的内部加标识 多渠道打包的本质:在APK的内部加标识 多渠道打包目的:是为真实了解我们在不同分发市场的下载量,

    相关 Android多渠道打包实践

    今天来和大家分享的内容是在AS下实现多渠道打包。关于如何打包APK的流程以及如何生成keystore或者jks文件本篇博客不会涉及。 首先,在我们要上线App的最后一步就是打

    相关 多渠道打包

    \\\多渠道打包概念 >\ 发布到不同渠道上的apk,标记不同的渠道,目的是为了统计该渠道的下载量,留存率等等数据 >\ 了解下载量 >\ 针对性的打广告

    相关 android多渠道打包

    美团多渠道打包以快出名,早有耳闻,但总觉得神龙见首不见尾,大多文章都是讲原理的东西,却始终难懂到底怎么样用,今天就以初学者的姿态一边探索,一边总结,也希望能帮住大家少走写冤枉路