android:m/mm/mmm


from:http://www.cnblogs.com/sardine/archive/2011/07/07/2100054.html


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   //#include //在源码环境中,头文件的路径不同
   #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 分类: Android 绿色通道: 好文要顶 关注我 收藏该文 与我联系 nocky
关注 - 1
粉丝 - 1 +加关注 0 0 (请您对文章做出评价) « 博主前一篇: 【Android工具】UI检视利器:Hierarchy Viewer
» 博主后一篇: 如何移植library到Android
posted @ 2011-07-07 14:26 nocky 阅读(967) 评论(0) 编辑 收藏

更多相关文章

  1. android 自定义动画2
  2. Android(安卓)自定义EditText输入框 带清空按钮
  3. Android(安卓)Handler 绑定自定义线程之HandlerThread
  4. android 8.0 GMS 包移植过程回顾
  5. Android自定义Toast样式和时间
  6. android application access sdcard安卓应用访问sdcard
  7. Widget的点击事件
  8. Android常用的Gradle配置和加速编译
  9. ExpandableListView 和 ExpandableListActivity的使用及数据更新

随机推荐

  1. 详细分析sqlserver中的小数类型(float和de
  2. 详解SQL游标的用法
  3. SqlServer2000+ 身份证合法校验函数的示
  4. sql server通过pivot对数据进行行列转换
  5. vs code连接sql server数据库步骤及遇到
  6. sql server利用不同语种语言显示报错错误
  7. SQL Server 2019下载与安装教程(自定义安
  8. Sql server 2012 中文企业版安装图文教程
  9. CentOS8安装SQLServer2019的过程
  10. sql自动化检查和分析工具 之soar和soar-w