Hi,欢迎来到华清远见移动互联网学院官网!国内王牌JAVAEE培训、Android培训、HTML5培训、UI培训、JAVA培训、VR培训机构!

  • 400-611-6270
  • 新浪微博
  • 微信
您当前的位置:移动互联网学院 > Android开发 > 如何在Android源码上编译系统应用

如何在Android源码上编译系统应用

时间:2017-07-12 09:10 来源:移动互联网学院

Android系统应用和普通的Android应用基本相同,都是主要用Java语言编写的APK程序。不过前者与后者有如下两点不同。

1. 签名不同。Android系统应用使用的是系统签名,或称为平台签名,而普通的Android应用使用的是一般的签名。

2. 可以访问的API不同,在AndroidSDK 中有很多API(类、接口、方法等)都声明为hide。

3. 这类API不允许在普通的Android应用中访问,而只是经过platform签名的Android系统应用才能使用这些API。

除了以上两点,Android系统应用和普通应用的创建过程基本相同,只是由于Android系统应用可能访问系统级的API(hide API),而ADT是不会识别这些API的,所以在ADT+Ecplise开发环境导入Android系统应用的源代码后会发现这些API的地方的都用红色波浪线标注了,不过这不要紧,反正也不在IDE中编译和运行Android系统应用。

在了解了Android系统应用和普通的Android应用的区别后,面临的写一个问题就是如何编译和运行Android系统应用呢?

Android系统应用完全可以向普通的Android应用一样在Ecplise中编辑,IDE的基本特性仍然会保留,但由于使用了系统API,所以是不能直接编译的。要想编译Android系统应用必须要依靠Android源代码(最好是已经进行一遍完整编译的Android源代码)才可以。通常会将Android系统应用的源代码放到<Android 源代码根目录>/package/apps 目录或其子目录中。编译Android系统应用需要在程序的根目录建立一个Android.mk文件,该文件是Android源代码专用的编译文件,相当于GCC的Makefile文件。至于该文件的内容,通常并不需要有更深入的了解,只需要在apps中找一个Android系统应用,如PackageInstaller,将该程序中Android.mk文件复制一份,然后进行适当修改即可。

在Android源代码中有一个package目录,所有的android系统应用的源代码都在这个目录中,其中package/app是最核心的目录,所有的Android系统应用的源代码都在这个目录中。其中psackages/app是最核心的目录,所有内嵌的APK程序都在该目录中,如果要加入自己的Android系统应用,也需要将APK文件放到这个目录中,如果想了解Android系统有哪些窗口(Acitivity)可用,app目录中包含的源代码将告诉我们一切。

除了app目录外,其他一些目录,例如,providers,也非常重要,尤其是providers目录,会告诉我们整个Android系统有哪些Content Provider可共调用,并且会得知详细的使用方法。当然,我们还可以从Android系统应用的源代码中得到更多的信息。例如,开发过桌面小部件的读者都知道,桌面小部件不支持将EditText控件放到桌面上,那么Android桌面的部件是如何做的呢?

不过研究Android系统应用源代码还有个更重要的目的,就是定制ROM。像现在很多流行的ROM,如HTC的sense UI、小米的仿iPhone的UI,以及老罗模仿与创新并存的锤子ROM,都需要对Android系统应用的源代码相当了解实现(当然还要有很多的UI设计师才行)。

所以研究Android系统应用的源代码好处多多,综合起来读者至少从以下几个方面可以获益。

1. 了解Android系统中有哪些窗口、Content Provider、Service 和Broadcast可以与之交互。

2. 充分掌握很多高级应用的使用方法,例如,OTA升级是如何实现的。

3. 对实现原理比较感兴趣的读者可以通过这些源代码了解像Launcher2、短信管理等应用的内容构造。

4. 对于像编写可以完成系统级操作的应用的读者,可以学会如何将Android应用嵌入到ROM,升级为Android系统应用,进而可以做任何自己想做的事。

5. 对于那些有即可情结的读者,完全定制自己的ROM是最令人振奋的梦想,而Android系统应用将是实现这一梦想最重要的基石。

  • 北京

    010-82600385/6

    北京市海淀区西三旗悦秀路北京明园大学校内

  • 上海

    021-54485127

    上海市徐汇区漕溪路250号银海大楼11层

  • 深圳

    0755-25590506

    深圳市龙华新区人民北路美丽AAA大厦15层

  • 成都

    028-85405115

    成都武侯区科华北路99号科华大厦2层

  • 南京

    025-86551900

    南京市白下区汉中路185号鸿运大厦11层

  • 武汉

    027-87804688

    武汉工程大学卓刀泉校区科技孵化器大楼11层

  • 西安

    029-88756251

    西安市高新区高新1路12号天公大厦3层

  • 广州

    020-38342087

    广州市天河软件园柯木塱园5栋三层

  • 沈阳

    024-24349000

    沈阳市沈河区北顺城路137号锦峰大厦7层

  • 济南

    0531-88898293

    济南市高新区舜华路三庆世纪财富中心B3座6层

  • 重庆

    023-68064704

    重庆市九龙坡区渝州路87号双薪时代九楼

  • 长沙

    15010390966

    长沙市开福区芙蓉中路海东青大厦B座11楼

Copyright © 2004-2017 华清远见教育集团 版权所有,沪ICP备10038863号-3,京公海网安备110108001117号