Android离线多渠道打包教程
- 前言
- 一、原生build.gradle文件配置?
- 二、模块AndroidManifest.xml
- 三、uniapp代码使用教程
- 四、打包处理
- 总结
前言
Android 需要多渠道打包的主要原因是 支持不同的设备、市场和用户需求。通过多渠道打包,可以将一个应用根据不同的目标市场、设备配置、网络环境、语言等因素生成多个定制化的 APK,从而提高应用发布的灵活性和覆盖面。
一、原生build.gradle文件配置?
plugins{alias(libs.plugins.android.application)}android{namespace'com.qnt'compileSdk35defaultConfig{applicationId"com.qnt"minSdk21targetSdk35versionCode1versionName"1.0.0"multiDexEnabledtruendk{abiFilters/*'x86',*/'armeabi-v7a','arm64-v8a'}testInstrumentationRunner"androidx.test.runner.AndroidJUnitRunner"// 定义动态的 BuildConfig 字段buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|release\""}sourceSets{main{assets.srcDirs=['src/main/assets']}}aaptOptions{additionalParameters'--auto-add-overlay'ignoreAssetsPattern"!.svn:!.git:.*:!CVS:!thumbs.db:!picasa.ini:!*.scc:*~"}signingConfigs{release{storeFilefile("../jnt.jks")storePassword"jt"keyAlias"jalias"keyPassword"jt"v1SigningEnabledtrue//兼容v1v2SigningEnabledtrue//兼容v2}}buildTypes{debug{signingConfig signingConfigs.release minifyEnabledfalseproguardFilesgetDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'}release{signingConfig signingConfigs.release minifyEnabledfalseshrinkResourcesfalseproguardFilesgetDefaultProguardFile('proguard-android-optimize.txt'),'proguard-rules.pro'}}compileOptions{sourceCompatibilityJavaVersion.VERSION_1_8 targetCompatibilityJavaVersion.VERSION_1_8}buildFeatures{buildConfig=true// Enable BuildConfig generation}flavorDimensions"default"productFlavors{APP_CHANNEL_DOU{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|1_APP_CHANNEL_DOU\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|1_APP_CHANNEL_DOU"]}APP_CHANNEL_DOU{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|1_APP_CHANNEL_DOU\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|1_APP_CHANNEL_DOU"]}APP_CHANNEL_KUAI{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|2_APP_CHANNEL_KUAI\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|2_APP_CHANNEL_KUAI"]}APP_CHANNEL_BAIDU{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|4_APP_CHANNEL_BAIDU\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|4_APP_CHANNEL_BAIDU"]}huawei{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|huawei\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|huawei"]}xiaomi{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|xiaomi\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|xiaomi"]}vivo{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|vivo\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|vivo"]}oppo{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|oppo\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|oppo"]}a360{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|360\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|360"]}YYB{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|YYB\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|YYB"]}RongYao{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|RongYao\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|RongYao"]}MeiZu{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|MeiZu\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|MeiZu"]}GDT{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|GDT\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|GDT"]}SAMSUNG{buildConfigField"String","DCLOUD_STREAMAPP_CHANNEL","\"com.qnt|db288fe7d1e89fa4|0123456789|SAMSUNG\""manifestPlaceholders=[DCLOUD_STREAMAPP_CHANNEL:"com.qnt|db288fe7d1e89fa4|0123456789|SAMSUNG"]}}}dependencies{implementationfileTree(dir:'libs',include:['*.aar','*.jar'],exclude:[])implementation libs.appcompat implementation libs.material implementation libs.activity implementation libs.constraintlayout implementation'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0'implementation'androidx.core:core:1.6.0'implementation"androidx.fragment:fragment:1.1.0"implementation'androidx.recyclerview:recyclerview:1.1.0'implementation'androidx.webkit:webkit:1.5.0'implementation'androidx.legacy:legacy-support-v4:1.0.0'implementation'com.facebook.fresco:fresco:2.5.0'implementation"com.facebook.fresco:animated-gif:2.5.0"implementation'com.alibaba:fastjson:1.2.83'implementation'com.github.bumptech.glide:glide:4.9.0'// 微信implementation'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.7.9'// 支付宝implementation'com.alipay.sdk:alipaysdk-android:15.8.11'implementation"net.lingala.zip4j:zip4j:2.11.5"implementation'com.squareup.okhttp3:okhttp:4.9.0'implementation'com.squareup.okio:okio:2.9.0'// implementation project(':uniplugin_module')implementationproject(':qnt_module')testImplementation libs.junit androidTestImplementation libs.ext.junit androidTestImplementation libs.espresso.core}二、模块AndroidManifest.xml
提示:将这块代码放到 <application> 里面
<meta-dataandroid:name="DCLOUD_STREAMAPP_CHANNEL"android:value="${DCLOUD_STREAMAPP_CHANNEL}"/>三、uniapp代码使用教程
plus.runtime.channel 获取渠道 plus.runtime.version 获取版本号 1.0.0 plus.runtime.versionCode 获取code 1 if(plus.runtime.isApplicationExist({pname:'com.tencent.mm',action:'weixin://'})){ console.log("微信应用已安装"); }else{ console.log("微信应用未安装"); } plus.runtime.appid 获取包名,需要云打包或者离线打包才能正确获取四、打包处理
提示:有以下显示说明配置成功,具体自行验证是否生效
总结
多渠道打包的核心目的是便于管理和发布不同版本的应用,减少开发的重复劳动,同时提供定制化的功能和更好的数据分析能力,帮助开发者在不同的渠道和市场中更好地推广和管理应用。