Android基础教程(七)Module

本文围绕Android项目中的Module展开。介绍了android application module、android library module和java library module三种Module的基础,包括能否多模块运行、能否相互调用等疑问解答。还阐述了项目外引用Module的三种方法,以及使用Module时的注意事项,如依赖声明、版本统一等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一·Module基础

在使用库文件多项目的时候先掌握三个知识点 android application module(Phone&Tablet),android library module,java library module:

如题,我们知道,android stuido 中一个project中可以包含很多个module,主要是包含了android application module,android library module,java library module这三种module。

我现在的理解是android application module以作为一个可以运行的应用,而android library module和libs中的.jar文件一样,就是用来调用的库,而java library module也类似android library module。

疑问:

       1.一个project中可以有多个android application module么?如果可以的话都可以作为一个单独的程序运行么?

       可以又多个 app module, 都可以作为单独的程序运行,因为编译的时候是针对单个 module 编译的,而 module 之间也都是相互独立的,所以之间没有相互影响

       2.android application module也可以像android library module一样当作库来调用么?

       原则上 app module 也能像 library 一样当作库来调用(比如调用其中方法 ,活动),不过 AS 使用 Gradle 编译,而编译 app module 和 library module 时使用的插件是不一样的(生成结果也不同),所以也就不能直接作为库来调用,不过做一些简单的修改,就能马上修改成一个 library module 库,目录结构和代码都不需要改变,但已经不能生成app。

       3.android library module可以作为一个程序运行么?

       如刚才所说, library module 的编译结果不是 apk ,所以也就没法运行。

       4.三者之间有什么区别?

       app module 和 library module 以及 java/kotlin module 主要区别在于生成内容的不同,app module 生成 apk 程序文件。library module 生成 aar 文件,java/kotlin module 生成 jar 文件。 aar 和 jar 文件都可以作为 app 的依赖库,主要区别在于 aar 除了能携带编译好的程序以外,还能携带资源,是对jar文件的一个提升。

AS除了普通新建android library(library module)外,我们同时还可以将app module改成library。很简单,只需要改其项目中的build.gradle两个地方:

apply plugin: 'com.android.application'改成'com.android.library';
applicationId "com.example.myapplication" 去掉,库没有applicationId
若直接调用方法,报错如下:
Dependent features configured but no package ID was set

 
我们新建了库文件,如何引入库文件?第一种简单办法就是直接在dependencies添加,如下:
dependencies {implementation project(path: ':mylibrary')}

第二种就是在AS图形化界面上操作,

最后的效果跟第一种方法一样,在dependencies中引用了包。因为library module生成的是*.arr文件,所以我们在这个位置可以找到生成

二.项目外引用

如果想使用非本项目module该怎么处理。方法有3:

1.File>New>Import Module,Source Directionary路径选择文件名,选择模块。

2.File>New>New Module,或在工程上右键New>New Module,选择Improt Gradle Project,Source Directionary路径选择文件名,选择模块。

3.上面的两种方法操作完后你会发现,Finish完成后其实就是把别的工程里的module项目直接复制到本项目,这本身是没有什么问题,唯一的缺点就是当你在某一个工程中改了此module的代码后,其它引用了此module的工程代码并没有改变,当然肯定有解决方法,直接操作settings.gradle文件。

include ':in'
/*这里的in就是你即将引入的module在本工程的module name*/
project(':in').projectDir = new File('../androidTest1/in')
/*有一个叫<in>名的项目,目录地址是 new File('module path')*/

在settings.gradle中加入这两行代码,项目文件夹下就会多出来一个别的工程项目module,此时你随便在别的项目改,本工程都会对应改动,达到一劳永逸的效果。同时发现,不仅可以按上述方式引进module,还可以引进项目,路径选上一级就可。

三.注意点

       1)app其实也是一个module,又叫主module,添加的叫次module。

  2)在app的Mainfest顶端加上xmlns:tools="http://schemas.android.com/tools";主module 在application上加上tools:replace="android:name,allowBackup,icon,theme,label"。

       3)若app和module有相同的dependencies依赖,需放入到module,避免冲突。且module不能用implementation,implementation声明的依赖只能在本module模块内使用,跨module使用就要使用api声明。

       4)build.gradle中设置的compileSdkVersion buildToolsVersion minSdkVersion targetSdkVersion保持统一,否则合并报错。

       5)module中application下的android:name,android:icon,android::label删除,否则安装后,在桌面上会有多个图标。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值