作者cooper6334 (小恐龙)
看板AndroidDev
标题[分享] Android教学(2)-Project
时间Sun Dec 16 11:54:17 2012
网志图文版:
http://cooper6334.blogspot.tw/2012/12/android2-project.html
建立Project
在Eclipse中建立Android Project,可以从File->New->Android Application Project
建立,或是在左侧Package Explorer右键建立。在建立Project时需要填入名称等等资讯,
其中比较重要的是Package Name与Compile with SDK的版本。其他没有特别需求的话,
通常就next连点直接使用预设的设定了。
Package Name是手机中用来辨识程式身分的名字,格式必须要有两个以上的字串
以点隔开,例如com.example.test。使用相同的Package Name的程式会被当做是
同一个程式。一般来说重复安装的话会被当做更新把旧的程式盖掉,
但若是使用不同的Keystore建立的程式则会安装失败,必须要手动删除旧的程式
才能把新的程式安装进去。
Compile 所使用的SDK版本则直接影响到可以使用的函式。
旧版的SDK自然无法使用新版所增加的功能,在新版使用淘汰的函式时,
则会出现删除线建议不要使用,但是一般还是能够正常运作。
如果使用到Google Map等不包含在原生Android SDK的功能时,要选择Google API的版本。
执行Project
建立Project後,这个专案就可以立刻编译执行了。点下上方的Run按钮,
Eclipse会编译程式,并透过内建的debug keystore产生apk档,
之後再将这个apk档安装进手机然後开启。
第一次执行会询问要使用的执行方式,自然是选择Android Application。
之後Eclipse会找寻已开启的模拟器或是接上的手机来安装程式并执行,
若是都没有的话预设会自动开启AVD中适合版本的模拟器,
同时有多台设备或是没有适合的模拟器可以开启的话则会跳出介面选择要执行的设备。
可以点Run按钮旁边的小三角形选择Run Configurations设定,
可以避免不小心开启模拟器。
若是要在实机上开发,需要到手机的设定->开发人员选项 打开USB侦错
(旧版Android是放在设定->应用程式管理中),Windows还需要另外安装手机的驱动程式,
这样在开启程式时,就能够选择手机来进行开发。
要确认手机是否有正确接上,也可以到DDMS中的Devices看是否有抓到手机。
Project内容
src
是主要程式码所放置的地方,内建有一个MainActivity,
里面的onCreate是预设的程式进入点。
gen
里面最重要的是R.java,用来管理程式内的资源。
在程式中可以透过R取得各种资源,如图片,音乐,排版方式等。
R.java由系统自动建立,不要更改里面的内容!
若是资源有问题,例如图片换了程式却没更新,
可以把gen砍掉让系统重新建立R.java,或是从Project->clean来重置。
bin
当程式编译过,会将产生的档案放在bin中。如果想找别人帮忙测试程式,
可以从bin中找到apk档,就可以透过一般安装apk档案进手机的方式来让别人
安装你的程式。但是这个apk档是透过debug keystore所产生的,无法用於上架,
要上架的话需要透过自己的keystore产生apk档。
res
这边存放的是各种资源,并且自动产生R.java来管理这些资源。
res中的档案名称只能使用 . _ 小写字母 数字。
drawable用来放图片。由於android的解析度种类各式各样,在这边分成l/m/h/xh dpi,
一般比较常见的解析度是240*400 / 320*480 / 480*800 / 640*960,
但是会根据机器的不同而有不一样的数值。
解析度是Android最讨厌的地方,常常一张图放上去,结果每支手机看起来都不一样。
想更了解解析度可以看Google Developer。
http://developer.android.com/guide/practices/screens_support.html
一般情况下,假如有一张480*800的图片,丢进hdpi来使用的话会刚好符合全萤幕,
但是同一张图片丢到xhdpi的话则会太小留下黑边。系统会自动根据自己的解析度
来找寻适合的图片,如果只有其中一个资料夹有放图片的话则会自己将图缩放,
但是要达到最好的效果,最好还是各种dpi都放入对应解析度的图片。
layout放的是排版方式,可以透过图形化介面以拖拉的方式来排放元件,
或是直接更改xml的内容来编排layout。内建的activity_main.xml是预设的排版方式,
里面只有一个Layout与一个"Hello world!"的TextView。
values中主要是程式中会使用到的各种字串。虽然一般来说常常会直接把字串写死,
不透过values来使用,但是values可以用来处理多国语言的问题。
如果想提供多种语言,就可以另外建立对应的values资料夹,
例如繁体中文是values_zh_rtw,就另外在res中建立这个资料夹
并且把本来values里的内容复制过去,再把内容更改为中文的版本。
这样使用繁体中文的手机就会到values_zh_rtw中寻找字串,
而其他语言的手机则是到预设的values中寻找。
附带一提,音乐与影片要放在
raw资料夹,而预设是没有这个资料夹的,要自己建立。
AndroidManifest
这个档案里面是各种注册的资讯,包括package name,版本,权限,程式起始点,
还有Activity,Service,BroadcastReceiver等等的注册。
之後常常会需要到AndroidManifest进行注册,在讲到的时候会再说明。
下一次要来讲layout与view。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.161.73.74
1F:推 nfsong:推 12/16 20:06
2F:推 jain00:感谢。 12/16 21:27
3F:推 deryuan:推~收藏下来!谢谢唷 12/16 22:38
4F:推 MetalChao:感谢分享! 己收藏! 12/16 23:05
5F:推 pkmilk:推~ 12/17 12:58
6F:→ lovelycateye:drawable那边会误导人吧,而且hdpi是1.5倍px喔。 12/17 14:16
7F:→ lovelycateye:是放到mdpi才会跟480x800一样大喔 12/17 14:17
8F:→ lovelycateye:而且前提还是你的手机是480x800 mdpi 12/17 14:18
9F:→ lovelycateye:dpi和解析度没有关系,480x800有可以是mdpi或hdpi 12/17 14:21
囧这边我其实不太熟,平常都直接抓萤幕大小硬干= =
我再研究一下
10F:推 jeffy84123:values不太对 应该是说XML的资源组态档放置处 12/17 17:30
11F:→ jeffy84123:你这样是只说了strings.xml的用处 实际上样式组态档 12/17 17:31
12F:→ jeffy84123:颜色组态档等都是放在这 12/17 17:32
是阿,不过我也只用过string,其他没用过就没提了
※ 编辑: cooper6334 来自: 118.169.209.134 (12/17 18:17)
13F:→ lovelycateye:事实上drawable也不是只有图片,改天来一篇好了 12/17 18:56
14F:→ lovelycateye:虽然我是富奸本命... 12/17 18:56
15F:推 BearrrXD:drawable可放xml档案用以选择item focus select等的图片 12/19 10:24
16F:推 jeffy84123:那里用selector之类的 官网上还是说图片 所以我就都归 12/19 16:55
17F:→ jeffy84123:图片那类的资源 12/19 16:55