m,mm,mmm的用法
1、 修改APK应用:在packages中的应用如果修改后都可以单独编译。先执行
$. build/envsetup.sh #初始化
$mmm packages/providers/ContactsProvider/
##用mm/mmm来编译生成的.apk并不会打包到system.img中,需要我们手动通过make snod把system文件夹打包为system.img
##可以使用make snod将模块打包到system.img中,也可以使用 adb install *.apk安装
注:通过mmm packages/providers/ContactsProvider/ 编译后的apk在 out/target/product/generic/system/app
这时候通过 adb install out/target/product/generic/system/app/xxx.apk 安装你刚修改过的apk就可以在模拟器上看到你修改的效果了。
adb push方式进去:
adb shell mount -o rw,remount -t ext3 /dev/block/mmcblk0p2 /system 挂载并获取写入权限
adb push xxx.apk /system/app
修改framework:如果在Contacts.java中修改了,必须重新编译下framework。先执行
$ . build/envsetup.sh #初始化
#网上有的说要执行 make update-api,实际上直接make PRODUCT-sdk-sdk就可以将修改后的framework编译到sdk中。 #编译framework后,那些修改了的应用可以不用再单独编译了。4~6分钟
$ make PRODUCT-sdk-sdk #重新生成SDK 10~20分钟
2.三个m的含义
以下是在help中看到的信息
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory.
- mmm: Builds all of the modules in the supplied directories.
m,显然是make
mm ,在编译单一模块的时候可以在当前目录下使用
mmm 可以在android目录下使用
3、不是android的一个,但是经常用。make 2&>txt
将make的信息输出到txt中,如果make > txt则无法输入
Linux Shell 环境中支持输入输出重定向,用符号"<"和">"来表示。0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出
make &>test
表示标准和错误全部输出
4、make -n &>txt
make -n 是现实编译命令,但是不去执行,非常有用
5.显示详细的编译过程信息(ndk)
在definitions.mk中有定义。
ifeq ($(V),1)
hide = $(empty)
else
hide = @
endif
要想把所有的编译命令输出来,只需要先export V=1就可以了。
输出NDK详细log
$NDK/ndk-build V=1 2>&1 | tee log.txt
Android NDK 打印log
#define LOG_TAG "TestLib" //自定义的变量,相当于logcat函数中的tag
#undef LOG
#include <android/log.h> //#include <utils/Log.h>//在源码环境中,头文件的路径不同
#define LOGD(...) __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
可以定义多种log级别,在log.h中可以看到:
typedef enum android_LogPriority {
ANDROID_LOG_UNKNOWN = 0,
ANDROID_LOG_DEFAULT, /* only for SetMinPriority() */
ANDROID_LOG_VERBOSE,
ANDROID_LOG_DEBUG,
ANDROID_LOG_INFO,
ANDROID_LOG_WARN,
ANDROID_LOG_ERROR,
ANDROID_LOG_FATAL,
ANDROID_LOG_SILENT, /* only for SetMinPriority(); must be last */
} android_LogPriority;
2. 在c源文件中,调用输入log的函数
LOGD("Hello LIB!\n");//将会输出“TestLib” “Hello LIB!”
3.在mk文件中,需要包含响应的库
LOCAL_C_INCLUDES := $(JNI_H_INCLUDE) //包含相应的头文件
LOCAL_LDLIBS := -llog //包含打印log需要的库文件
LOCAL_PRELINK_MODULE := false
m,mm,mmm的用法的更多相关文章
- 【转】Android源代码编译命令m/mm/mmm/make分析--不错
原文网址:http://blog.csdn.net/luoshengyang/article/details/19023609 在前文中,我们分析了Android编译环境的初始化过程.Android编 ...
- android平台的三个编译命令——make,mm,mmm
在Android源码根目录下,执行以下三步即可编译android: 1. build/envsetup.sh #这个脚本用来设置android的编译环境; 2. lunch #选择编译目标 3 ...
- 3.求m+mm+mmm+…+m…m(n个)的和,其中m为1~9之间的整数。 例如,当m=3、n=4时,求3+33+333+3333的和。
package a; public class QiuHe { private int m; private int n; public int getM() { return m; } public ...
- Android编译执行envsetup.sh,产生工具命令m、mm、mmm、mmma、tapas 、croot、cgrep、jgrep、 resgrep、godir
一般来说编译一个sdk或者一个比较大的工程项目,第一步都是执行 envsetup.sh这个脚本,比如编译android,qt源码以及其他一些嵌入式的sdk. 而且执行的时候需要特别注意使用 sourc ...
- Android 系统(64)---Android中m、mm、mmm、mma、mmma的区别【转】
本文转载自:https://blog.csdn.net/zhangbijun1230/article/details/80196379 Android中m.mm.mmm.mma.mmma的区别 m ...
- Android 编译时:m、mm、mmm、mma、mmma的区别
m:编译整个安卓系统 makes from the top of the tree mm:编译当前目录下的模块,当前目录下需要有Android.mk这个makefile文件,否则就往上找最近的Andr ...
- Android中m、mm、mmm、mma、mmma的区别
m:编译整个安卓系统 makes from the top of the tree mm:编译当前目录下的模块,当前目录下需要有Android.mk这个makefile文件,否则就往上找最近的Andr ...
- Delphi Format函数功能及用法详解
DELPHI中Format函数功能及用法详解 DELPHI中Format函数功能及用法详解function Format(const Format: string; const Args: array ...
- mmm和mmma的区别
m:编译整个安卓系统 makes from the top of the tree mm:编译当前目录下的模块,当前目录下需要有Android.mk这个makefile文件,否则就往上找最近的Andr ...
随机推荐
- 重装系统之后Hexo快速配置
安装准备软件 Node.js Git 打开 Git Bash hexo文件夹,右键: 配置SSH Keys 检查SSH keys设置,看一下电脑现有的ssh key cd ~/. ssh 检查本机的s ...
- linux下合并pdf
使用Gost Script和 PDFtk运行如下命令: #gs -q -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=Linuxidc.pdf -dBATCH *.p ...
- if语句—交互程序二
参考:<笨方法学Python>—习题31 用了两个嵌套的if语句! # coding: utf-8 print u"欢迎来到玩家国度, 你需要根据提示完成闯关!" # ...
- 笨方法学python--提示别人
1 上次学到使用raw_input(), 还可以如下使用: age = raw_input("age?") 2 命令名查看raw_input的说明 unit, pydoc raw_ ...
- MS13-069(CVE-2013-3205) CCaret use-after-free Vulnerability Analysis (2014.9)
MS13-069(CVE-2013-3205) CCaret use-after-free Vulnerability Analysis 1. Introduction In IE's standar ...
- IOS 导出ipa文件方法
1.首先打开项目,Device选项栏选择“Generic iOS Device”.如下图所示: 2.选择屏幕上方的“product”并点击打开,选择“Archive”并点击打开,程序就会自动运行,运行 ...
- OBIEE 简介
Oracle BIEE历史: BIEE:全称Oracle Business Intelligence Enterprise Edition. Oracle公司在05年底收购Siebel,取其前端开发工 ...
- OLEDB和ODBC的区别
ODBC(开放数据库互连):是Microsoft引进的一种早期数据库接口技术.它实际上是ADO的前身.早期的数据库连接是非常困难的. 每个数据库的格式都不一样,开发者得对他们所开发的每种数据库的底层A ...
- DOM操作-遍历一个元素的所有属性
代码: <!DOCTYPE html> <html> <head> <title>遍历打印一个元素的所有属性</title> <met ...
- hdu_5795_A Simple Nim(打表找规律的博弈)
题目链接:hdu_5795_A Simple Nim 题意: 有N堆石子,你可以取每堆的1-m个,也可以将这堆石子分成3堆,问你先手输还是赢 题解: 打表找规律可得: sg[0]=0 当x=8k+7时 ...