android 默认编译步骤
1.source build/envsetup.sh
2.lunch
3.kheader(mtk不用)
4.make -j8
5.make -j8 2>&1 |tee log.txt
编译某个文件夹
cat make.ini
source build/envsetup.sh
lunch 选择版本
mmm frameworks/base/
mmma packages/apps/Launcher3 加a,查找单编译项目的所有模块
导出打包
source build/envsetup.sh
cat make.ini
lunch
23
kheader
source **********_Benga_324_QHD_NOGPS_B1.sh ide
改模块,烧到手机
改的是xml文件,更新下
find frameworks/base/packages/SettingsProvider/* -exec touch {} \;
find frameworks/base/packages/SettingsProvider/ -exec touch {} \;(删除apk,刷新)
单编模块
mmm frameworks/base/packages/SettingsProvider/
make snod 打包到img下(user版本 必须的操作)
android.mk文件
应用程序名称用LOCAL_PACKAGE_NAME,生成的模块的名称用LOCAL_MODULE
LOCAL_PATH:=$(call my-dir)(由于一般情况下Android.mk和需要编译的源文件在同一目录下)( 将LOCAL_PATH变量定义成 本文件所在 目录路径)
每个编译模块 都是 以include $(CLEAR_VARS)开始,以include $(BUILD_XXX)结束。
BUILD_PACKAGE 建立一个APK
include $(CLEAR_VARS)(指定让GNU MAKEFILE为你 清除 除LOCAL_PATH以外 的所有LOCAL_XXX变量)
LOCAL_SRC_FILES,app的所有源码,可以 指定 具体的 文件,如果是java源码的话,可以调用all-java-files-under得到。
LOCAL_MODULE_TAGS := user eng tests optional
user: 指该模块只在user版本下才编译
eng: 指该模块只在eng版本下才编译
optional:指该模块在 所有版本下都编译,默认是optional
LOCAL_CERTIFICATE := platform //指定 使用的哪种key 来给apk签名,platform 就是 指 用 platform.pk8和platform.x509.pem两个文件 来 签名。用这两个key签名后apk才真正可以放入系统进程中;
include $(BUILD_PACKAGE)编译一个应用程序(APK)
include $(BUILD_STATIC_LIBRARY)表示编译成静态库,后缀为.a。
include $(BUILD_SHARED_LIBRARY)表示编译成动态库,用来指示将当前模块编译为共享库,前缀为lib,后缀为.so。
include $(BUILD_EXECUTABLE)表示编译成可执行程序
include $(call all-subdir-makefiles),它的作用就是包含所有子目录中的Android.mk文件