Build Variant在项目中的应用
来源:互联网 发布:南湖国旅官网广州数据 编辑:程序博客网 时间:2024/05/04 16:06
1. 区别debug 、release版本
当我们在进行正式项目开发的时候,通常会有debug、release版本的区别,这两个版本中可能会有部分代码实现不同。而如果我们需要打对应版本应用包之前都要调整代码的话,那会显得十分麻烦。或者说为两个版本分别建立独立的项目,但这在代码同步、git管理上也是相当麻烦的。在这里介绍一种比较合适的解决方式(使用Android Studio):
1> 为debug、release版本建立对应的目录
手动在src/main同级目录下建立debug和release目录(如何建目录这里就不介绍了),建完目录并建立对应的包后的目录结构为(包名可以存在区别):**
2> 接下去我们分别在debug与release对应的包路径下建立Java文件Util.java:
注意:debug与release中放置两个版本有区别的部分,而公共代码还是放置在src/main中,而且main中不能存在与debug、release中(同包名)相同的类。
// debug目录下的Java代码public class Util { public static String getTag(){ return "debug"; }}// release目录下的Java代码public class Util { public static String getTag(){ return "release"; }}
代码很简单,就是返回一个字符串,以便我们在运行时可以看出当前运行的是哪一段代码。
3> 运行我们想要的版本
现在如何进行切换版本呢?很简单,在AndroidStudio中的Build Variant进行选择切换即可,如下图:
当然,我们可以在src/main下做个简单的验证,代码:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { //Util.getTag() 根据其返回的信息,就可以知道当前版本是否切换成功 Snackbar.make(view, Util.getTag(), Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); }}
这样,切换版本后,查看运行结果即可。
4> 为不同的版本设置不同的资源文件
以上只涉及到代码的区别,那么要如何设置不同的资源文件呢,其实也十分简单。例:直接修改对应版本的layout/activity_main.xml文件,目录结构为:
activity_main里只是将FAB换了个位置,这里就不上代码了。
2. 依赖对应版本的Library(Module)
Module里对应版本的代码与资源的控制方式都和上面提到的一致,这里主要介绍一下如何配置相关gradle文件。添加完的目录结构:
1> lib(Module)中的build.gradle
这个仅需要额外加一句:
android { //... ... publishNonDefault true //这个是必须配置的,否则会导致无法依赖该Module}
2> app(Module)中的build.gradle
这里需要注意依赖的写法:
dependencies { //... ... debugCompile project(path: ':mylibrary', configuration: 'debug') //app debug版本依赖lib的debug版本 releaseCompile project(path: ':mylibrary', configuration: 'release')}
3. 多个flavor
当debug与release两个版本不够满足具体情况时,我们还可以利用Product flavors。情景:应用需要一个免费(free)的版本和一个收费(paid)的专业版本。
1> 创建对应目录
与上面提及的debug、release目录建立步骤一致,结构为:
2> 在build.gradle中配置对应的Product flavors
android { //... ... productFlavors { //注意名称需要与项目中目录名一致 free { } paid { } }}
配置运行完gradle后,会发现,现在有4个版本了,分别为:
free - debug
free - release
paid - debug
paid - release
每个版本对应相应目录下的代码与资源。
3> 为不用的flavor添加不同的依赖
例如,需要给免费版添加一个广告SDK,那么可以添加相关依赖(注意写法):
dependencies { freeCompile ' ... ' //freeCompile project(path: ':mylibrary', configuration: 'debug')}
Demo地址
- Build Variant在项目中的应用
- Vs2012在Linux开发中的应用(6):改写Makefile项目的Build过程
- CMMI5在项目中的应用
- css 在项目中的应用
- ZedGraph在项目中的应用
- WMB在项目中的应用
- 缓存在项目中的应用
- Memcached在项目中的应用
- Memcached在项目中的应用
- Memcached在项目中的应用
- Log4j在项目中的应用
- Memcached在项目中的应用
- Memcached在项目中的应用
- 缓存在项目中的应用
- JBPM在项目中的应用
- 代码在项目中的应用
- Memcached在项目中的应用
- LogBack在项目中的应用
- 通过鼠标画一次性矩形 + 绘制半透膜矩形
- 递归应用-汉诺塔java
- 第三章 接口层
- jquery 1.6之前的版本不支持attr方法
- Android CheckBox
- Build Variant在项目中的应用
- 一个简单的学生信息管理系统-python实现
- 滑动删除Item,拖拽切换Item,你想了解的都在这儿
- UITableview性能优化总结
- Android Studio Gradle Could not reserve enough space for object heap
- 大数据下,我们如何把握数据满足用户的需求呢?
- NSA被黑
- Eclipse安装NodeJS插件
- cocoscreate 官方例子说明 02_ui_01_widget_AnimatedWidget by:adady