提要
AndroidHelloworld应用结构;AndroidManifest.xml;R.java;应用程序权限管理;组件;签名
HelloWorld
|----libs
|----res
||----drawable-ldpi、drawable-mdpi、drawable-hdpi、drawable-xhdpi(分别对应低、中、高、超高分辨率图片文件)
| |----layout(
存放Android项目的各种资源文件,比如layout存放界面布局 )
| |----values(子文件如
字符串资源文件:string.xml;
颜色资源文件:colors.xml;
尺寸文件:dimes.xml )
|----src(存放Java源文件)
| |----org
| |----crazyit
| |----helloworld
|----AnroidManifest.xml
此外还可以在helloworld子目录下看到一个build.xml文件,这是Android为该项目提供的一个Ant生成文件。通过该文件,开发者可以来生成、安装Android项目。(Ant是一个非常简洁易用的项目生成工具)
Android项目提供的build.xml文件包含如下常用的生成target:
clean
debug
release
test
install
uninstall
——————————————————————
自动生成的R.java
可把R.java理解生Android应用的资源字典
每个具体的资源项对应于内部类的一个public static final int 类型的field
有了R.java,利用资源显得更加便捷:
1.在Java代码中使用资源
例:通过R.string.app_name来应用到“Helloworld”字符串常量
2.在xml文件中使用资源更加简单,只要按如下格式访问即可:
@<对应内部类类名>/<资源项名称> //如:
@string/app_name
————————————————————————————————————————
应用清单文件:AndroidManifest.xml
说明了该APP的name、icon及包含的组件等信息
-name
-组件:Activity、service、BroadcastReceiver和ContentProvider
-兼容的最低版本
-使用系统所需权限声明
-其他App访问该程序所需权限声明
————————————————————————————————————————
Android应用的基本组件介绍
(Activity、Service、BroadcastReceiver、ContentProvider)
-Activity是负责与用户交互的组件
-View组件是所有UI控件、容器控件的基类,是实际用户看到的部分
需要通过Activity把指定View显示出来,调用Activity的setContentView()方法即可。
如果某app需要多个用户界面,那么这个Android应用将会包含多个Activity,多个Activity组成Activity栈,当前活动的Activity位于栈顶。(Activity包含setTheme(intresid)方法来设置其窗口风格,如不显示ActionBar、以对话框形式显示窗口等)
-Service与Activity是并列的,它也代表一个单独的Android组件。(Service通常位于后台运行,它一般不需要与用户交互,故而其不具图形用户界面)
-BroadcastReceiver为另一个重要组件,代表广播消息接收器。开发者只要实现自己的BroadcastReceiver子类,并重写onReceiver(Contextcontext,Intentintent)方法即可。当其他组件通过sendBroadcast()、sendStickyBroadcast()或sendOrderedBroadcast()方法发送广播消息时,如该BroadcastReceiver也对该消息“感兴趣“(通过IntentFilter配置),BroadcastReceiver的onReceiver(Contextcontext, Intent intent)方法将会被触发。
-ContentProvider对于Android应用而言,它们必须相互独立,各自运行在自己的Dalvik虚拟机实例中。如发送短信时需要从联系人管理中读取指定联系人的数据——这就需要多个应用程序之间进行数据交换。Android为这种跨应用的数据交换提供了一个标准:ContentProvider。实现自己的ContentProvider时,需要实现如下抽象方法:
a.insert(Uri, ContentValues):向ContentProvider插入数据
b.delete(Uri, ContentValues):删除ContentProvider中指定数据
c.update(Uri,ContentValues, String,String[]):更新ContentProvider中指定数据
d.query(Uri,String[],String,String[],String):从ContentProvider查询数据
通常与ContentProvider结合使用的是ContentResolver,一个应用程序使用ContentProvider暴露自己的数据,而另一个应用程序则通过ContentResolver来访问数据
-Intent和IntentFilter 严格说,Intent并不是Android应用的组件,但它对于Android应用的作用非常大——内部不同组件之间通信的载体。当Android运行时需要连接不同组件时,通常就需要借助于Intent实现。
——————————————————————————————————————————————
签名Android应用程序
签名主要有以下两个作用:(签名有密钥)
1.确定发布者身份
2.确保应用的完整性
如果要正式发布一个Android应用,必须使用合适的数字证书来给应用程序签名,不能使用ADT插件或Ant工具生成的调试证书来发布。
在Eclipse中对Android应用签名:
1.Android Tools-->Export Signed ApplicationPackage...
2.Create new keystore