Android 工程中swift 创建module十几个module是什么体验

7436人阅读
Android(32)
说明:本篇内容涉及如何在AS中新建一个Project(应用工作区)并在Project里创建多个Module(项目),记录了在创建Module时遇到的问题,比如新建一个Module后选择要运行的项目时,项目标有红色的叉叉导致无法运行。
Getting Start
在使用Android Studio(以下简称AS)新建项目时都会有这样一个概念:
Eclipse中的WorkSpace相当于AS中的Project;
Eclipse中的Project相当于AS中的Module(只就新建而言)。
所以Eclipse中在一个WorkSpace中建立多个Project 等同于 在AS的Project中建立多个Module。
1. New Project
&File-& New Project&
弹出以下新建项目向导窗口:
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”后弹出:
在弹出的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:
设置之后原先在“HelloChina”的红叉不见了,也可以点击运行按钮了,但是运行之后项目并没有启动成功,在logcat里打印出如下内容:
----------------------------------------Log------------------------------------------
Waiting for device.
Target device: htc-htc_t329d-HC2CBMM04272
Uploading file
&& &local path: G:\five\ProjectCabin\MyWorkSpace\HelloChina\build\apk\HelloChina-defaultFlavor-debug-unaligned.apk
&& &remote path: /data/local/tmp/com.aliao.hellochina
Installing com.aliao.hellochina
DEVICE SHELL COMMAND: pm install -r &/data/local/tmp/com.aliao.hellochina&
pkg: /data/local/tmp/com.aliao.hellochina
Launching application: com.aliao.hellochina/com.aliao.hellochina.MainActivity.
DEVICE SHELL COMMAND: am start -n &com.aliao.hellochina/com.aliao.hellochina.MainActivity& -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.aliao.hellochina/.MainActivity }
java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x cmp=com.aliao.hellochina/.MainActivity
} from null (pid=27937, uid=2000) not exported from uid 10046
at android.os.Parcel.readException(Parcel.java:1430)
at android.os.Parcel.readException(Parcel.java:1384)
at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1921)
at mands.am.Am.runStart(Am.java:463)
at mands.am.Am.run(Am.java:108)
at mands.am.Am.main(Am.java:81)
at com.android.internal.os.RuntimeInit.nativeFinishInit(Native Method)
at com.android.internal.os.RuntimeInit.main(RuntimeInit.java:257)
at dalvik.system.NativeStart.main(Native Method)
----------------------------------------Log------------------------------------------
百度知道后,打开了HelloChina项目的AndroidManifest.xml文件,发现:
MainActivity即默认启动的Activity竟然没有生成IntentFilter,含有如下设置的IntentFilter的Activity会被应用程序指定为程序的入口,即最先启动的Activity。
&intent-filter&
&action android:name=&android.intent.action.MAIN& /&
&category android:name=&android.intent.category.LAUNCHER& /&
&/intent-filter&
在&activity&&/activity&里加上这段代码后,项目的红叉消失了,原先在&Run/Debug
Configuration&配置窗口里的Activity配置部分,仍然勾选 “Launch default activity”选项。
注:之后新建的Module生成的Manifest文件里默认的Activity标签里都没有&intent-filter&...&/intent-filter&,只能手动添加,不知道AS这么做的目的是什么。由于我用的AS版本是0.3.7,最新的AS已经到0.4.x了,不晓得这个东东在最新版的AS里会不会有,有待验证。
运行项目成功:
自动生成的Navigation Drawer用起来很舒服!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:111911次
积分:1505
积分:1505
排名:千里之外
原创:36篇
评论:32条
(1)(1)(2)(4)(1)(1)(2)(1)(5)(5)(2)(2)(4)(4)(1)(5)(1)(3)(2)AndroidStudio之Module的创建与配置 - 博客频道 - CSDN.NET
嘿,你好!
分类:Android
Android Studio 2.x 的版本更新出现一些新的特性,请参考:http://blog.csdn.net/wirelessqa/article/details/
该版本的迭代也意味着Android开发人员可以将精力放在代码实现上,恋旧的人也该告别Eclipse了。
关于Android Studio的安装、配置和升级比较简单,暂不做介绍。如今的项目大部分都是集成项目,而Module就是集成项目最好的协作方式,具备Module的项目不管是从业务还是目录结构上来看都十分的清晰,那么就创建一个Module吧。
打开Android Studio,先新建一个项目,名称为:MyAndroid
自动生成上图所示的项目结构,Android Studio采用gradle构建项目。
现在开始创建Module,例如创建一个项目的library模块(为项目提供公共或自定义库)
选择File菜单 -& New -& New Module -& 填写Module名称:library &一直next直到finish
如上图所示library已经部署到项目中,但是此时的library却不是以一个库模块存在项目MyAndroid中
在运行项目按钮的下拉窗口可以看出ibrary是一个application,查看一下library的build.gradle文件,第一行为:
apply plugin: 'com.android.application'
将其修改为:
apply plugin: 'com.android.library'这样library就配置完成了,配置后的library会以arr格式文件为myandroid服务,可以通过每个模块的build/outputs文件夹验证,library模块的build/outputs下有个arr文件夹,里面存放这该模块的arr压缩文件,而myandroid项目的build/outputs下没有arr,只有apk文件夹,看到apk文件瞬间也就了解两者的区别了。arr与java的jar类似,只是google为了封装一些具有android特性的文件(例如xml配置文件、资源文件等)而创建的压缩类型。可以参考http://blog.csdn.net/ztzt15/article/details/
排名:千里之外
(0)(16)(2)Android Studio之修改module名称
当我们第一次创建一个project, Studio会自动帮我们创建一个app的module,这里的module相当于Eclipse中的project,只是Android Studio把所有的module都集中放到一个project中管理。这个app是一开始创建的,我们可以删除它再新建一个或者改个名变成我们所需要的,当然,选择后者..
1、使用快捷键Shift + F6或者右键module名称 -- Refactor --Rename 对module进行改名
2、在module列表中点击&Edit Configurations...&,进入设置页面后再Name中输入步骤1填的名称,并且在Module中选择对应的module,点击OK即可修改完毕。
之所以在这记录,是因为刚改了module名称后,运行程序时弹出警告框:failed to complete gradle execution already disposed:Module:app,网上找了许多资料无解,只能删除该project重新创建一个,因为新手,所以很多东西还不明白,见谅~
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'31153人阅读
Gradle Project项目、Module模块导入最近看到网上很多人在抱怨,Android Studio很难导入github上下载下来的一些项目,主要包括:1、导入就在下载Gradle2、根本导不进下面我分2部分来讲解正确的导入姿势:1、导入完整的Github Project我们在github上找一个项目工程目录如上,里面的东西其实分为2部分,工程相关和项目相关工程相关用于配置整个项目的编译环境和依赖,项目相关就是你的代码和配置文件啦我们先来看工程相关,他包含这样几个文件夹:由于现在Gradle还不是太成熟,所以版本更新会比较快,如果当初项目作者使用的是其他版本的Gradle,而你没有,AS就好默认去下载最匹配的Gradle,可偏偏在国内,这个下载奇慢无比,而且Gradle的文件也挺大有50+MB,所以,我们需要修改下配置先:打开gradle文件夹warpper文件夹,打开gradle-wrapper.properties#Wed Apr 10 15:27:10 PDT 2013
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
可以看见最后一行,作者使用的是gradle-1.12-all.zip,而我们,我们打开这样一个目录C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.1-all\27drb4udbjf4k88eh2ffdc0n55我们使用的是gradle-2.1-all.zip,所以AS就煞笔的再去下一个gradle-1.12-all.zip了,OK我们修改下配置改为:distributionUrl=http\://services.gradle.org/distributions/gradle-2.1-all.zip然后选择open exiting,选择我们的Build.gradle文件,就可以打开项目了。但是——————————————————————————————————————————————这个办法在最新的2.1上好像————————————————————————————————————不行了具体原因我也没有找到,但可以想到Android Studio和gradle 2个都是beat中的玩意,出点问题也不奇怪,但愿以后正式版上能ok就好下面我们使用另一种方法,移花接木:我们先来看看我们自己创建的项目编译好后是什么样子:多了几个gradle的文件哈,OK,我们把工程相关的gradle文件夹copy过来,替换掉要导入工程的gradle文件夹copy需要这几个文件夹:OK,下面再重新导入Exiting Project,选择Build.gradle文件,即可导入Project。2、导入一个module如果我们新建了一个工程,需要导入其他工程的一个module怎么弄呢,如同我们上面的那个项目,需要导入他的library这个其实就很简单了,我们前面搞那么多,都是因为工程无法找到正确的编译文件,但是module就不一样了,他只是用一个Build.gradle文件来控制它这个module的编译规则,因此,我们只要导入就可以了,工程的编译配置还是我们自己工程的配置,只是导入的时候需要注意下,这里我们需要选择module的目录,而不是再选择Build.gradle文件了。ok,选择导入,就可以完成module的添加了。归根到底,gradle的编译方式与Android的Makefile还是有点类似的,这样的方式,项目越大,优势越明显,但在我们平时的小app开发上,确实显得有点臃肿,编译时间实在太长了!!!但愿正式版能有所改善,相信Google能做到。对于无法导入项目这件事,说到底还是对Gradle语法和编译环境的不熟悉造成的,所以说,学东西,搞清楚原理很重要啊,特别是像这种刚开始普及的东西,哪来那么多现成的东西可以让你借鉴,只能靠自己,Read The F**king Source Code。以上。
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
Android群英传,包含了Android开发技巧与提高
网上购买:
本书源码:
访问:1026140次
积分:15070
积分:15070
排名:第520名
原创:237篇
转载:18篇
评论:2405条
为你推荐最新的博文~更有惊喜等着你
阅读:23506
阅读:58216
阅读:44456
(3)(2)(3)(1)(1)(2)(1)(1)(1)(4)(4)(1)(1)(10)(4)(12)(10)(1)(10)(18)(11)(11)(1)(4)(3)(10)(6)(8)(3)(1)(2)(1)(2)(23)(2)(8)(33)(35)(9)

我要回帖

更多关于 maven创建module工程 的文章

 

随机推荐