当前位置 : 主页 > 网络编程 > 其它编程 >

androidgradle项目中productFlavors使用方法

来源:互联网 收集:自由互联 发布时间:2023-07-02
1.不同产品,不同包名android{productFlavors{productA{applicationIdcom.crazyman.product.aversionNamev 1. 不同产品,不同包名 android { productFlavors{ productA{ applicationId "com.crazyman.product.a" versionName "version-a-1.0
1.不同产品,不同包名android{productFlavors{productA{applicationIdcom.crazyman.product.aversionNamev

1. 不同产品,不同包名

android { productFlavors{ productA{ applicationId "com.crazyman.product.a" versionName "version-a-1.0" } productB{ applicationId "com.crazyman.product.b" versionName "version-b-1.0" } }}

不仅仅是包名,versionName 等信息都可以设置

2. 不同产品,不同渠道号

  • 先在android manifest文件配置一个节点

android:name="APP_APPKEY" android:value="${app_appkey}"/>

  • 然后再productFlavors中分别配置

productFlavors{ productA{ manifestPlaceholders = [app_appkey:"fiehowefnnd7663"] } productB{ manifestPlaceholders = [app_appkey:"655dued109rh4fg"] } }

注:manifestPlaceholders 用于替换 manifest 文件中的变量值

3. 不同产品,不同库

dependencies { # .... productACompile 'io.reactivex.rxjava2:rxjava:2.0.1' productATestCompile 'io.reactivex.rxjava2:rxjava:2.0.1'}

4. 不同产品,不同代码

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

5. 不同产品,不同资源

这个用法其实和上面是一样的,代码集中可以定义资源,这样就做到了不同的产品,使用不同的资源,同样可以定义不同的AndroidManifest文件,比如申请不同的权限之类的。

网友评论