前言
最近在做项目的过程中,遇到了这样一个情况,上来新建了一个工程,把代码都写在了主 module 里,功能写完调通后发现,需要将这些代码变成一个 library,方便别的项目依赖,转变的过程中还是遇到了一些问题,在此总结一下。
正文
这里我新建的项目,主module自动命名为app,下文中就以app指代主module。
- 打开 app 的 build.gradle 文件
将 apply plugin: 'com.android.application' 修改为 apply plugin: 'com.android.library' - 仍然在 app 的 build.gradle 文件中
去掉 applicationId "com.xxxx.xxxx.xxxx" 这一行,library 是没有 applicationId 的
完成前两步,你的主 module 已经变成一个 library 了,但是离你真正用上它,还有一小段距离
- 你需要依赖这个 library
你需要在 settings.gradle 里 include 这个 library,
并且在新的主 module 里,compile 这个 library。
这个时候问题来了,运行到手机上发现,桌面出现了两个图标
很简单,只需要把 library 里清单文件中的:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
删掉即可
到这里基本就完成了,但是还有可能出现一些问题,比如:
- 你的 library 里的资源文件命名和新的主 module 里的命名冲突
- 引用的三方库版本不同
- 使用了ButterKnife
- 使用了switch{}语法
这些都有可能导致问题,根据错误提示一个一个解决即可。
结语
下班!周末愉快!