Adnroid m/mm/mmm相关编译命令
来源:互联网 发布:ubuntu 内核配置文件 编辑:程序博客网 时间:2024/04/27 18:02
Android 编译命令:
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:
1、在c源文件中,需要include头文件、定义宏
#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
- Adnroid m/mm/mmm相关编译命令
- m、mm、mmm编译命令
- Android模块编译:m/mm/mmm命令
- Android编译命令m, mm, mmm
- m、mm、mmm命令差异
- android的m、mm、mmm编译命令的使用
- android下m、mm、mmm编译命令的使用
- android下m、mm、mmm编译命令的使用
- android的m、mm、mmm编译命令的使用
- android的m、mm、mmm编译命令的使用
- android的m、mm、mmm编译命令的使用
- Android源代码编译命令m/mm/mmm/make分析
- android的m、mm、mmm编译命令的使用
- android的m、mm、mmm编译命令的使用
- Android源代码编译命令m/mm/mmm/make分析
- android的m、mm、mmm编译命令的使用
- Android源代码编译命令m/mm/mmm/make分析
- Android源代码编译命令m/mm/mmm/make分析
- ListView加载速度/性能优化方案分析
- 让忧伤远离自己
- Android启动流程
- Linux 压缩某个文件夹(文件夹打包)
- java程序环境的测试
- Adnroid m/mm/mmm相关编译命令
- 哈夫曼树
- Enumerate Tasks
- EOJ 1120 Peg Game
- 警用基站查询 产品介绍
- Oracle常用诊断事件
- vim单词高亮的功能
- 【2014-06-16】AntiSpy 2.2 (新增进程树模式,结束进程树等功能)
- PPPOE、Web+Portal、802.1x常见三种认证方式对比