Android Studio中的Module是指什么

Android Studio中的Module是指什么,第1张

Android Studio中的Module 相当于Eclipse 中的library

在使用Android Studio(以下简称AS)新建项目时都会有这样一个概念:

Eclipse中的WorkSpace相当于AS中的Project;

Eclipse中的Project相当于AS中的Module(只就新建而言)。

所以Eclipse中在一个WorkSpace中建立多个Project 等同于 在AS的Project中建立多个Module。

1. New Project"File->New Project"

d出以下新建项目向导窗口:

Module Name是Project中的第一个Module的名字。

Minimum required SDK用来选择应用支持的最低的Android版本,底部的Support Mode会随着所能够支持的最小SDK的选择而变化,如下图所示,选择Android 3.0,底部的Fragment等选项自动消失:

因为在Android3.0及之后,其SDK已经开始支持Fragment。如果是Android 3.0之前的版本需要使用到Fragment的话,勾选了底部Support Mode的Fragment就会为低版本的sdk提供相应的支持Fragment的库文件。

一路“Next”之后,设置默认的Activity及其生成的布局文件:

点击“Finish”完成项目的创建,项目新建完成后,项目结构如下图所示:

2. New Module

“HelloWorld”是Project中的第一个创建的Module,再创建一个新的Module选择“File ->New Module”后d出:

在d出的New Module向导对话框选择“Android Application”,点击“Next”后:

新建的Module命名为“HelloChina”,一路“Next”,在以下窗口中选择“Blank Activity”空白的Activity

上述 *** 作完后进入Module的启动Activity的设置:

可以看到Layout

Name中默认显示activity_main2,因为第一个Module中已经生成了activity_main.xml(觉得这里不是很方便,每个

Module新建时默认的Activity可以同名但是其对应的布局文件命名不能同名,对于不同的项目而言这种限制不是很爽)。Navigation

Type可以选择导航类型,右边的视图会相应显示布局效果。

点击“Finish”完成Module的创建,创建后的工程结构如下图:

3. Run Module

接下来我们来运行新建的项目(这里所说的项目指的是Module),在AS顶部的工具栏里选择要运行的项目,从下图可以看到项目"HelloChina"上标了红叉:

点击“Edit Configurations”去看看哪里出问题

错误指出是找不到默认的Activity(我们在Activity模块里看到勾选的是启动默认Activity)

但是在项目中已经生成了默认的Activity了即MainActivity,为什么还会找不到呢?

初遇到该问题时以为是除了第一次随新建Project时创建的Module之外,之后再创建的Module都要手动在配置里设置默认启动的

Activity,于是乎我就手动设置了默认Activity,如下图所示,指定了“HelloChina”项目的默认启动Activity——

MainActivity:

方法/步骤

首先打开Android studio,在右侧项目Project管理器中选择Android。

然后右键选择new,继而选择Module。

在d出的Module新建向导中选择第一个Phone&Tablet Module。

给新的Module取个名称,注意开头字母需要大写。

然后选择Module的模板,默认会选中第一个,此时根据自身需要选择,一般选择第二个empty Activity。

最后给新的Module添加主活动Activity,对其命名,一般情况默认为MainActivity即可。至此,新的项目添加完毕。

androidStudio(后面简称AS)在导入一个外部的本地module时,AS采用的是复制一份到当前项目目录下这种策略。这种方式在开发一个项目时并不会有什么大问题,不过,在多个项目都引用同一个或几个module时就会出现大问题,这种公用的module通常都是框架类或工具类module,如果每个项目都复制一份module到自己项目目录下,如果某天发现module中有几个bug需要修改,你就会发现,你不得不去每个目录下修改module,如果是修改的东西比较多的话,绝对是欲哭无泪。

上述就是研究多项目依赖同一个module这个问题的起因,下面直接说说怎么解决(目前官方似乎没有直接支持的方法,不过我相信以后肯定会支持),首先为了方便维护,我们新建一个项目,这个项目下只有公用的module,不放任何application

然后只需要在其他引用这些module的工程settings.gradle中添加如下配置

这样,我们就可以像之前那样使用本地依赖的方法直接在当前项目的application中添加这些module依赖了

原理其实也非常简单,就是我们强制添加并修改了引入module和module的路径,完成配置并clean后目录变成如下结构

Driver目录就是项目工程目录,可以发现,配置后,Driver下项目引用的几个module都被成功引入,只不过和之前直接导入module不同,他们不再是在Driver目录下了,而是和Driver平级,当然,这并不会影响引用。

注意点:这些看上去和Driver平级的几个module,其实在真实的文件目录下是不存在的,也就是说你直接进入硬盘查看文件是没有这几个目录的,只有在AS中才能看到,这些module的真实目录就是他们自己所在的lirary项目目录,这样就保证了多个项目同步使用一个module。配置settings.gradle中module的File的路径时需要注意,里面应该填写的是module的真实目录,因为我的module根目录和项目是在同一个工作空间的,如果你的module的根目录和项目不再同级目录,则应该做出对应修改。

补充:发现一个额外问题,这样配置后,如果你的公用library是上传了git的话,你的项目如果没有配置git,然后你配置git时会发现怎么提交都是显示的上传library到git,这时只需要自己手动新建一个仓库就可以了


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11244795.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存