android make编译的那些事

首先要理解编译三个m的含义:
m,是make
mm ,在编译单一模块的时候可以在当前目录下使用
mmm 编译指定目录

其中mmm后面要跟模块的根目录,不是所有的目录下都有子模块,那些含有Android.mk档案目录才是模块的根目录。

1、单独编译某模块,需要在mmm后面指定模块路径
如:mmm frameworks/base/native/video/jni 

2、或者可以跳转到你想编译模块相对应目录下执行“mm”命令。
           就可以编译单独的模块,事实上,这个命令与mmm命令没有本质的区别。

3、用 m 编译全部的模块 
         也可以在src目录下直接执行

修改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就可以在模拟器上看到你修改的效果了。

修改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分钟

不是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

时间: 2024-11-03 19:00:38

android make编译的那些事的相关文章

Android反编译看看手Q口令红包的实现原理_Android

首篇作为开始,先讲讲简单的反编译.反编译通常有几种目的:互相学习.借来用用.嘿嘿(干你,又分为小干干类似微信红包,和大干干改别人的apk帮他上架). 因为没带kvm回来,mbpr屏幕太小,所以下文环境为windows. 一.反编译 让我们从实战开始,先实践一下怎么去反编译一个apk,看看某些功能的实现.毕竟没有实践的原理都是耍流氓. 这里我们保留互相学习的心态,所以是友善的第一种目的,嘻嘻. 1.准备 工具 Apktool jadx(新一代反编译大杀器) 安装包 手机QQ 6.2.3 (目标就设

我的Android进阶之旅------&amp;gt;解决Android Studio编译后安装apk报错:The APK file does not exist on disk

1.错误描述 今天用Android Studio编译应用后安装APK的时候,报错了,错误如下所示: The APK file build\outputs\apk\OYP_2.3.4_I2Base_6476_official_debug.apk does not exist on disk. Error while Installing APK 如下图所示 2.解决方法 1.尝试了Build -> Clean Project再编译,还是无效 2.尝试重启Android Studio无效 然后我去打

Mac下设置Android源代码编译环境

在Mac下编译Android最麻烦的就是设置Android的编译环境了,做完这一步基本上剩下的就是近乎傻瓜式的操作了.说起来也简单就三步,设置大小写敏感的文件系统.安装编译工具.设置文件系统同时能打开的数量. 默认情况下,Mac OS运行在不区分大小写的文件系统上,git对这类型的文件系统支持不太好,有可能会导致git命令运行出错(比如git status).因此,我们推荐在一个区分大小写的文件系统中,做与AOSP相关的操作.这很容易就可以用磁盘映像(disk image)做到,下面会讨论到.

Android中编译工具链的改动----LLVM份量的增加

作者:史宁宁 -----------------------------------------------------------------------------------转载请注明出处---------------------------------------------------------------------------------        最近,Android中的编译工具链发生了改动,这个改动是Android的runtime(也可以说是VM,这两种说法在Google

android 编译 l mtk-mtk 6580 Android L1 编译报错

问题描述 mtk 6580 Android L1 编译报错 最近公司要用MTK 6580 5.1进行开发,编译代码的时候出现以下编译错误 target Symbolic: libdl (out/target/product/generic/symbols/system/lib/libdl.so) target Prebuilt: tzdata (out/target/product/generic/obj/ETC/tzdata_intermediates/tzdata) make: *** 没有

响应事件-android studio编译无错误,运行时显示,但点击button不响应按键事件

问题描述 android studio编译无错误,运行时显示,但点击button不响应按键事件 原因:自从Android 3.2(API 13),screen size也开始跟着设备的横竖切换而改变.这会导致activity重新加载方法:在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设 置""orientation"",你

android ocr编译及如何使用的问题

问题描述 android ocr编译及如何使用的问题 各位大侠,我依据tess-two中的方法进行编译,执行android update project --path .时提示-bash: android: command not found,这个问题应该如何解决?还有现在我把tess-two和eyes-two导入eclipse,但不知道再如何做,麻烦大家给我指导下,谢谢了. 解决方案 新建一个测试工程,将编译好的Library以properties->android->add的方式将库添加到

android studio编译错误 问题

问题描述 android studio编译错误 问题 Error:Execution failed for task ':app:processReleaseResources'. com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command 'C:FAndroidStudioSDKuild-tools22.0.1aapt.exe'' fin

配置-Android studio 编译失败

问题描述 Android studio 编译失败 Gradle的环境变量已经配置了啊,求教这是哪里出了问题呢? 解决方案 提示你资源文件的路径不正确.检查下路径看看. 解决方案二: 要么路径不对,要么gradle中的sdk版本和你用的版本不一致,总之android studio这块挺烦人