Android编译命令

一、全部编译:

1、source build/envsetup.sh
初始化编译环境。

2、lunch sl8541e_1h10_oversea-user/userdebug
指定目标编译设备和编译类型,选择对应项目工程user是发布版本,userdebug是调试版本。

3、make -j12 2>&1 | tee build.log
-JX X表示数字,X表示可以使用CPU核数,build.log 查看编译信息。
cat /proc/cpuinfo | grep processor | wc -l 该linux命令可以查询服务器支持多少核。
该命令可以编译完整的android镜像文件包。

4、make -j12 otapackage 2>&1 | tee buildota.log
编译ota包

5、ota包制作命令:
./build/tools/releasetools/ota_from_target_files -i old.zip new.zip update.zip

二、模块编译:

1、apk模块编译
指令:mmm [module_path ] 解释: 编译指定路径下所有模块,但不包含依赖模块
列如:mmm packages/apps/Launcher3/ 编译Launcher3 模块
生成路径out\target\product\sl8541e_1h10\system\priv-app\Launcher3\Launcher3.apk

指令:mm 编译当前路径下所有模块,但不包含依赖模块
列如:cd packages/apps/Launcher3/ mm 在当前路径下编译模块

使用adb 工具可快速验证修改:
列如:
1、adb root 2、adb remount
3、adb push out\target\product\sl8541e_1h10\system\priv-app\Launcher3\Launcher3.apk system/priv-app/Launcher3/
4、adb shell stop 5、adb shell start
或者覆盖安装验证
adb install -r out\target\product\sl8541e_1h10\system\priv-app\Launcher3\Launcher3.apk

使用make snod 打包验证
由于launcher3 属于system镜像分区,我们可以使用make snod 进行重新打包烧录验证。

2、preloader编译
make -j24 pl 2>&1 | tee pl.log preloader
可实现更新logo bin文件的目的。

3、lk编译
make lk

4、kernel编译
make kernel

5、userdataimage编译
make userdataimage

6、vnod编译
make vnod

7、几个主要模块编译调试
在这里插入图片描述

三、其他指令

  make clean  等同于rm -rf out/
  make update-api 更新api文件
  update-modem

代码搜索:
在这里插入图片描述

四、Android.mk

Android.mk是Android工程管理文件,类似于编译文件的说明书,用来向编译系统描述源代码,并将源文件分组为模块(包括静态库、共享库、独立可执行文件)。Android.mk会被编译系统解析一次或多次,可以在每一个Android.mk文件中定义一个或多个模块,也可以多个模块使用同一个 .mk 文件

#定义当前模块的位置
LOCAL_PATH := ( c a l l m y − d i r ) L O C A L P A T H 是表示当前模块位置的变量, m y − d i r 是由系统提供的宏函数,返回当前文件所在的路径, (call my-dir) LOCAL_PATH 是表示当前模块位置的变量,my-dir 是由系统提供的宏函数,返回当前文件所在的路径, (callmydir)LOCALPATH是表示当前模块位置的变量,mydir是由系统提供的宏函数,返回当前文件所在的路径,(call my-dir) 表示调用这个函数

#清除LOCAL_XXX变量
include $(CLEAR_VARS)
这句代码清除了 LOCAL_PATH 变量之外的 LOCAL_XXX 变量。所有的编译控制文件都在同一个GNU MAKE执行环境中,所有的变量都是全局的,在编译该模块之前可能编译过别的模块,产生了大量变量,会被系统误认为是属于该模块的,可能产生不可预知的错误。

#代表需要编译的文件
LOCAL_SRC_FILES :=$(call all-subdir-java-files)
all-subdir-java-files 函数返回LOCAL_PATH 子目录的所有java文件。
也可以直接写出需要编译的文件路径:
LOCAL_SRC_FILES :=com/android/launcher/Launcher.java
几个常用的获取源文件的方法:
$(call all-java-files-under, src) :获取指定目录下的所有 Java 文件。
$(call all-c-files-under, src) :获取指定目录下的所有 C 语言文件。
$(call all-Iaidl-files-under, src) :获取指定目录下的所有 AIDL 文件。
$(call all-makefiles-under, folder):获取指定目录下的所有 Make 文件。

#代表需要编译资源文件
LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res

#定义编译生成的模块名称
LOCAL_MODULE := Launcher3
Launcher3变量必须定义且唯一,作为模块的标识,编译系统会自动产生合适的前缀和后缀。

#签名属性
LOCAL_MODULE_TAGS := optional
常用的有:debug, eng, user,development 或者 optional(默认)。

#指定签名
LOCAL_CERTIFICATE := platform
platform:该 APK 完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试。
shared:该APK需要和 home/contacts 进程共享数据。
media:该APK是 media/download 系统中的一环。

#混淆代码
LOCAL_PROGUARD_FLAG_FILES := proguard.flags
proguard.cfg:是一个混淆文件
disabled:是不混淆

#编译apk
include $(BUILD_PACKAGE)
include $(BUILD_STATIC_LIBRARY) :编译成静态库
include $(BUILD_SHARED_LIBRARY) :编译成动态库
include $(BUILD_EXECUTABLE) :编译成可执行程序
include $(BUILD_STATIC_JAVA_LIBRARY) :编译成Java静态库

#代表APK生成的目录
LOCAL_MODULE_PATH:=$(TARGET_OUT)
通过 LOCAL_MODULE_PATH 变量,可以指定生成的 apk 目录
$(TARGET_OUT)代表 /system ,后续路径按需要补充完整
$(TARGET_OUT_DATA_APPS) 代表 data/app 目录

#表示APP生成在system/priv-app/目录下
LOCAL_PRIVILEGED_MODULE := true

#需要进行预编译的库
include $(CLEAR_VARS)
LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := libarity:arity-2.1.2.jar
include $(BUILD_MULTI_PREBUILT) 拷贝到本地编译

#引用静态jar库
LOCAL_STATIC_JAVA_LIBRARIES:= libarity

#这个表示获取当前目录以及子目录下的android.mk文件
include ( c a l l a l l − m a k e f i l e s − u n d e r , (call all-makefiles-under, (callallmakefilesunder,(LOCAL_PATH));

#代表不提取odex
LOCAL_DEX_PREOPT=false

#去掉某某APK
LOCAL_OVERRIDES_PACKAGES:= AlarmClock

#aapt 是Android Asset Packaging Tool的缩写,是编译和打包资源的工具。而aapt2是在aapt上做了优化。
LOCAL_USE_AAPT2 := true

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值