使用库项目共享Android源代码和资源
使用库项目共享Android源代码和资源
IntelliJ IDEA 支持包含共享 Android 源代码和资源的 Android 库项目。其他 Android 应用程序项目可以引用库项目,并在构建时将其编译源包含在其 .apk 文件中。
在 IntelliJ IDEA 中,库项目通过单独的库模块进行支持。
要启用共享 Android 源代码和资源,请执行以下任一操作:
- 创建一个新的库模块。
- 将包含要共享的源的应用程序模块转换为库模块。
创建一个新的库模块的操作步骤如下:
- 执行以下操作之一:
- 从头开始创建一个项目
- 将模块添加到现有项目中
- 在向导的第一页上,在左侧窗格中选择 Android,在右侧窗格中选择 Library Module。
- 完成向导。
您可以通过更新 Android facet 将应用程序模块转换为库模块。
将应用程序模块转换为库模块的操作步骤如下:
- 通过从主菜单中选择:文件| 项目结构(File | Project Structure)来打开“项目结构(Project Structure)”对话框。
- 在左侧窗格中选择模块。在中央窗格中,展开要变成库模块的模块的节点,然后单击 Android。
- 在右侧窗格中,选择 Android facet 页面顶部的“库模块(Library module)”复选框。
在另一个项目中使用库模块
要在另一个项目中使用库模块,您需要将该模块导入到其中。
- 从主菜单中,选择:文件| 新增| 来自现有源的模块(File | New | Module from Existing Sources)。
- 在打开的对话框中,浏览到要导入的
.iml
模块文件,然后单击“确定”。模块节点将被添加到树视图中。 - 将导入的库模块的依赖关系添加到将要使用其数据的模块中:
- 打开非库模块的设置:导航到文件|项目结构(File | Project Structure)中,在左窗格中选择模块(Modules),然后在中心窗格中选择非库模块。
- 在右侧窗格中,切换到“依赖关系(Dependencies)”选项卡。单击右侧工具栏中的添加按钮,然后从上下文菜单中选择“模块依赖项(Module Dependency)”。
- 在打开的“选择模块(Choose Modules)”对话框中,从列表中选择导入的库模块,然后单击“确定”。
将 AndroidManifest.xml 中用于库模块的数据添加到整个应用程序的 AndroidManifest.xml 中
要成功地将库模块集成到另一个应用程序中,其组件必须在应用程序AndroidManifest.xml
文件中声明。清单文件包含运行应用程序所需的信息。您可以手动将这些信息添加到库模块中,也可以将其从库模块的AndroidManifest.xml
中提取出来并将其自动添加到应用程序的AndroidManifest.xml
中。
第二种方法被称为合并清单(merging manifests)。
要使库模块的清单自动与应用程序清单合并,请执行以下操作:
- 通过从主菜单选择:文件|项目结构(File | Project Structure)打开“项目结构(Project Structure)”对话框。
- 在左侧窗格中选择模块(Modules)。在中央窗格中,展开非库模块并单击其节点下的 Android facet。
- 在右侧窗格的 Android facet 页面上,切换到“打包(Packaging)”选项卡,然后选择“启用清单合并(Enable manigest merging)”选项。
将库模块的.dex文件包含到整个应用程序的.apk文件中,无需重建(预分离)
在应用程序打包过程中,库模块的.class
文件被转换为.dex
文件。这个操作被称为 dexing。最后,从库模块输出的.dex
文件包含在最终的.apk
应用程序中(详细了解构建和运行中的构建过程 )。
通常,库模块的内容保持不变。在这种情况下,你只能够dexed
一次,因此输出.dex
文件包含在.apk
中。这种方法被称为 pre-dexing。
默认情况下,IntelliJ IDEA pre-dexe(预分割)库模式依赖关系以及自上一次构建以来尚未更新的外部jars
。您可以更改这些设置,以便所有.class
文件始终 dexed。
- 通过从主菜单选择:文件| 项目结构(File | Project Structure)打开“项目结构(Project Structure)”对话框。
- 在左侧窗格中选择模块(Modules)。在中央窗格中,展开非库模块并单击其节点下的 Android facet。
- 在右侧窗格的 Android facet 页面上,切换到“打包(Packaging)”选项卡,然后选择“Pre-dex 外部 jar 和 Android 库依赖关系(Pre-dex external jars and Android library dependencies)”选项。