Android开发经验谈Android开发Android技术知识

Android studio差异化打包,一套代码如何Gradle

2019-08-22  本文已影响28人  Android架构师丨小熊

随之开发的效率提升,越来越多的需求诞生了,比如我今天说的这个如何一套代码加载不同的app_name,布局文件,主题,资源文件?

一定要做一个会“偷懒”的程序员,遵守“懒”的一字方针;

究竟怎么做呢?

因为之前做过多渠道打包,猜想是不是和多渠道打包差不多呢?

做任何事情之前得先分析,需要怎么做?从哪几个方向会出发?时间是多久……分析之后就开始实施了:

具体如下:

第一步:在app的build.gradle中配置

//差异化打包,名字任意起
flavorDimensions 'heb'
//多渠道打包
productFlavors {
    //andorid 应用组件命名和已安装应用有冲突,我们使用 “APP英文名+包名+类名”来避免。
    wnh {
        dimension = 'heb'
        // 设置applicationId(这里很重要,两个相同applicationId的apk不同同时安装在同一台Android手机中)
        applicationId = 'com.xxx'
        targetSdkVersion 28
        maxSdkVersion 28
        signingConfig signingConfigs.release
        buildConfigField "int", "App", "1"
        manifestPlaceholders = [
                app_name      : "xxx",
                app_icon      : "@mipmap/ic_launcher",
                app_round_icon: "@mipmap/ic_launcher",
                app_style     : "@style/AppTheme"]
    }
    ydh {
        dimension = 'heb'
        applicationId = 'com.xxx'
        targetSdkVersion 28
        maxSdkVersion 28
        signingConfig signingConfigs.release
        buildConfigField "int", "App", "2"
        manifestPlaceholders = [
                app_name      : "xxx",
                app_icon      : "@mipmap/ic_launcher",
                app_round_icon: "@mipmap/ic_launcher",
                app_style     : "@style/AppTheme"]
    }
    ylh {
        dimension = 'heb'
        applicationId = 'com.xxx'
        targetSdkVersion 28
        maxSdkVersion 28
        signingConfig signingConfigs.release
        buildConfigField "int", "App", "3"
        manifestPlaceholders = [
                app_name      : "xxx",
                app_icon      : "@mipmap/ic_launcher",
                app_round_icon: "@mipmap/ic_launcher",
                app_style     : "@style/AppTheme"]
    }
 
}

第二步:在清单文件中配置,application节点下:

<application
        android:name=".common.MyApplication"
        android:allowBackup="true"
        android:icon="${app_icon}"
        android:label="${app_name}"
        android:supportsRtl="true"
        android:roundIcon="${app_round_icon}"
        android:theme="${app_style}"
        tools:ignore="GoogleAppIndexingWarning"
        tools:replace="icon,label,theme,roundIcon"
        android:usesCleartextTraffic="true"
        tools:targetApi="n">

第三步:把studio切换到project目录下,在src目录下创建和main同级的包,(包名必须和gradle里面名字一致)

第四步,根据进行差异化的不同之处和相同之处放置不同的问文件,具体如图:

最后为了防止外部原因,建议先同步,然后rebuild一下,接下来就是静等待打包了;

最后

漫漫开发之路,我们只是其中的一小部分……只有不断的学习、进阶,才是我们的出路!才跟得上时代的进步!

今年年初我花一个月的时间收录整理了一套知识体系,如果有想法深入的系统化的去学习的,资料免费领取方式:加群:797404811,我会把我收录整理的资料都送给大家,帮助大家更快的进阶。

重要的事说三遍,转发+转发+转发,让更多需要的朋友们都可以看到并且领到!

上一篇下一篇

猜你喜欢

热点阅读