• Android 公共库的建立方法


    本文主要介绍在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. <?xml version="1.0" encoding="utf-8"?>  
    2. <resources>  
    3.     <string name="hello">Hello World, AndroidCommon!</string>  
    4.     <string name="app_name">AndroidCommon</string>  
    5. </resources>  

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

    Java代码  收藏代码
    1. <?xml version="1.0" encoding="utf-8"?>  
    2. <resources>  
    3.     <string name="app_name">TESTPROJECT</string>  
    4.     <string name="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都需要同时编译过于麻烦

  • 相关阅读:
    16进制字符串的转换
    UINavigationBar统一修改导航条样式
    3D touch
    WKWebView
    CAEmitterLayer 粒子效果(发射器)
    SDWebImage下载图片的使用
    PHP之string之str_shuffle()函数使用
    Redis之hiredis API (String)
    Redis之数据类型Sting字符串
    PHP之string之str_repeat()函数使用
  • 原文地址:https://www.cnblogs.com/bobzhangfw/p/3222722.html
Copyright © 2020-2023  润新知