一、fastboot刷机
首先安装adb和fastboot
sudo apt-get install android-tools-adb android-tools-fastboot
进入Fastboot模式
首先,确保你的手机能够adb连接,然后通过adb执行如下指令进入Fastboot模式,命令如下:
1
| sudo adb reboot-bootloader
|
稍等片刻,手机会重启进入Fastboot模式,查看通过如下命令进行确认:
刷img文件
- 刷boot.img指令
1
| sudo fastboot flash boot boot.img
|
- 刷system.img指令
1
| sudo fastboot flash system system.img
|
- 刷userdata.img指令
1
| sudo fastboot flash userdata userdata.img
|
- 重启手机即可
二、系统编译
编译系统-全编
1.安装软件
1 2 3
| sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev libc6-dev lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc
|
2.安装openJDK
1 2 3
| sudo add-apt-repository ppa:openjdk-r/ppa sudo apt-get update sudo apt-get install openjdk-8-jdk
|
如果你已经安装openJDK7或其他,可以使用下面命令修改
1
| sudo update-alternatives
|
3.编译系统
1 2 3 4
| 1、source build/envsetup.sh 2、lunch 3、make –j8
|
然后请等待编译结束,编译完成后在/out/target/product/msm8953_64/下找到对应的img文件
编译系统-模块编译
1 2 3
| make update-api
make systemimage -j8
|
单模块编译
修改应用源码
例如修改了设置Settings代码,可以单独编译Settings的源码,编译出Settings.apk验证
1 2 3
| cd packages/apps/Settings/
mm
|
编译完成后
1 2 3 4
| adb root adb remount adb push Settings.apk /system/priv-app/Settings/ adb reboot
|
修改源码framework后编译
- framework/base/core/res/res下添加或修改资源文件后需要先编译资源,然后编译framework 才可正常引用。
1 2
| cd frameworks/base/core/res/ mm
|
- 编译 framework.jar
如果 frameworks/base/services 下有修改,则要编译frameworks/base/services/java/ 执行mm ,编译 services.jar
执行如下命令
1 2 3 4
| adb remount adb push framework-res.apk /system/framework/ adb push framework.jar /system/framework/ adb push services.jar /system/framework/ (如果有修改的话)
|
- push后,可以cd system/framework 进入目录,以ll命令确认下是否push成功。
- adb reboot 重启设备。
三、系统定制
1 Launcher过滤App
LauncherMode.java 中有一个loadAllApps函数,Launcher在其中加载所有App
1 2 3 4 5 6 7 8 9 10
| for (int i = 0; i < apps.size(); i++) { LauncherActivityInfoCompat app = apps.get(i); Log.e(TAG,"loadAllPackages ="+app.getComponentName().getPackageName()); if(app.getComponentName().getPackageName() == "com.android.settings" || app.getComponentName().getPackageName().contains("decard")){ Log.e(TAG,"settings || decard"); mBgAllAppsList.add(new AppInfo(mContext, app, user, mIconCache, quietMode)); } }
|
2 去除抽屉
Android7.1 Launcher3去除抽屉
3 添加自定义系统服务
Android 添加自定义系统服务