作者:韩亚飞_yue31313_韩梦飞沙 QQ:313134555
第一部分、安卓基础整理
第一节、 基本知识了解
一、知识概括
1、Eclipse插件的安装及使用
2、Android的打包过程理解
3、两个基本demo理解
4、程序框架结构的理解
二、知识总结
1、移动技术知识
3G技术的扩展:3G,全称为3rd Generation,中文含义就是指第三代数字通信。
所谓3G,是指将无线通信与国际互联网等多媒体通信结合的新一代移动通信系统。 3G只是一种通信技术标准,符合这个标准的技术有WCDMA、CDMA2000、TD-SCDMA三种无线接口标准。
中国联通使用的是WCDMA(世界上大部分3G网络都采用的是该标准)
中国电信使用的是CDMA2000 (日、韩和北美使用);
中国移动使用的是具有自主知识产权的TD-SCDMA(只有中国才使用)。
2、Android发布及体系
版本经历了快速的更新,目前已经趋于稳定
安卓2.1版本开始火爆,因为有了sip通话的支持和ip通话 ip视频协议栈的支持。2.2-2.3版本开始稳定。
3.0-3.1版本应用于平板电脑上
开源的控制:
因为安卓是开源的,谷歌为了控制程序员对源码的过大修改而导致源码过于扩散,对于源码的发布发布了谷歌的约束----cts测试:
cts测试:这是google程序员自己编写的测试case.其目的就是不让我们的开发商对代码的结构做太大变化的修改,如果说测试case不能通过,那么我们的这个操作系统就无法得到google的认证.
授权android:
android以两种不同的开源许可发布.linux内核是GPL发布,开源os需要该授权.android平台(不含内核)由apache发布.两种发布模式都是开源为主,不同是后者面向商业用途.
安卓结构体系:android有四层体系结构,通过自身携带的虚拟机运行应用
需要说明的是: 1、安卓的虚拟机是在编译时优化代码
2、内部有一个常量池会将所有代码整合在一起,将需要的变常量整合在这个常量池节省了存储和执行效率。
3、执行的效率要高些,成操作需要更多的load/store指令(指令分配次数和内存访问次数),二/三地址占内存多些,但操作更少,访问内存执行数度是一个瓶颈
3、开发环境相关
android环境安装需要
Eclipse下安装ADT插件,并需要导入sdk使用路径
Sdk源文件也就是目前使用的安卓的api版本。
模拟器的设置
辨率大小设置
VGA:640*480
HVGA:480*320
...
API版本指定------在创建模拟器的时候需要指定api的版本
Android api 版本号 -------------普通的api版本
Google api 包括对应的Android api,并且包含google的地图包
ddms-------android开发的图形管理界面
了解界面中各个布局的作用即可
配置AVD路径:
添加Android_SDK_HOME环境变量,从变量名上看最好把ANDROID_SDK_HOME指向Android SDK目录,然后启动AVD
Android编程框架结构:
src/ java原代码存放目录
gen/ 自动生成目录:gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的资源,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。
res/ 资源(Resource)目录:在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。
res/drawable 专门存放png、jpg等图标文件。在代码中使用getResources().getDrawable(resourceId)获取该目录下的资源。
res/layout 专门存放xml界面文件,xml界面文件和HTML文件一样,主要用于显示用户操作界面。
res/values 专门存放应用使用到的各种类型数据。
assets资源目录:Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/assets目录下的资源文件不会在R.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径,如:file:///android_asset/xxx.3gp
AndroidManifest.xml项目清单文件:这个文件列出了应用程序所提供的功能,以后你开发好的各种组件需要在该文件中进行配置,如果应用使用到了系统内置的应用(如电话服务、互联网服务、短信服务、GPS服务等等),你还需在该文件中声明使用权限。
default.properties项目环境信息,一般是不需要修改此文件
4、模拟器和虚拟机的区别:
模拟器是跑在虚拟机上的,也就是说虚拟机模拟出了一个具有内存等的的硬件环境,而模拟器就相当于一个应用软件运行在这个硬件环境中。
adb---android debug bridge android的调试桥
adb的基本操作
android显示SDK and AVD manager
android listavds 列出我们创建的模拟器
adb 连接的调试桥的socket出现了错误
1. adbkill-server
2. adb start-server
把电脑上的某个应用装(. apk)到模拟器或者手机里面
adb install demo.apk
adb install –s emulator-5554 D:/xxx.apk
Failure[INSTALL_FAILED_ALREADY_EXISTS]
卸载一个手机上的程序
adb uninstall [包名]
莫名其妙问题 adb 版本不兼容
android listtargets 列出我们可以使用的 sdk的版本
adb version 查看adb的版本
adb devices 查看当前所有连接上来的设备信息
adb shell 来到模拟器或者是真机的控制台
ls 查看目录信息
ps 查看当前运行进程信息
kill pid 杀死进程
emulator –avd advname 启动模拟器
例如:emulator –avd 2.2 (2.2 为我们创建设备的名称)
mkmdcard 20md:/sdcard.img 创建sdcard
adb pull
adb push
android createavd –nameandroid2.2 –target 8 创建模拟器
ctrl + F11 横竖屏的切换
5、初级代码练习
1)拨打电话
清单权限
Java核心代码
public void onClick(View v) {
EditText editText =(EditText)findViewById(R.id.mobile);
//-----------Intent intent = newIntent(Intent.ACTION_CALL, Uri.parse("tel:"+ editText.getText()));这一步可以分解为以下三步-------------
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+number));
DialerAction.this.startActivity(intent);
}
2)发送短信
清单权限
Java核心代码
public void onClick(View v) {
String mobile = mobileView.getText().toString();
String cOntent=contentView.getText().toString();
SmsManager smsManager =SmsManager.getDefault();
PendingIntent sentIntent =PendingIntent.getBroadcast(SMSSender.this, 0, new Intent(), 0);
//如果字数超过70,需拆分成多条短信发送
List msgs= smsManager.divideMessage(content);
for(String msg : msgs){
smsManager.sendTextMessage(mobile, null,msg, sentIntent, null);
//最后二个参数为短信已发送的广播意图,最后一个参数为短信对方已收到短信的广播意图
}
}
6、知识扩展
Log的使用
在安卓开发中提供了一个日志类,用于显示测试信息
真机调试
连接手机,需要设置USB连接
apk打包过程
7、常用布局
相对布局(RelativeLayout)
线性布局(LinearLayout)
android:orientation="vertical"竖直线性布局
android:orientation="horizontal"水平线性布局,若不设置此属性,默认为水平
绝对布局()
表格布局()
每个TableTow标签分隔一个表格。
帧式布局()
注意: 界面配置文件名不可以用为new.xml,因为文件名会在R.java文件中生成一个关键字,而java文件的关键字不可以为 new .
dp设置相对大小,根据屏幕大小变化。
px设置绝对大小,不会产生变化。
8、Junit测试
一要使被测试的类继承AndroidTestCase类
其中有一个Assert.assertEquals(期望值,实际值)方法,可以对比结果。
二要在清单文件中设置测试声明
manifest清单下设置
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="com.itheima.junit"/>
application清单下设置
创建测试工程
9、日志输出
AndroidTestCase类中的Log类中有获取权限位置信息的方法
Log.v("LogTest","verbose");
Log.d("LogTest","debug");
Log.i("LogTest","info");
Log.w("LogTest","warn");
Log.e("LogTest","error");