Android开发环境
- Android SDK:编译,调试Android程序
- Android 设备:模拟器(AVD Manager,夜神,BlueStacks)
- 集成开发程序IDE:Android Studio , IntellijIDEA , Eclipse ADT
Android开发常用工具
- AVD Manager.exe : 安卓原生模拟器管理工具
- SDK Manager.exe : Android SDK管理工具
- monitor.exe : 安卓设备监视器
- Adb.exe : 安卓调试桥,用于连接PC和模拟器
Android adb
Adb 安卓调试桥,用于连接PC和模拟器
Adb常见命令:
- 显示当前设备: adb devices
- 安装Apk: adb install xxx.apk
- 卸载Apk: adb uninstall xxx.apk
- 获取模拟器中的文件: adb pull
- 向模拟器中写文件: adb push
- 重启设备: adb reboot
- 查看日志: adb logcat
- 启动模拟器:emulator -avd advname
- adb shell: 进入模拟器或手机,操作其中的目录或文件,进入shell之后,使用的就是Linux系统下的shell命令,但android系统对其做了阉割
adb 调试桥-常见问题:由于adb是移动设备与PC连接的桥梁,所以很多手机助手,安全卫士都会默认开启adb连接移动设备,当我们使用adb发起调试的时候可能会造成一定的冲突,出现异常。
解决方法:重启adb
adb devices
adb kill-server
adb start-server
APK生成过程 : 编译,打包,签名优化
APK编译过程 :
- 资源打包映射:使用AAPT工具对资源进行打包,生成R.Java文件,资源文件包含res目录下的布局,动画,图片,声音等文件,也包括AndroidMainifest.xml文件,还有一个Asset目录,该目录下的资源文件不会被编译生成只是做简单的压缩
- 处理AIDL文件:使用aidl工具处理AIDL文件,生成对应的Java文件
- 编译源代码Java文件(分为JVM与Dalvik编译):Javac命令编译Java文件,生成对应class文件,编译的Java文件包括Java源文件,R.Java文件,AIDL生成的Java文件,把.class文件转为Dalvik VM支持的文件
APK打包过程 :
- 编译生成的文件,按照一定格式压缩为一个文件
- 一般使用APK Builder打包生成未签名的APK文件,其中包括:
- 资源文件
- Dex文件
- libs目录下的文件(so或第三方库文件)
APK签名优化过程 :
- 打包后的APK不能直接安装使用,还需要对APK文件进行签名.
- 使用jarsigner对未签名APK文件进行签名
- 使用zipalign工具对签名后的APK文件进行对齐处理
APK一般结构:
- APK签名信息:META-INF
- 资源文件目录 : .res
- 全局配置文件 : AndroidManifest.xml
- Dalvik字节码 : .dex
若存在libs/目录,则存放的是ndk编出来的so库
Android四大组件:
- 活动(Activity)
- 广播接收器(BroadcastReceiver)
- 服务(Service)
- 内容提供者(Content Provider)
Activity : 最基本的Android应用程序组件,一个活动通常就是一个单独的用户界面,每个活动被实现为一个独立的类,并且从活动(Activity)基类中继承而来.活动类将会显示由视图(View)控件组成的用户接口,并且事件(Event)做出响应.
BroadcastReceiver: 用于异步接收广播的Intent,而广播Intent的发送是通过调用Context.sendBroadcast( ),Context.sendOrderedBroadcast( )或者Context.sendStickyBroadcast( )来实现的,通常一个广播可以被订阅了此Intent的多个广播接收者接收,广播接收器只能接收广播,对广播的通知做出反应,广播接收器没有用户界面,但是它们可以为它们接收到信息启动一个Activity,或者使用NotificationManager来通知用户.
Service: 在后台运行的,用户不可见,可交互的组件,与Windows中的服务有点类似,Service不能自启动,需要通过Context对象调用,Context.startService( )或Context.bindService( )来启动,因此Activity,Broadcast等都能使Service启动
Intent介绍
Intent(意图)用来执行动作和产生事件.通过Intent可以激活Android应用的三个核心组件:活动,服务和广播接收器
Intent提供一种通用的消息系统,运行在你的应用程序与其他的应用程序尖传递Intent来执行动作和产生事件。
Intent作用 : 激活三大组件与传递数据
通过使用Intent可以激活Androdi应用的三个核心组件–活动,服务和广播接收器
- Activity : 一个Intent对象传递给Context.startActivity( )或者Activity.startActivityForRestult( )启动一个活动或使用一个已经存在的活动去做新的事情
- Service : 一个Intent对象传递给Context.startService( )去初始化一个Service或传递一个新的指令给正在运行的Service.类似的,一个Intent可以传递给Context.bindService( )去建立调用组件和目标服务之间的连接
- Broadcast Receiver : 一个Intent对象传递给任何广播方法(如Context.sendBroadcast( )),都将传递给所有感兴趣的广播接收者