文章目录

关闭BootLoader的企鹅

# kernel/msm-4.9/arch/arm64/configs/msm8953_defconfig
# kernel/msm-4.9/arch/arm64/configs/msm8953-perf_defconfig

CONFIG_FRAMEBUFFER_CONSOLE、CONFIG_LOGO
第一个编译选项表示内核支持帧缓冲区控制台,它对应的配置菜单项为:
Device Drivers —> Graphics support —> Console display driver support —> Framebuffer Console support。
第二个编译选项表示内核在启动的过程中,需要显示LOGO,它对应的配置菜单项为:
Device Drivers —> Graphics support —> Bootup logo。

内核源码:
/kernel/goldfish/drivers/video/
/kernel/goldfish/drivers/video/logo/

注意:默认没开启企鹅图标

关闭开机动画Android

# system/core/rootdir/init.rc
# cat frameworks/base/cmds/bootanimation/bootanim.rc

service bootanim /system/bin/bootanimation
    class core animation
    user graphics
    group graphics audio
    disabled
    oneshot
    writepid /dev/stune/top-app/tasks

关闭服务
# setprop service.bootanim.exit 0
# start bootanim
注意:没起作用,还是有明暗变化的Android logo

修改:
#  vi frameworks/base/cmds/bootanimation/bootanimation_main.cpp
直接注释main()方法的内容
不显示Android logo,但是没有看到明显的改善

关闭锁屏

# frameworks/base/packages/SettingsProvider/res/values/defaults.xml
<bool name="def_lockscreen_disabled">true</bool>

删除预装APP

查看预装APP

adb shell pm list packages > all.txt
package:com.android.cts.priv.ctsshim
package:com.qualcomm.qti.qms.service.telemetry
package:com.qualcomm.qti.perfdump
package:com.android.internal.display.cutout.emulation.corner
package:com.android.internal.display.cutout.emulation.double
package:com.android.providers.telephony
package:com.verizon.dmclientupdate
package:com.android.providers.calendar
package:com.android.providers.media
package:com.adups.dmc
package:com.qualcomm.qti.modemtestmode
package:com.android.wallpapercropper
package:com.quicinc.cne.CNEService
package:com.android.protips
package:com.android.documentsui
package:com.android.externalstorage
package:com.qualcomm.uimremoteclient
package:com.android.htmlviewer
package:com.qualcomm.qti.uceShimService
package:com.android.companiondevicemanager
package:com.android.mms.service
package:com.qualcomm.qti.qms.service.connectionsecurity
package:com.android.providers.downloads
package:com.qualcomm.qti.callenhancement
package:com.qualcomm.qti.telephonyservice
package:com.qualcomm.qti.auth.fidocryptoservice
package:com.qualcomm.qti.optinoverlay
package:com.android.soundrecorder
package:com.qualcomm.uimremoteserver
package:com.android.defcontainer
package:com.qti.confuridialer
package:com.android.providers.downloads.ui
package:com.android.pacprocessor
package:com.android.simappdialog
package:com.android.settings.overlay.cmcc
package:com.android.internal.display.cutout.emulation.tall
package:com.android.certinstaller
package:com.android.carrierconfig
package:com.android.mms.overlay.cmcc
package:com.qti.qualcomm.datastatusnotification
package:android
package:com.android.contacts
package:org.codeaurora.gallery
package:com.qualcomm.qti.callfeaturessetting
package:com.qualcomm.wfd.service
package:android.ui.overlay.ct
package:com.qti.qualcomm.deviceinfo
package:com.android.egg
package:com.android.mms
package:com.android.mtp
package:com.android.nfc
package:com.android.stk
package:com.android.launcher3
package:com.android.backupconfirm
package:com.qualcomm.qti.server.wigigapp
package:com.android.provision
package:org.codeaurora.ims
package:com.android.statementservice
package:com.android.settings.intelligence
package:com.android.systemui.theme.dark
package:com.qualcomm.qti.dynamicddsservice
package:com.qualcomm.qcrilmsgtunnel
package:com.android.providers.settings
package:com.android.sharedstoragebackup
package:com.android.dreams.basic
package:com.android.webview
package:com.android.se
package:com.android.inputdevices
package:com.android.bips
package:com.qti.dpmserviceapp
package:com.qti.xdivert
package:com.android.systemui.overlay.cmcc
package:com.android.musicfx
package:com.android.cellbroadcastreceiver
package:android.telephony.overlay.cmcc
package:android.ext.shared
package:com.android.onetimeinitializer
package:com.qualcomm.qti.simsettings
package:com.android.server.telecom
package:com.android.backup
package:com.android.keychain
package:com.qualcomm.qti.presenceappSub2
package:com.android.printservice.recommendation
package:com.android.dialer
package:android.ext.services
package:com.qualcomm.qti.qtisystemservice
package:com.android.calllogbackup
package:com.verizon.dmbrowser
package:com.android.packageinstaller
package:com.android.carrierdefaultapp
package:com.dsi.ant.server
package:com.qualcomm.qti.remoteSimlockAuth
package:com.android.proxyhandler
package:com.cyanogenmod.filemanager
package:com.android.inputmethod.latin
package:com.qualcomm.qti.ltedirect
package:com.android.managedprovisioning
package:com.android.dreams.phototable
package:com.qualcomm.qct.dlt
package:com.android.smspush
package:com.android.wallpaper.livepicker
package:com.example.connmgr
package:com.qualcomm.qti.presenceapp
package:com.android.apps.tag
package:com.android.storagemanager
package:com.android.bookmarkprovider
package:com.android.settings
package:com.qualcomm.qti.ims
package:com.qualcomm.qti.lpa
package:com.qualcomm.qti.sva
package:com.qualcomm.qti.uim
package:com.qualcomm.location
package:com.qualcomm.simcontacts
package:com.android.cts.ctsshim
package:com.android.systemui.overlay.ct
package:com.caf.fmradio
package:com.qti.diagservices
package:com.qualcomm.qti.services.secureui
package:com.android.vpndialogs
package:com.qualcomm.location.XT
package:com.android.music
package:com.android.phone
package:com.android.shell
package:com.android.wallpaperbackup
package:com.android.providers.blockednumber
package:org.codeaurora.snapcam
package:com.android.providers.userdictionary
package:com.android.emergency
package:com.android.location.fused
package:com.android.deskclock
package:com.android.systemui
package:com.android.exchange
package:com.android.bluetoothmidiservice
package:com.qualcomm.qti.confdialer
package:com.qualcomm.qti.poweroffalarm
package:com.qualcomm.qti.networksetting
package:com.android.traceur
package:com.qualcomm.qti.qms.service.trustzoneaccess
package:com.android.bluetooth
package:com.qualcomm.timeservice
package:com.qualcomm.atfwd
package:com.qualcomm.embms
package:com.android.providers.contacts
package:com.android.captiveportallogin
package:org.codeaurora.qti.nrNetworkSettingApp

删除编译生成的APK

# test
rm -rf out/target/product/msm8953_64/vendor/app/QSensorTest/QSensorTest.apk
rm -rf out/target/product/msm8953_64/system/app/EmbmsTestApp/EmbmsTestApp.apk
rm -rf out/target/product/msm8953_64/system/app/ModemTestMode/ModemTestMode.apk

# bluetooth
rm -rf out/target/product/msm8953_64/system/app/BluetoothExt/BluetoothExt.apk
rm -rf out/target/product/msm8953_64/system/priv-app/BATestApp/BATestApp.apk
rm -rf out/target/product/msm8953_64/system/app/BTTestApp/BTTestApp.apk
rm -rf out/target/product/msm8953_64/system/app/HidTestApp/HidTestApp.apk

# web
rm -rf out/target/product/msm8953_64/system/app/webview/webview.apk
rm -rf out/target/product/msm8953_64/system/app/HTMLViewer/HTMLViewer.apk

不编译APK

1. 统一配置

去除选项
# build/make/target/product/core.mk
# device/qcom/common/base.mk

2. 修改单个APK的Android.mk

把
LOCAL_MODULE_TAGS := debug # 在debug模式下编译,改成不是debug模式,就不会编译
改成
LOCAL_MODULE_TAGS := samples

# 跳过
LOCAL_OVERRIDES_PACKAGES := APP Name

谷歌APP

# 删除APK
Browser2         # 浏览器
Calendar         # 日历
Email            # 邮件
ExactCalculator  # 精确计算器
PrintSpooler     # 打印
QuickSearchBox   # 谷歌搜索

vi device/qcom/common/base.mk
vi build/make/target/product/core.mk

高通APP

# 查找APK
find out/target/product/msm8953_64/system/app/ -name  "QSensorTest.apk"

# 查找mk文件
find . -type f -name \*.mk | xargs grep TestApp -in
find . -type f -name \*.mk | xargs grep BATestApp -in
find . -type f -name \*.mk | xargs grep QSensorTest -in
find . -type f -name \*.mk | xargs grep EmbmsTestApp -in


# BluetoothExt.apk
cat vendor/qcom/opensource/commonsys/bluetooth/hidtestapp/Android.mk
cat vendor/qcom/opensource/commonsys/bluetooth/bttestapp/Android.mk
cat vendor/qcom/opensource/commonsys/bluetooth_ext/BATestApp/Android.mk

# cat vendor/qcom/proprietary/prebuilt_HY11/target/product/msm8953_64/Android.mk

vendor/qcom/proprietary/sensors/QSensorTest/Android.mk

# vi vendor/qcom/proprietary/common/config/device-vendor.mk
# vi vendor/qcom/proprietary/prebuilt_HY11/target/product/msm8953_64/prebuilt.mk
改成simples

关闭系统服务

# frameworks/base/services/java/com/android/server/SystemServer.java

关闭服务
VibratorService          震动器服务
ClipboardService         粘贴板服务
FingerprintService       指纹

其他服务:
PowerManagerService      电源管理服务
BatteryService           电池服务,当电量不足时发广播
AlarmManagerService      闹钟服务  
WallpaperManagerService  壁纸管理服务
StatusBarManagerService  状态栏管理服务
注意:电源服务无法关闭

修改LOG打印级别

并发加载class和resource等资源

# frameworks/base/core/java/com/android/internal/os/ZygoteInit.java

Thread t1 = new Thread(new Runnable() {
    @Override public void run()
    {
        long startTimeThread = SystemClock.uptimeMillis();

        bootTimingsTraceLog.traceBegin("PreloadResources");
        preloadResources();
        bootTimingsTraceLog.traceEnd(); // PreloadResources

        Log.i(TAG, "thread:" + (SystemClock.uptimeMillis() - startTimeThread) + "ms.");
    }
});

t1.start();

//wait Thread complete.
try
{
    t1.join();
}
catch (InterruptedException e)
{
    e.printStackTrace();
}

注意:

  • 失败,不能创建线程,错误提示:java.lang.InternalError: Cannot create threads in zygote
  • 这里总共耗时2.5s左右

readahead机制预加载

测试

1. 关闭系统服务

操作

说明

备注

关闭系统服务

VibratorService 震动器服务

FingerprintService 指纹服务

ClipboardService 粘贴板服务

其他服务:

AlarmManagerService 闹钟服务

WallpaperManagerService 壁纸管理服务

StatusBarManagerService 状态栏管理服务

2. 显示

操作

说明

备注

关闭开机动画

企鹅LOGO

高通LOGO

Android LOGO

OK

开机显示自定义静态LOGO

OK

隐藏状态栏

下拉显示

OK

隐藏三大按钮

上拉显示

OK

删除谷歌搜索栏

OK

关闭电量显示和电量的监听

OK

开机不显示No SIM card 提示

OK

屏幕不休眠

OK

系统中文显示

OK

默认开启以太网

OK

3. 删除预装APP

操作

说明

备注

删除谷歌APP

Browser2.apk 浏览器

Calendar.apk 计算器

ExactCalculator.apk 计算器

Email.apk 邮箱

PrintSpooler.apk 打印

QuickSearchBox.apk 搜索

OK

删除高通APP

BluetoothExt.apk 蓝牙

BATestApp.apk 蓝牙

BTTestApp.apk 蓝牙

HidTestApp.apk 蓝牙

QSensorTest

EmbmsTestApp

OK

4. 其它

操作

说明

备注

修改LOG打印级别

4 4 1 4

OK

开机显示自定义动画LOGO