Android笔记之:App模块化及工程扩展的应用

 更新时间:2013年04月28日 09:28:24   作者:  
这篇文章是android开发人员的必备知识,是我特别为大家整理和总结的,不求完美,但是有用

1.需求
    无论是在.net还是java平台,合理的分层架构是最普遍的模块化思路之一。
    dll,jar文件无不风靡盛行,无处不在。
    一天,tx团队和我说,我们现在要做android上做三个论坛的客户端,一个是新闻论坛,一个是文学论坛,一个是音乐论坛。除了数据,界面和很少的模块不一样,其他的都一摸一样。
    jar是我第一刻就想到的东西,但是共用的jar文件无法方便的共享资源或者覆盖资源。
    而我们也不会傻傻的单独做三个客户端的吧,也不会傻傻的做3个客户端再傻傻的copy3份,依次修改吧。

2.问题
   在Android工程中如何开发一个共用Framework,能共用资源,代码,但是也能扩展? 

3.使用硬编码判断
   有人提出了一种方案, 在代码里面判断:

复制代码 代码如下:

if(新闻论坛) {
   //加载新闻论坛的资源
   //执行新闻论坛的代码
   //显示新闻论坛的效果
}else if(文学论坛) {
   //加载文学论坛的资源
   //执行文学论坛的代码
   //显示文学论坛的效果
}else if(音乐论坛) {
   //加载音乐论坛的资源
   //执行音乐论坛的代码
   //显示音乐论坛的效果
}
PS:这是一种很无奈的办法,代码丑陋,扩展性差,有没有更好的办法呢?

4.使用Android Library分离工程
    Android Library提供了一个类似于其他平台的库的概念,这个库不仅能公用代码,还能共用资源,还能覆写资源。
    Android Library是以工程的颗粒来复用,引用它的工程,其实就是引用它的代码,然后生成R.java和主工程需要的资源,而剔除Library中被覆盖的资源。其中Library中的AndroidManifest.xml不能复用,也就是说主工程必须重新定义AndroidManifest.xml,这个也很容易理解,AndroidManifest.xml本来就是工程的一个配置文件,一般来说不具备共用的库的通用性。
    步骤如下:
    第一步:新建Android工程common。
    第二步:右键common,选择Properties,在Android标签页,选中"Is Library" ,如下图。
 
    第三步: 新建主工程新闻论坛tianxianews。
    第四步: 右键tianxianews,选择Properties,在Android标签页,点击Add,选中common。如下图。
    查看最后的工程结构:
    此时此刻,common工程天衣无缝成了tianxianews工程的一部分。
    我们展开tianxianews工程的gen目录:
    
    eclipse为了生成了两个R.java,一个是common工程的,一个tianxianews工程的,但是内容是一摸一样的,这样做的好处是:R.java里面的内容包括两个工程资源,第一,tianxianews工程通过R.java能调用到common工程的资源;第二,如果有覆写的资源,生成apk的时候,tianxianews工程覆盖common工程的资源,因为两个R.java内容一样,common代码调用的R.java中的资源,实际上调用的是tianxianews资源,这个特性类似如面向对象的继承的概念。
    我们还可以另外新建tianxiamusic,tianxialiterature工程,都引用common,这样我们三个工程就能共用common,这样我们就可以只在common一个工程中开发了。
    在这里,具体的使用步骤我没有截图出来,主要是没什么技术,也没什么好说的,就是两个字:覆盖。 

5.小结
    Android Library为Android模块化和工程扩展提供了一个很好的工具或者方式。随着项目的增大,资源的共享,模块化和扩展的这种需求更是日益凸显,它不仅去掉了代码的丑陋,而且减少了开发量,带来的益处不少。同时由此我们也可以看出来Android的不成熟,他们为我们大型工程提供的方案还是太少,这可能也有源自手机平台本身的局限性吧,我们期待Android市场走向更强大,技术走向更强悍。

您可能感兴趣的文章:

相关文章

  • Kotlin类的继承实现详细介绍

    Kotlin类的继承实现详细介绍

    这篇文章主要介绍了Kotlin类的继承,在Java中类的继承默认是继承父类的方法和参数的,但是在kotlin中默认是不继承的,那么我们接下来来验证
    2022-09-09
  • Android定时器实现的几种方式整理及removeCallbacks失效问题解决

    Android定时器实现的几种方式整理及removeCallbacks失效问题解决

    本文为大家详细介绍下Android 定时器实现的几种方式:Handler + Runnable、Timer的方式、Handle与线程的sleep(long )方法和removeCallbacks失效问题如何解决
    2013-06-06
  • Android离线缓存的实例代码

    Android离线缓存的实例代码

    android很多时候需要考虑缓存的问题,本篇文章主要介绍了Android离线缓存的实例代码,具有一定的参考价值,有兴趣的可以了解一下。
    2017-01-01
  • Android媒体开发之音乐播放器

    Android媒体开发之音乐播放器

    这篇文章主要为大家详细介绍了Android媒体开发之音乐播放器,播放SD卡中的音乐,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • Android开发中的单例模式应用详解

    Android开发中的单例模式应用详解

    这篇文章主要介绍了Android开发中的单例模式应用,结合实例形式详细分析了Android开发中常用单例模式的实现与使用方法,需要的朋友可以参考下
    2018-01-01
  • android viewflipper实现左右滑动切换显示图片

    android viewflipper实现左右滑动切换显示图片

    这篇文章主要为大家详细介绍了android viewflipper实现左右滑动切换显示图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • Android APP数字解锁实例详解

    Android APP数字解锁实例详解

    这篇文章主要介绍了Android 应用数字解锁实例详解的相关资料,这里附有实例代码及实现效果图,需要的朋友可以参考下
    2016-11-11
  • Android开发实现自定义新闻加载页面功能实例

    Android开发实现自定义新闻加载页面功能实例

    这篇文章主要介绍了Android开发实现自定义新闻加载页面功能,结合具体实例形式分析了Android界面加载及页面布局相关操作技巧,需要的朋友可以参考下
    2017-10-10
  • Android基于OpenCV实现非真实渲染

    Android基于OpenCV实现非真实渲染

    非真实感渲染(Non Photorealistic Rendering,简称NPR),是指利用计算机模拟各种视觉艺术的绘制风格,也用于发展新的绘制风格。比如模拟中国画、水彩、素描、油画、版画等艺术风格。本文将讲解Android基于OpenCV实现非真实渲染的方法
    2021-06-06
  • Android Camera是否支持变焦的判断方法总结

    Android Camera是否支持变焦的判断方法总结

    这篇文章主要介绍了Android Camera是否支持变焦的判断方法总结,本文总结了调节摄像头焦距编程中遇到的一些问题和解决方法,需要的朋友可以参考下
    2015-04-04

最新评论