【幻灯片分享】Android程序的编译,安装和运行 | 小米科技 汪文俊 | Android DevCamp
安卓系统架构多年经验总结:《Android程序的编译,安装和运行》 | Android DevCamp
话题简介:Android程序的编译,安装和运行。从程序员的观点探索Android系统提供的编程抽象,从程序的整个生命周期讨论一下Android系统结构。
讲师简介:汪文俊,中国科技大学硕士,原IBM系统工程师,现为小米科技MIUI首席架构师,开源C编译器项目ucc的作者。
【幻灯片在线观看】*:
Android程序的编译,安装和运行 | 小米科技 汪文俊 from Shining @DevCamp
备注:* 因为炫姐姐对SlideShare这一平台的偏爱,尽管需要使点小技巧才能上传分享,但是炫姐姐还是坚持选择了这一功能强大却简洁好用的平台。一来对国外这些开发出优秀的工具和平台、造福于互联网和人类的团队表示致敬,二来则是对国内对于这些优秀的工具和平台的限制表示一下立场。读者如果不能正常浏览,那么需要像炫姐姐一样用点小技巧。而对于那些还是不知道炫姐姐在说什么的小白读者,可以移步到这里查询原因。
【幻灯片下载页面】: Android DevCamp幻灯片下载:Android程序的编译,安装和运行 | 小米科技 汪文俊 -来自CSDN下载频道(不需要积分,自由下载)
【幻灯片内容刚要】:
- 1. Android DevCampProduced by CSDN
- 2. Android系统剖析 汪文俊
- 3. 议程2?? Android程序结构 2?? Android系统结构 2?? Android系统和程序设计
- 4. 第?一部分Android程序结构
- 5. HelloWorld2?? AndroidManifest.xml 2?? res/ ®?? layout/hello_world.xml ®?? values/strings.xml 2?? src/ ®?? com/example/android/HelloWorld.java
- 6. HelloWorld.javapackage com.example.android; import com.example.android.R; import android.app.Activity; import android.os.Bundle; public class HelloWorld extends Activity { protected void onCreate(Bundle state) { super.onCreate(state); setContentView(R.layout.hello_world); } }
- 7. 资源layout/hello_world.xml <EditText xmlns:android=“http://schema.android.com/apk/res/android” android:layout_width=“match_parent” android:layout_height=“match_parent” android:textSize=“18sp” android:text=“@string/hello_world” /> values/strings.xml <string android:name=“hello_world”>Hello,World</string>
- 8. AndroidManifest<manifest xmlns:android=“http://schema.android.com/apk/res/android” package=“com.example.android”> <application android:label=“HelloWorld”> <activity android:name=“HelloWorld”> <intent--_ilter> <action android:name=“android.intent.action.MAIN” /> <category android:name=“android.intent.category.LAUNCHER” /> </intent--_ilter> </activity> </application> </manifest>
- 9. res/* src/* R.java aapt javac AIDL classes java class ?les dx JARs res/* aaptclasses.dex aapt resources.arsc apk signapk signed apk zipalign ?nal apk
- 10. 资源编译2?? R.layout.hello_world(0x7f010001) 3?? package id: 7f 3?? resource type: 01 3?? resource id: 0001 2?? resources.arsc(资源查找表)
- 11. item 1 item 2 con?g 1 … con?g 2 layout item N … drawablepackage con?g N … strings res/layout/hello_world.xml res/drawable-hdpi/icon.png …
- 12. 视图2?? 树形结构 3?? View (TextView, Button, …) 3?? ViewGroup(FrameLayout, LinearLayout, …) 2?? setContentView(R.layout.hello_world) 2?? 解析XML,利用反射构造视图结构
- 13. 程序安装2?? installPackage(“HelloActivity.apk”) 2?? 解析AndroidManifest.xml 3?? Activity 3?? BroadcastReceiver 3?? Service 3?? ContentProvider 2?? /data/system/packages.xml
- 14. 程序运行Intent intent = new Intent(“com.example.android”, “com.example.android.HelloWorld”); context.startActivity(intent);
- 15. 第二部分Android系统结构
- 16. 体系结构 应用 Android系统框架 Java核心运行时库 dalvik虚拟机 JNI库 本地运行时库 硬件抽象层 Linux内核
- 17. Android手机分区 cache data system boot modem bootloader
- 18. 系统启动2?? 系统上电加载内核 2?? 内核启动 2?? 首进程init
- 19. 启动脚本init.rcservice adbd /sbin/adbd user adb group adb service servicemanager /system/bin/servicemanager user system onrestart restart zygote onrestart restart media service zygote /system/bin/app_process --Xzygote /system/bin ----zygote socket zygote 6678
- 20. Zygote Zygotedalvik vm
- 21. System Server Zygote System Server Activity Manager fork Package Manager …dalvik vm dalvik vm
- 22. Home Zygote System Home Server Activity Activity Manager Thread fork Package Manager … dalvik vm dalvik vm dalvik vm fork
- 23. 进程间通信2?? 信号 2?? 管道,命名管道 2?? 共享内存 2?? socket 2?? RPC(COM, CORBA) 2?? OpenBinder
- 24. BinderProcess A Process B Parcel Parcel marshal unmarshal Binder Driver
- 25. BinderProcess A Service 注册 Process B Manager 查询 返回 Parcel Parcel marshal unmarshal Binder Driver
- 26. HelloWorld Zygote System Home HelloWorld Server Activity Activity Activity Manager Thread Thread fork Package startActivity Manager …dalvik vm dalvik vm dalvik vm dalvik vm fork
- 27. 第三部分Android系统和程序设计
- 28. 系统设计2?? 层次结构 2?? 安全 2?? 围绕Intent的组件通信 ??? 缺乏组件共享机制 2?? 基于生命期的管理 ??? 超时异步,ANR 2?? 广播机制 ??? 泛滥的广播侦听 2?? Java ??? 垃圾回收
- 29. 程序设计2?? 不要阻塞主线程 ??? Thread , AsyncTask 2?? 消息循环 ??? Handler, HandlerThread 2?? Service ??? 多任务 ??? ACTION_BOOT_COMPLETED ??? AlarmManager ??? WakeLock