本文主要介绍在android工程中如何将共用代码建成公共包方便其他工程引用、引用后的工程结构分析、library引入方式的优缺点

自己也写了一些android公共的库,有兴趣的可以参考TrineaAndroidCommon GoogleCode或(TrineaAndroidCommon Git),欢迎交流

1、java中公共库的创建和引入

熟悉java的朋友都知道在java中可以将公用代码提取出来新建工程,打包成jar包,然后通过外部依赖或是maven依赖加入其他工程使用。

2、android中公共库的创建和引入

使用android提供的is library功能创建公共库,android adt提供了公共库的创建方法,下面逐一介绍

a. 新建android工程

这一步同一般的android工程创建方法,如下

b. 设置工程属性为library

右击工程->properties->Android,将工程设置为是library,如下

c. android公共库的引入方法

右击需要引入library的工程->properties->Android,在library中添加之前新建的common,如下

这样我们就成功引入library了,对于引入后的工程结构分析可以参见本文下面第三部分介绍。引入后我们可以正常的引入java类,对于资源可以像在同一个工程中引入即可,因为library的资源被并入了工程中。

PS:如果这个时候工程编译出错,则可能是因为工程和公用library中资源的冲突问题,在后面的分析中我们可以知道引入library后,对于工程的资源会进行合并。比如library中现在含有icon.png的drawable资源,若调用者资源中也含有icon.png则会编译报错,这个时候我们可以将library中的icon资源删除,对于library来说尽量不要放这些drawable资源,我们甚至可以如下图红圈所示删除所有drawable资源文件夹,防止冲突发生。

当然删除icon后同时需要修改相应的引用资源的文件,如这里AndroidManifest.xml中的android:icon

3、引用后的工程结构分析

引入library的工程目录结构如下

从上图三个黄色标记的地方我们可以发现library的资源被并入了工程中,同时生成了两个一样的资源文件R.java。这样做的话,对于工程来说可以方便的调用library中的资源,跟在同一个工程中调用资源无甚区别。

a、library的资源被并入调用者工程中,并且相同资源值被覆盖

library中存在strings.xml内容如下

Xml代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="hello">HelloWorld,AndroidCommon!</string>
  4. <stringname="app_name">AndroidCommon</string>
  5. </resources>

调用者同样存在strings.xml,内容如下

Java代码
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="app_name">TESTPROJECT</string>
  4. <stringname="string2">testString</string>
  5. </resources>

最终R.java中的string我们可以看到同时存在hello、app_name、string2三个变量,即资源被合并。并且app_name的值为TESTPROJECT,即资源值被覆盖。

b. 资源一致性

修改上面红色标记的AndroidCommon_src中的AndroidCommon的内容,会发现library中的内容也会被相应修改

c. 编译一致性

修改library的资源进行编译会发现调用者工程也会同时被编译。

4.library引入方式的优缺点

通过library方式成功引入了公用库

a.提高了代码的复用率减少了开发量

b.可以使得项目模块化以及更好的扩展

同时对于这种工程方式的引入还是觉得有一些不妥的地方

a. 通过源码引入,而不是通过类似jar包引入,从而对于library的修改导致所有引入该library都需要同时编译过于麻烦

更多相关文章

  1. Android(安卓)!No Launcher activity found!错误
  2. Android入门教程(四)之------Android工程目录结构介绍
  3. Android入门教程(四)之-------->Android工程目录结构介绍
  4. Android入门教程(三)之------导入现有Android工程
  5. Android(安卓)NDK
  6. Android(安卓)Studio2.3+AndroidSDK安装【图文教程】附资源链接
  7. 在Eclipse配置安装Android详细教程
  8. Android中以JAR形式封装控件 或者类库
  9. Android(安卓)资源简介(四) ClipDrawable

随机推荐

  1. Android 时间显示控件 TextClock
  2. Android 键盘挤压 按钮
  3. Android支付宝支付详解
  4. android显示键盘时的页面自动调整
  5. Context 详解
  6. 天天记录 - Android创建应用窗口分析2
  7. Android MVP模式中的OOM
  8. NDK开发指南---NDK安装
  9. [置顶] Android多点触控揭秘
  10. android开发每日汇总【2011-10-17】