当前位置:  编程技术>移动开发

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

    来源: 互联网  发布时间:2014-10-15

    本文导语:  1.需求    无论是在.net还是java平台,合理的分层架构是最普遍的模块化思路之一。    dll,jar文件无不风靡盛行,无处不在。    一天,tx团队和我说,我们现在要做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市场走向更强大,技术走向更强悍。


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • android 获取文件的扩展名和去掉文件扩展名的小例子
  • VisualStudio 扩展 Android++
  • Android 铃声扩展工具 RingsExtended
  • Android对sdcard扩展卡文件操作实例详解
  • Android ListView 扩展 DragSortListView
  • android 扩展日志库 android-log
  • 申请Android Map 的API Key(v2)的最新申请方式(SHA1密钥)
  • Android瀑布流实例 android_waterfall
  • Android开发需要的几点注意事项总结
  • Android系统自带样式 (android:theme)
  • android 4.0 托管进程介绍及优先级和回收机制
  • Android网络共享软件 Android Wifi Tether
  • Android访问与手机通讯相关类的介绍
  • Android 图标库 Android GraphView
  • Android及andriod无线网络Wifi开发的几点注意事项
  • 轻量级Android开发工具 Android Tools
  • Android 2.3 下StrictMode介绍
  • Android 开发环境 Android Studio
  • IDEA的Android开发插件 idea-android
  • Android手机事件提醒 Android Notifier
  • XBMC的Android客户端 android-xbmcremote
  • Android小游戏 Android Shapes
  • Android电池监控 Android Battery Dog
  • android开发:“android:WindowTitle”没有对应项no resource
  • Android 上类似IOS 的开关控件。 Android ToggleButton
  • Android 将 android view 的位置设为右下角的解决方法
  • Android 2D游戏引擎 Android Angle


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3