Android多渠道编译-依赖的渠道控制
来源:互联网 发布:东北林大网络 编辑:程序博客网 时间:2024/06/05 20:45
最近在开发一款android的SDK,其中有一个需求很有意思,需要在不同版本的SDK上引用不同Library依赖。之前还真没有遇到过,查阅了很多资料搞定了,在这里记录下来,分享给大家。~~
不同渠道依赖不同的第三方库
在build.gradle配置文件中的Android{}中添加如下类似多渠道配置
productFlavors { flavor1 {} flavor2 {} }
如上我们已经定义了flavor1和flavor2两个渠道版本。如果我们想在flavor1中使用Gson,而flavor2中不使用,我们可以使用如下方式
dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:appcompat-v7:25.3.1' flavor1Compile 'com.google.code.gson:gson:2.2.4' flavor1Compile 'com.android.support.constraint:constraint-layout:1.0.2' flavor2Compile 'com.android.support.constraint:constraint-layout:1.0.2'}
引用方式是在我们平时引用依赖的compile关键字前面加上渠道名并将compile首字母大写。
注意:执行编译使出现如下错误的话,请将dependencies配置放到gradle配置文件的最底端。
Error:(6, 0) Gradle DSL method not found: ‘flavor1Compile()’
好了,通过以上的配置我们就能够打出一个依赖的Gson一个没有依赖Gson的APK了,我们可以去验证一下。
在AndroidStudio中双击debug的apk文件可以预览它。如下:
点击classes.dex查看代码结构,如下:
我们可以看到Gson的class已经编译到了dex文件中。再来看一下flavor2的classes.dex文件:
并没有Gson的class文件,说明我们成功的在两个渠道版本中实现了依赖的不同。
除了第三方的依赖,Library工程也可以使用相同的方法。
flavor1Compile project(':XXXLibrary')
阅读全文
0 0
- Android多渠道编译-依赖的渠道控制
- Android 渠道包(多渠道打包)
- Android_Gradle打多渠道的渠道包
- 使用Gradle构建Android应用的渠道包-Android studio 多渠道打包(超简洁版)
- Android Studio 多渠道打包中针对不同渠道不同应用名称的处理方法
- Android studio多渠道打包,同时附上debug运行正式签名的apkAnd自定义渠道apk文件名
- 支持Android Signature V2 Scheme 多渠道打包,并解决类似360加固后获取不到渠道信息 - 渠道统计失败的问题
- Android APK 多渠道快速编译
- Android 多渠道打包 Gradle统一依赖管理
- 关于多渠道打包获取渠道为null的坑!
- 多渠道打包中优雅的配置渠道签名
- android的多渠道打包
- Android Studio多渠道打包如何使用不同的资源,依赖和java代码
- android 依赖外部库的编译方法
- Android 编译环境的依赖库安装
- Android编译打包-gradle task 的依赖
- Android 编译环境的依赖库安装
- android获取app当前的渠道号或者获取清单文件application中的任意meta-data(以友盟的多渠道打包为例)
- (java)杭电acm 题号:1000 A + B Problem
- Minimal Centos7.1系统安装方法(图文教程)
- 下拉框onchange方法传递option自定义属性
- HTML4 Lists 一条一条列表项
- opencv_core244d.lib(opencv_core244d.dll) : fatal error LNK1112: 模块计算机类型“X86”与目标计算机类型“x64”冲突
- Android多渠道编译-依赖的渠道控制
- oracle登录报ORA-12541:无监听程序 ! 错误
- Android左右滑动控件实现开关的切换效果
- Python的迭代协议和迭代环境
- React Native 编码习惯带来的性能问题
- 生成一个可执行jar包、invalid header field
- 什么是DAO
- unity3D学习笔记之六 Material(材质)的几种RenderingMode(渲染模式)
- Android 自定义NumberPicker