美文网首页
Android Gradle 多渠道打包productFlavo

Android Gradle 多渠道打包productFlavo

作者: 冬絮 | 来源:发表于2018-01-17 17:06 被阅读73次
    • 在model的build.gradle中,添加productFlavors 字段

        productFlavors {
            demoA{//不同的渠道名
                //不同的渠道,不同的包名
                applicationId "com.lxd.demoa"
      
                //不同的渠道不同的base_api
                buildConfigField 'String', 'API_URL', '"http://www.baidu.com"'
                // String api_url = BuildConfig.API_URL;
      
                //不同的渠道,不同的功能开关
                buildConfigField 'Boolean', 'BIG_SIZE_ERASER', 'false'
                // Boolean bigSizeEraser = BuildConfig.BIG_SIZE_ERASER;
      
                //不同的渠道不同的渠道ID
                manifestPlaceholders = [UMC: "product-a"]
                //  manifest中   <meta-data android:name="UMENG_CHANNEL" android:value="${UMC}"/> UCM后边的是渠道ID
            }
      
            demoB{//不同的渠道名
                //不同的渠道,不同的包名
                applicationId "com.lxd.demob"
      
                //不同的渠道不同的base_api
                buildConfigField 'String', 'API_URL', '"http://www.google.com"'
                // String api_url = BuildConfig.API_URL;
      
                //不同的渠道,不同的功能开关
                buildConfigField 'Boolean', 'BIG_SIZE_ERASER', 'true'
                // Boolean bigSizeEraser = BuildConfig.BIG_SIZE_ERASER;
      
                //不同的渠道不同的渠道ID
                manifestPlaceholders = [UMC: "product-b"]
                //  manifest中   <meta-data android:name="UMENG_CHANNEL" android:value="${UMC}"/> UCM后边的是渠道ID
            }
        }
      
        dependencies {
            //不同的渠道,不同的库
            demoACompile 'io.reactivex.rxjava2:rxjava:1.0.0'
            demoBCompile 'io.reactivex.rxjava2:rxjava:2.0.0'
      
        }
      
    • 不同的渠道,不同的代码

    库可以不一样,代码当然也可以不一样了,gradle中有一个source set的概念,对于不同的产品,可以设置不同的source set。
    通常,创建工程后,AndroidStudio默认帮我们创建了应用于所有产品的代码集main,它的对应的目录是src/main,我们也可以创建每个产品特有的代码集src/demoA,src/demoB这样,名字和产品名字是对应的。
    在编译的时候,默认会将这些代码集加入编译,这样就实现了不同产品,不同代码。这种用法也是非常广的,比如两个产品实现同样的接口,但是底层实现不一样。

    不同的渠道,不同的代码.png
    • 不同的渠道,不同的资源文件

    同上

    不同的渠道,不同的资源文件.png

    相关文章

      网友评论

          本文标题:Android Gradle 多渠道打包productFlavo

          本文链接:https://www.haomeiwen.com/subject/bxuuoxtx.html