当前位置: > 编程语言 > Android >

[Android系统的移植与平台开发]为Android启动加速

时间:2014-06-06 | 栏目:Android | 点击:

Android的启动速度一直以来是他的诟病,虽然现在Android设备的硬件速度越来越快,但是随着新版本的出现,其启动速度一直都比较慢,当然,作为程序员,我们是可以理解的,智能手机本身就要启动很多服务来支持应用的功能,并且Android系统大部分还是使用的Java语言编写的,必然要运行在Java虚拟机里,这也决定了它运行速度和启动速度都相对较慢。同时,Android系统为了在执行用户应用程序时提高用户体验,还做了一些预加载机制,这也牺牲了开机启动时间。

根据Android启动过程的分析可知,我们可以进行定制加速如下:

Ø  定制本地服务

Ø  定制Android系统服务

Ø  优化ZygoteInit的类预加载preloadClasses和资源预加载preloadResources机制

Ø  PackageManagerService扫描、检查APK安装包信息

下面我们依次来分析其实现步骤。

 

1. 定制本地服务

由第二章,第2节可知,本地服务都是由C或C++编写,它们都执行在Linux空间,在init进程的启动过程中启动了很多本地服务,如果我们的设备中没有电话模块、蓝牙模块,我们可以将这些没用的本地服务在init.rc里注释掉。

396 #service ril-daemon /system/bin/rild

397#     class main

398#     socket rild stream 660 root radio

399#     socket rild-debug stream 660 radio system

400#     user root

401#     group radio cache inet misc audio sdcard_rw log

 

435 service dbus /system/bin/dbus-daemon --system --nofork

436     class main

437 #    socket dbus stream 660 bluetooth bluetooth

438     user bluetooth

439     group bluetooth net_bt_admin

 

441 #service bluetoothd /system/bin/bluetoothd -n

442 #    class main

443 #    socket bluetooth stream 660 bluetooth bluetooth

444 #    socket dbus_bluetooth stream 660 bluetooth bluetooth

445     # init.rc does not yet support applying capabilities, so run as root and

446     # let bluetoothd drop uid to bluetooth with the right linux capabilities

447 #    group bluetooth net_bt_admin misc

448 #    disabled

 

重新编译system.img然后启动模拟器即可。

笔者做了对比,去掉上述几个本地服务与没有去掉本地服务,二者在开机时间上几乎没有减少多少,这也可以理解,因为本地服务就是几个程序,少执行和多执行几个程序对于总体开机时间没有多大影响,不过,去掉没有使用的本地服务,对整个系统性能来说,会有微不足道的提升。

如果去掉开机动画服务可以大大的提高系统的启动速度:

  1. 433 #service bootanim /system/bin/bootanimation  
  2. 434 #    class main  
  3. 435 #    user graphics  
  4. 436 #    group graphics  
  5. 437 #    disabled  
  6. 438 #    oneshot  
  7.  

 

您可能感兴趣的文章:

相关文章