当前位置: 代码迷 >> Android >> Android开发工具全面转为Android Studio(2)——AS project/module的CRUD
  详细解决方案

Android开发工具全面转为Android Studio(2)——AS project/module的CRUD

热度:99   发布时间:2016-04-27 22:12:33.0
Android开发工具全面转向Android Studio(2)——AS project/module的CRUD

  本文有些地方可能需要衔接Android开发工具全面转向Android Studio(1)——准备开发环境,读起来效果会更好。

  这个世界很奇妙,所有的东西离不开CRUD,即增删改查。即使人本身也遵循这个规律,一个人出生是C,进入社会后会经常被R(坐个火车还得人证票合一呢),过个青春期,你已经被U不知多少次了,哪一天挂了总会被D掉的。下面回到主题,讲讲AS中project和module的CRUD,为了兼容Eclipse老用户和新手,此处还会以Eclipse的工作方式作为参考进行对比。

 

注:以下以Windows平台为标准,AS以目前最新稳定版1.4.1为准。 

 

在开始前,如果是Eclipse转过来的,必须先强制理解下以下关系:

1、AS project的概念是等同于Eclipse workspace概念

2、AS module的概念是等同于Eclipse project概念

也就是说创建AS project就是创建Eclipse workspace,创建AS module就是创建Eclipse project

 

一、AS中project的CRUD:

创建分为两种,一种是New,另一种是Import。

1、创建新AS project(New):

一般来说,创建新东西都很简单,不会有很复杂的,但是有些概念可能需要理解,结合图片一起看。

①进入AS主界面——Start a new Android Studio project

②新建项目,这里演示所有的都用默认

③一直下一步,创建好项目,正常情况是会出现以下界面的,默认情况下这个名为app的应用是可以跑通的

④切换到视图project视图

⑤你会发现这样创建AS project后,自动创建了一个module,而且名字还强制叫app,有点恶心吧,看到下面这张图第一眼就是要改project名字和module名字(即CRUD中的U)

 

2、导入成AS project:

①从本地导入AS project

从AS主界面——Open an existing Android Studio project

或者在已经打开一个project的情况下:File——New——Import,选择AS project打开

 

②从本地导入eclipse项目

或者在已经打开一个project的情况下:File——New——Import,选择eclipse主项目打开,后面的步骤跟上面的截图一样

 

③从SVN/Git/Github导入(参考另一随笔,//TODO 待发布)

 

3、AS project名字修改:

①选中MyApplication——右键——Refator——Rename(快捷键shift+F6),重命名成MyProject,你会发现AS本身是不支持重命名project的,提示cannot rename root module,那如果我就是看着MyApplication不爽但又不想重新新建一个project再把现有的所有module导入进去,怎么办,当然有一个绝招(即下面的方法)

 

②进入MyApplication的硬盘目录,copy一份出来并将MyApplication修改成MyProject(当然也可以不copy,直接在原来的基础上改),再用AS打开MyProject(如何打开下面讲):

③可以正常编译运行,但是认真看是会发现冗余的,那就再改进一下(看下面)

④重新进入MyApplication的硬盘目录,copy一份出来并将MyApplication修改成MyWorkspace,同时把MyApplication.iml也改成MyWorkspace.iml,再用AS打开MyWorkspace(如何打开下面讲):

⑤这下修改是完美的,其实在.idea中在打开MyWorkspace之前有些配置文件还是记录MyApplication的,但是一旦用AS打开了就会被更新,所有总结来说:修改project名字只需要三步即可:先在硬盘上copy一份要改名的源project并将copy这份的名字命成想要的,然后再将里面的XXXXX.iml文件修改成“你的新名字.iml”,再用AS打开一遍即可全部完成

 

4、AS project的查询(打开一个project):

从某种意义上讲,AS打开一个project就是已经查询到了该module,打开一个已经存在的as project很简单,进入:AS主界面——Open an existing Android Atudio project

 

什么时候AS无法打开或者正常处理一个原本是project的项目呢,就是因为某种原因删掉了build.gradle或者删掉了gradle文件夹。删掉build.gradle是严重的,这个project完全无法使用,删掉gradle文件夹则需要重新配置gradle wrapper就可以正常使用了

 

5、AS project的删除,跟修改project名字一样,也不能在AS里直接删除,解决办法是:

①先关掉准备删除的project——回到AS主界面——按下键盘Delete/Backspace键删除project引用,现在只删除了AS对这个project的引用,实际上硬盘上还存在

②接着到project所在硬盘目录手动删除硬盘目录下数据,这样就完美的删除了一个project

 

二、AS中module的CRUD:

新建分为两种,一种是New,另一种是Import,如果是导入Eclipse项目,那么就必须通过Import实现

1、新建AS module(New):

①新建module不可以从AS主界面直接新建,需要先进到一个project中,比如此处以MyApplication project为例

②下一步来到这里,这里全部使用默认

③创建好模块后,大概是这样,现在问题来了,app和myapplication2这两个module名字我都不喜欢,也就是说我要改掉现有的模块名称,因为现在的module名字太没意义了

 

2、导入成AS module:

①从本地导入AS module

②从本地导入eclipse项目

如果有依赖能自动导入,请确保依赖包跟正式项目处于同一个文件夹项目,即保持eclipse的项目文件夹结构

导入后一切正常

 

③从SVN/Git/Github导入(参考另一随笔,//TODO 待发布)

 

3、修改module名称:

①选中app——右键——Refator——Rename(快捷键shift+F6),然后发现有两个选项,该选哪个

②Rename directory指的是重命名硬盘目录,不命名module目录,说白了跟我直接进文件管理器修改没啥区别,效果就是跟下面图示那样操作一样,所以完全不建议,重命名后你的AS会找不到module了

③Rename module,这个是指同时命名硬盘目录和module本身的名字以及所有相关引用,这个是跟eclipse中的重命名项目是一致的,比如我把myapplication2命名成MyLaucnher

 

④如果刚开始AS,第一次对module重命名选错了,选择了Rename directory,这里在Rename directory界面还有两个选项,正常情况是不会选择Search in comments and strings,如果选择了,也只是相当于全局替换了注释中的app字符串而已,选择默认选中第一后进行Refactor之后。但是现在后悔了,我想要的是选择Rename module一样的效果,怎么基于选择了Rename directory重命名后的结果弄成Rename module一样的效果呢?

⑤点击sync project with gradle files,同步一下基于选择了Rename directory重命名后的结果,你会发现变成这样,MyHelloWorldApp已经不再是一个module(注意AS中的module的文件名是粗体字体的,如果不是lib的话,module还可以在Run/Debug Configurations上面的run中显示),而旧的app module也不见了

⑥解决方法是,打开project下的settings.gradle文件,将include里面原来的app改成MyHelloWorldApp

⑦然后点击sync project with gradle files,这样就正常了,即跟选择Rename module重命名module一样的效果了

 

4、module的查询:

这里从某种意义上讲,查询module主要是指AS能不能正确识别一个文件夹是不是module,这个配置时在project下的settings.gradle文件中

如果现在我要把MyHelloWorldApp这个module立即降级为一个文件夹的话,只需要在project下的settings.gradle文件中删掉':MyHelloWorldApp'即可(但这并不等于你删除了这个module)

 

5、删除module:

删除一个AS module跟eclipse删除一个项目有点不一样,略会麻烦一点。

①在AS里删除一个module,需要以下步骤:进入项目结构界面(file——project structure(快捷键 ctrl + alt + shift + s))——modules——删除选择的module引用,这里只解除了project对其的引用,如果用eclipse的概念来解释,就是close了一个项目

②回到project视图——选择在project structure中中删除引用的module(project解除了引用的module)——按下键盘delete/右键delete,这时候是删除AS对该module引用同时也删除了这个module的硬盘数据,但是还有一个地方没删除干净

③进入运行配置界面(Run/Debug configurations)点击Edit Configurations——删除已经删除的module引用 ——点击sync project with gradle files,这时候完美的删除了一个module

 

原创随笔,转载注明出处。

 

  相关解决方案