这两天发现Android Studio 的Flavors用起来相当给力!这里跟大家分享下:
Flavors中文翻译过来叫“口味”,不知道确切叫法是啥,它的功能就是允许你的APP有多个不同的版本,不同版本的代码可以不一样,如果多渠道打包(咦!这样看到中文中渠道很贴切呀,哈哈),可以有baidu,360等等!
我今天这个Android Studio教程讲这个不是多渠道打包,这块交给专业打包的GG,我们这里讲适合做项目开发的用法。

我们把项目分两个flavors:

mock:模拟版,这里所有数据都用写好的模拟数据来运行APP

当你要开发一个新功能,但是服务器代码还没有写好的时候怎么办?
傻等么,Of cause not!我们切换到mock版用模拟数据继续往下搞。

prod:真实版,这里所有数据都用真实数据来运行APP

当服务器开发好了,要联调了我们再切换到prod版来调。

光说没用,无图无真相:
选中项目,右键->Open Module Settings 打开Preject Structure

选中Flavors 点击“+” Name 填mock 再点“+”添加一个prod点OK

然后看我们app的build.gradle加了以下内容

android {

...

productFlavors {

prod {

}

mock {

}

}

}

到这一步,也没看出什么不一样的。注意看,下面变化开始了
选中app-src 右键New->Directory新建文件夹mock

接着选中刚刚建的mock文件夹,右键New->Directory新建文件夹java

同理新建prod.java文件夹,最后结果如下:

细心的你会发现mock下的java文件夹是蓝色的,prod文件夹则不是,why?
那是因为当前默认编译是在mock 这个Flavor
点击左下角的Build Variants打开窗口,可以看到app module 当前的Build Variant是mockDebug
你可以试试把mockDebug改为prodDebug再回到Project窗口,这一次是prod下的java为蓝色的了。

回来,选中mock下的java,右键 New->package新建一个和main中一模一样的包,这里是cn.huangx.mvpsample3

同理,把Build Variant切换到prodDebug同样新建一个一样的包,最后结果如下:

选中所建包名右键New->Java Class新建一个ModelManager

然后切换到mock版同一位置也建一个一样名字的ModelManager。
这里注意一点,在mock和prod建的文件必须是一样的,而且要是main里不能有的。
因为mock版的所有文件是main+mock里的,prod版的所有文件是main+prod里的
最后画风是这样的:

切换到mock版(要习惯,这一篇经常要切来切去)新建model包,并在包下新建一个FakeUserModel类,这个就是我们的模拟数据类了

下面看FakeUserModel类内容:

public class FakeUserModel implements IUserModel {

Handler handler = new Handler();

/**

* 登录

*

* @param username 用户名

* @param password 密码

* @param callback 回调

*/

@Override

public void login(final String username, final String password, final Callback callback) {

handler.postDelayed(new Runnable() {//延时200ms回调,模拟网络请求

@Override

public void run() {

if ("huangx".equals(username) && "123456".equals(password)) {

callback.onSuccess();

} else {

callback.onFailure("用户名或密码错误(mock)");

}

}

}, 2000);

}

}

FakeUserModel实现了IUserModel接口,与main中的UserModel一模一样,为了区分onFailure信息后面加上(mock)。
要明白这一点,FakeUserModel是假的,main中的UserModel才是调用真实数据,这个Demo里为了演示,main没有用真实实现,记住就好!

然后是mock中ModelManager内容:

public class ModelManager {

public static IUserModel provideUserModel() {

return new FakeUserModel();

}

}

提供一个静态方法provideUserModel产生一个FakeUserModel。

切换到prod版,这里的ModelManager是这样的:

public class ModelManager {

public static IUserModel provideUserModel() {

return new UserModel();

}

}

这里的provideUserModel方法产生的就是真实的IUserModel实现

重头戏来了,我们回到main的LoginActivity的onCreateLoader方法,把new UserModel()替换成ModelManager.provideUserModel()

public Loader<LoginPresenter> onCreateLoader(int id, Bundle args) {

return new PresenterLoader(this, new PresenterFactory<LoginPresenter>() {

@Override

public LoginPresenter create() {

return new LoginPresenter(ModelManager.provideUserModel());

}

});

}

搞定这一步后就是HAPPY的时候了:
切换到mock版LoginPresenter传入的参数IUserModel就是真实环境的UserModel
切换到prod版LoginPresenter传入的参数IUserModel就是模拟环境的FakeUserModel
服务器没好我切mock自已搞,服务器好了我切prod跟你调,哈哈,妈妈再也不用担我调接口了!

原文来自:简书/仙鬼

Android Studio Flavors详解相关推荐

  1. Android Studio 插件开发详解二:工具类

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112856 本文出自[赵彦军的博客] 在插件开发过程中,我们按照开发一个正式的项 ...

  2. Android Studio 插件开发详解四:填坑

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78265540 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  3. Android Studio 插件开发详解三:翻译插件实战

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78113868 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  4. Android Studio 插件开发详解一:入门练手

    转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/78112003 本文出自[赵彦军的博客] 系列目录 Android Gradle使用 ...

  5. Android Studio 版本号详解

    Android Studio 版本号详解 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/69951965 本文出自[赵彦军的博客] ...

  6. 视频教程-Android Studio 开发详解-Android

    Android Studio 开发详解 1999年开始从事开发工作,具备十余年的开发.管理和培训经验. 在无线通信.Android.iOS.HTML5.游戏开发.JavaME.JavaEE.Linux ...

  7. Android Studio 安装详解及安装过程中出现的问题解决方案

    Android Studio 安装详解及安装过程中出现的问题解决方案 一,Android Studio安装包下载, 首先到官网下载,就是去Android Studio中文社区官网下载你的平台需要的安装 ...

  8. android组件模板,提高效率必备神器 ---- Android Studio模板详解

    原标题:提高效率必备神器 ---- Android Studio模板详解 Android Studio模板大家应该很熟悉,你新建一个project或者module的时候,AS会帮你提供几个选项供你选择 ...

  9. Android studio入门详解

    1.如何查看Android studio的环境搭建是否成功 首先在Android studio中的sdk manager查看sdk存放位置,如何打开,同时按shirt+ctrl+鼠标右键,如下图: 然 ...

最新文章

  1. web前端培训要学多久
  2. React脚手架搭建及目录结构介绍
  3. 从零认识单片机(9)
  4. VGGNet原理和实现
  5. 大一的一些心得与近况
  6. 谷歌Gmail诞生记:十年回首
  7. 法拉利等12家车厂 将与苹果手机联网(图)
  8. wordpress 添加友情链接
  9. java学习笔记(详细)
  10. 网络运维工程师常见的面试题及需掌握的知识点
  11. pycharm激活码永久有效2019年5月28日
  12. Tilera 64核处理器快速上手
  13. 哎呀你不要把他叫出来_墓友-第一章——釉彩瓶-爱阅小说网
  14. linux源代码是用,阅读Linux源代码-使用lxr和glimpse
  15. 【聊技术】在Android中实现自适应文本大小显示
  16. Mariadb指定数据库进行主备,无法恢复数据异常总结
  17. KSO--阿里云部署NetCore项目无法通过端口号访问
  18. 神经网络训练失败原因总结
  19. Ubuntu16.04编译Android 6.0系统源码过程简要记录总结
  20. 数据库关系图—sql

热门文章

  1. 用python画一只小狗
  2. Cocoss2d-x开发流程工具化思想与实现
  3. 詹姆斯高斯林_詹姆斯·高斯林(James Gosling)关于Oracle与谷歌的竞争–“问题始终是互操作性”
  4. MapReduce分布式编程模型
  5. 聊聊写代码的20个反面教材
  6. 【微信测试号实战——01】注册一个属于你自己的微信测试号
  7. Android自动化测试框架uiautomator2详解
  8. win11开机声音如何关闭 windows11关闭开机声音的步骤方法
  9. 跨模态行人重识别:Cross-Modality Person Re-Identification viaModality-Aware CollaborativeEnsemble Learning学习笔记
  10. 手机网页视频背景自动播放记录