架构日记(五)多渠道打包配置
提示:列表可左右滑动查看。
<p><span style="color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; font-size: 16px;">AndroidManifest.xml 里设置动态渠道变量</span><br></p><pre><code><!--多渠道打包配置--><br> <meta-data<br> android:name="UMENG_APPKEY"<br> android:value="" /><br> <meta-data<br> android:name="UMENG_CHANNEL"<br> android:value="${UMENG_CHANNEL_VALUE}"/></code></pre><p><span style="color: rgb(77, 77, 77); font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; font-size: 16px;">在app:gradle中</span><br></p><pre><code>apply plugin: 'com.android.application'<br> <br> <br> <br>def getTime(){<br> return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))<br>}<br> <br>android {<br> compileSdkVersion rootProject.ext.android["compileSdkVersion"]<br> buildToolsVersion rootProject.ext.android["buildToolsVersion"]<br> <br> defaultConfig {<br> applicationId "com.example.myapplication"<br> minSdkVersion rootProject.ext.android["minSdkVersion"]<br> targetSdkVersion rootProject.ext.android["targetSdkVersion"]<br> versionCode rootProject.ext.android["versionCode"]<br> versionName rootProject.ext.android["versionName"]<br> testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"<br> /***<br> * 解决Error:All flavors must now belong to a named flavor dimension. Learn more at<br> * 多渠道打包纬度统一<br> */<br> flavorDimensions "versionCode"<br> }<br> <br> signingConfigs{<br> config {<br> keyAlias 'key0'<br> keyPassword '12205226'<br> storeFile file('/Users/mac/Desktop/mytest.jks')<br> storePassword '12205226'<br> }<br> }<br> <br> <br>// 多渠道打包配置<br> productFlavors{<br> kuan {}<br> xiaomi {}<br> qh360 {}<br> baidu {}<br> wandoujia {}<br> }<br> productFlavors.all{<br> flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]<br> }<br> <br> <br> buildTypes {<br> release {<br> minifyEnabled false<br> proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'<br> signingConfig signingConfigs.config<br> }<br> debug {<br> minifyEnabled false<br> proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'<br> signingConfig signingConfigs.config<br> applicationVariants.all { variant -><br> variant.outputs.all {<br> // 输出apk名称为app_kuan_v1.0_2015.01.15.apk<br> outputFileName = "app_${variant.productFlavors[0].name}_v${variant.versionName}_${getTime()}.apk"<br> }<br> }<br> }<br> }<br> <br> compileOptions {<br> sourceCompatibility JavaVersion.VERSION_1_8<br> targetCompatibility JavaVersion.VERSION_1_8<br> }<br> <br>}<br> <br>dependencies {<br> implementation fileTree(dir: 'libs', include: ['*.jar'])<br> <br> implementation project(':base')<br> implementation project(':task')<br> implementation project(':account')<br> <br> implementation rootProject.ext.dependencies["appcompat"]<br> testImplementation rootProject.ext.dependencies["junit_junit"]<br> androidTestImplementation rootProject.ext.dependencies["androidx_junit"]<br> androidTestImplementation rootProject.ext.dependencies["espresso_core"]<br> //butterknif 注解处理器<br> annotationProcessor rootProject.ext.dependencies["butterknife_compiler"]<br> <br> implementation rootProject.ext.dependencies["constraintlayout"]<br>}</code></pre><p style="outline: 0px; margin-top: 0px; margin-bottom: 16px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; line-height: 26px !important;">./gradlew assembleDebug</p><p style="outline: 0px; margin-top: 0px; margin-bottom: 16px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; line-height: 26px !important;">结果</p><p style="outline: 0px; margin-top: 0px; margin-bottom: 16px; font-size: 16px; color: rgb(77, 77, 77); overflow: auto hidden; overflow-wrap: break-word; font-family: -apple-system, "SF UI Text", Arial, "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif, SimHei, SimSun; line-height: 26px !important;"><img src="https://51techud.yykj.com:9002/forumpic/20210722160229_6g.png" style="max-width:100%;"><br></p><p>看到这里是不是有人觉得为啥要多渠道打包啊,一个包他不香吗?<br><br>最后来介绍一下多渠道打包的用途,为什么要在项目搭建的时候把多渠道打包配置到gradle里面<br><br>详细说明:https://www.jianshu.com/p/b33139d4596c<br><br>多渠道打包的作用:apk--发布到市场上(渠道就是可以下载apk的地方)<br><br>1.0:发布到不同渠道上的apk,标记不同的渠道,目的是为了统计该渠道的下载量,留存率等等数据<br><br>2.0:了解下载量<br><br>3.0:针对性打广告<br><br>如果不多渠道打包的话,一个apk包投到数十个市场上,你怎么知道那个市场上下载量最大----多渠道主要是为了运营,让他们根据数据去玩(主要用到了友盟);</p>
赞(0)
收藏(0)
分享
相关标签: