前言
啦啦啦啦~,本小仙女最近项目结尾时期,把一些平时工作中遇到的知识点整理一下,废话不多说,今天讲讲 library的注意事项。
如上图的项目层级图所示,本来我们项目中有一个app,这里面是所有我们app的代码,然后有一个lib1,这里面是一些工具类。然后,我们要新开发一个app,要求这个app即可以单独使用,也可以嵌入到原来的app中。于是乎,老大命我建一个library,也就是图中的mylibrary,这里面实现我们新app的代码,然后建一个myapp,是新app的空壳。这样子的话,当我做完mylibrary的时候,就可以无缝的在myapp和app里面运用啦。
创建library
那么怎么创建一个library的项目呢?其实很简单,右击你的project,选择新建Module,选择类型为Android Library就可以。如下图:
这个不用多说,一般新建按照提示都会,注意点,当建成后,去看library里面build.gradle文件,第一行显示applyplugin:'com.android.library'。
当然,如果已经创建为app了,那么可以在该项目的build.gradle中第一行的applyplugin:'com.android.application'修改为 applyplugin:'com.android.library'
并且删除defaultConfig{applicationId "xxxxxx"}
library中的注意事项
1.library中onclicklistenter方法不能用id进行判断,也就是说方法中不能以switch-case来匹配R.id.xxx。只能以v== “view变量名”的方式进行。
2.如果app中的资源名和library中的资源名相同时,app中的资源名会覆盖library中的资源名。所以library中资源的命名一定要规范,尽量前面加上有辨识度的前缀。
3.库工程使用的android版本不能高于调用它的主工程所使用的anroid版本。比如动态权限之类的东西,是依照android版本的,做内嵌功能时,一定要主要主工程的版本。
4.库工程里面的assets文件夹无用,不会被打包到APK。
5.如果你的library里面采用的是远程依赖的那种框架,那么初始化的代码一定要写在主工程的application里面。(如果多个工程引用同一个library,最好整个文档哪些要写在主工程里,不然东西多了自己有时候都忘了)。
结尾
看网上有说:库工程里面的AndroidManifest.xml无用,要声明Activity,必须写到主工程。关于这点,我倒是没有觉得,但是进入改该工程的入口,必须在主工程AndroidManifest.xml里声明,或者突然用到哪个页面必须申明。(像我酱紫从启动页开始代码都在library里,主工程只注册启动页面即可。)
好,写完收工。。。。哎,对了,吐槽下,library打aar包,但是library里远程依赖,我真的是很吐血。呜呜呜。。。。