安卓系统开发编译模块代码

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即可

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值