[Android开发]-Android开发基础

来源:互联网 发布:js frame src 编辑:程序博客网 时间:2024/05/03 16:59

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( )),都将传递给所有感兴趣的广播接收者
0 0
原创粉丝点击