m 在源码树的根目录下执行编译
mm 编译当前路径下所有的模块,但不包含依赖
mma 编译当前路径下所有模块,且包含依赖
mmm 编译指定路径下所有的模块,但不包含依赖
mmma 编译指定路径所有的模块,且包含依赖
make 在源码树根目录下执行,自动寻找该模块,省略名称默认全编
mmm 和 mm 区别:
mmm package/apps/DeskClock
cd package/apps/DeskClock ,然后再mm
source build/envsetup.sh 在你需要编辑的根目录下输入如下命令初始化环境
lunch 选择你需要的模块:如:32.lito-userdebug
make -j16 Gallery2 执行指定的模块 -jx # x指线程数,一般写8 Gallery2指定的某个模块,切记一定要写正确,不然会报错,如果不写整个项目都会编辑
make Launcher3QuickStepGo 快速编译某个模块
单编framework下的资源文件 make framework-res adb push framework-res.apk /system/framework
Android编译详解之lunch命令_不喜欢debug的疯子-CSDN博客_lunch命令
1> source build/envsetup.sh:加载命令
2> lunch:选择平台编译选项
3> make:执行编译
无法下载XML::Simple时,可以使用以下指令
sudo apt install libxml-simple-perl
通过命令编辑生成的APK位置:/media/longchengbin/projects/M10/out/target/product/lito/system/product/app/Gallery2
source build/envsetup.sh
lunch
mmm development/tools/idegen/
这行命令的意思是编译idegen这个模块项目,然后生成idegen.jar文件(可以自己去查看这个模块的Android.mk的目标)。
运行完以后如果看到如下信息则说明编译OK:#### make completed successfully (7 seconds) ####
接着执行如下脚本:
./development/tools/idegen/idegen.sh
这行命令的意思是在根目录生成对应的android.ipr、android.iml IEDA工程配置文件。等待片刻得到类似如下信息说明OK:
Read excludes: 21ms
Traversed tree: 194799ms
+++++++++++++++++++++++++++++++++ push/pull APK +++++++++++++++++++++++++++++++++
cd system/priv-app/ 包括Launcher,systemui, settingsprovider等,均是系统的核心应用
ls -la
cd system_ext/priv-app/
1、获得root权限:adb root
2、设置/system为可读写:adb remount
3、将PC机上文件复制到手机:adb push 文件名 /system/lib
adb push ad\ /sdcard/1/cd 复制ad目录的内容到目录1下的cd目录
+++++++++++++ 完整流程+++++++++++++++
adb shell 进入shell状态
如果该程序正在运行,就要执行这步:
ps -A |grep xx(对应的进程名字,如:Launcher3QuickStep) 查看其进程号
kill xxx(进程号如:26438) 然后kill
查找你要push的APK所在的位置:现进入shell状态
cd xx(某个目录如:system_ext)
find -name xx*(模糊查询某个文件,如xx名为Launcher3QuickStep,* 代表模糊查询)
eg:
A101LV:/system_ext # find -name Launcher3QuickStep*
./priv-app/Launcher3QuickStep
./priv-app/Launcher3QuickStep/oat/arm64/Launcher3QuickStep.vdex
./priv-app/Launcher3QuickStep/oat/arm64/Launcher3QuickStep.odex
./priv-app/Launcher3QuickStep/Launcher3QuickStep.apk
退出shell 输入:exit或者点击按键ctrl+D
最后:adb push (apk目录) (系统目录)
adb push Launcher3QuickStep.apk /system_ext/priv-app/Launcher3QuickStep/ (刚刚查找出的文件所在位置)
+++++++++++++++++++++++ 快速编译模块 +++++++++++++++++++++++++
每次拉取最新代码之后 ,如果快编失败,可能最新代码新增了一些xml。这个时候先make这个模块,成功之后下次再编译就可以使用快编指令了
每次关掉终端之后重新打开都要做这个操作:
source build/envsetup.sh
lunch xx
SBM:
. /prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-ax3522_sbm.ninja +模块名
PRC:
. /prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-ax3522_prc.ninja +模块名
ROW:
. /prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-ax3522_row.ninja +模块名
lito:
. /prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-lito.ninja +模块名
如:
. /prebuilts/build-tools/linux-x86/bin/ninja -f out/combined-lito.ninja LearningMode
mmm frameworks/base/services/
编译后导出的jar包位置:/media/longchengbin/LCBDisk/M10/out/target/common/obj/JAVA_LIBRARIES
# 整编
ubuntu@ubuntu:~$ ./vendor/huaqin/build/build-lito-userdebug-factory.sh
# PRC:
ubuntu@ubuntu:~$ ./vendor/huaqin/build/build-ax3522_prc-userdebug-factory.sh
# ROW:
ubuntu@ubuntu:~$ ./vendor/huaqin/build/build-ax3522_row-userdebug-factory.sh
# SBM:
ubuntu@ubuntu:~$ ./vendor/huaqin/build/build-ax3522_sbm-userdebug-factory.sh
模糊查询
模糊查询:find -name 关键词 如果在当前目录搜索需要加上引号,如:find -name '关键词'
find . -name(点代表当前目录)
path:要查找的目录路径。
~ 表示$HOME目录
. 表示当前目录
/ 表示根目录
1、按名字查找
在当前目录及子目录中,查找大写字母开头的txt文件 $ find . -name '[A-Z]*.txt' -print
在etc及其子目录中,查找host开头的文件 $ find etc -name 'host*' -print
查找vendor目录下的文件:compat_framework_overrides.xml
find vendor/ -name compat_framework_overrides.xml
在$HOME目录及其子目录中,查找所有文件 $ find ~ -name '*' -print
在当前目录及子目录中,查找不是out开头的txt文件 $ find . -name "out*" -prune -o -name "*.txt" -print
2、按目录查找
在当前目录除aa之外的子目录内搜索 txt文件 $ find . -path "./aa" -prune -o -name "*.txt" -print
在当前目录及除aa和bb之外的子目录中查找txt文件 $ find . −path′./dir0′−o−path′./dir1′−path′./dir0′−o−path′./dir1′ -a -prune -o -name '*.txt' -print
单编某个模块
单编:make SystemUI 代码路径:\nico\frameworks\base\packages\SystemUI adb push SystemUI.apk /system_ext/priv-app/SystemUI
生成包目录:/nico/out/target/product/ums9230_nico/system_ext/priv-app/SystemUI
单编: make services 代码Service路径:frameworks\base\services
生成包目录:out/target/product/qssi/system/framework/services.jar adb push services.jar /system/framework/
Settings adb push Settings.apk /system_ext/priv-app/Settings
SearchLauncher make SearchLauncherQuickStep adb push SearchLauncherQuickStep.apk /system_ext/priv-app/SearchLauncherQuickStep
Launcher3 make Launcher3 X:\nico\out\target\product\ums9230_nico_go\system_ext\priv-app\Launcher3
Launcher3Go make Launcher3Go X:\nico\out\target\product\ums9230_nico_go\system_ext\priv-app\Launcher3Go
获取某个包的信息:adb shell dumpsys package com.android.systemui
查找launcher思路: pm list package | grep launcher
package:com.android.theme.icon_pack.rounded.launcher
package:com.android.launcher3
package:com.google.android.overlay.gmsconfig.searchlauncherqs
package:com.sprd.powersavemodelauncher
package:com.android.overlay.launcher3
package:com.android.theme.icon_pack.filled.launcher
package:com.android.theme.icon_pack.circular.launcher
dumpsys package com.android.launcher3
要push这个Launcher3QuickStepGo.apk 非go版本push的是SearchLauncherQuickStep
单编framework下的资源文件
make framework-res adb push framework-res.apk /system/framework
单编core包资源
make framework-minus-apex 会生成system\framework\framework.jar
警告:不能push单一framework.jar包,要push整个framewok文件夹 adb push framework /system
单编go布局
GmsSampleIntegration: make GmsSampleIntegration(Go)
GmsSampleIntegrationGo_2GB:make GmsSampleIntegrationGo_2GB
如果单边某个模块不知道名称,先sourse再lunch再切到你修改代码的文件夹下输入mm即可