当前位置:首页 » 编程软件 » 安卓只编译的选项

安卓只编译的选项

发布时间: 2023-01-09 20:29:03

⑴ 如何单独编译Android源代码中的模块

第一次下载好Android源代码工程后,我们通常是在Android源代码工程目录下执行make命令,经过漫长的等待之后,就可以得到Android系统镜像system.img了。以后如果我们修改了Android源代码中的某个模块或者在Android源代码工程新增一个自己的模块,是不是还是执行make命令呢?答案是否定的,Google为我们准备了另外的命令来支持编译单独的模块,以及重新打包system.img的命令。在继续学习Android源代码之前,就让我们先来看看这个命令吧。
一.首先在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:
USER-NAME@MACHINE-NAME:~/Android$../build/envsetup.sh
注意,这是一个source命令,执行之后,就会有一些额外的命令可以使用:
-croot:.
-m:Makesfromthetopofthetree.
-mm:.
-mmm:.
-cgrep:GrepsonalllocalC/C++files.
-jgrep:GrepsonalllocalJavafiles.
-resgrep:Grepsonalllocalres/*.xmlfiles.
-godir:.
这些命令的具体用法,可以在命令的后面加-help来查看,这里我们只关注mmm命令,也就是可以用它来编译指定目录的所有模块,通常这个目录只包含一个模块。
二.使用mmm命令来编译指定的模块,例如Email应用程序:
USER-NAME@MACHINE-NAME:~/Android$mmmpackages/apps/Email/
编译完成之后,就可以在out/target/proct/generic/system/app目录下看到Email.apk文件了。Android系统自带的App都放在这具目录下。另外,Android系统的一些可执行文件,例如C编译的可执行文件,放在out/target/proct/generic/system/bin目录下,动态链接库文件放在out/target/proct/generic/system/lib目录下,out/target/proct/generic/system/lib/hw目录存放的是硬件抽象层(HAL)接口文件。
三.编译好模块后,还要重新打包一下system.img文件,这样我们把system.img运行在模拟器上时,就可以看到我们的程序了。
USER-NAME@MACHINE-NAME:~/Android$makesnod
四.参照Ubuntu上下载、编译和安装Android最新源代码一文介绍的方法运行模拟器:
USER-NAME@MACHINE-NAME:~/Android$emulator
这样一切就搞定了。

⑵ androidstudio怎样设置只编译当前工程

具体如下:
setting(快捷键)–>Built,Execution,Deployment–>compiler 在make the project automatically(*)前面打钩.
自动编译意味着每次运行都能缩短很多时间哦,雷达下载更专业。

⑶ 如何单独编译安卓系统源码指定模块

1.make模块名称需要查看Android.mk文件的LOCAL_PACKAGE_NAME变量。2.mmm命令用于在源码根目录编译指定模块,参数为模块的相对路径。只能在第一次编译后使用。比如要编译Phone部分源码,需要在终端中执行以下命令:$mmmpackages/apps/phone3.mm命令用于在模块根目录编译这个模块。只能在第一次编译后使用。例如要编译Phone部分源码,需要在终端中执行以下命令:$cdpackages/apps/phone$mm注:mmm和mm命令必须在执行“.build/envsetup.sh”之后才能使用,并且只编译发生变化的文件。如果要编译模块的所有文件,需要-B选项,例如mm-B。

⑷ 如何定制android源码的编译选项

现仅就工作遇到的问题做个总结。所用硬件平台为amlogic stvm3。---------------------------------------------------------------------------关于版本号:文件build/core/version_defaults.mk用来检查一些跟版本相关的变量是否定义;如果未定义,则使用默认值。这些变量包括 PLATFORM_VERSION # 如 2.2.5 PLATFORM_SDK_VERSION # 8, 对应2.2.5 PLATFORM_VERSION_CODENAME # REL,即发行版 DEFAULT_APP_TARGET_SDK # 同SDK_VERSION或VERSION_CODENAME BUILD_ID # 默认为UNKNOWN BUILD_NUMBER # 默认eng.$(USER).$(shell date +%Y%m%d.%H%M%S)的形式。 version_defaults.mk首先包含进build_id.mk。用户应当配置build_id.mk,而不应该改动version_defaults.mk文件。然后检查上述变量,如未定义则赋值默认值。---------------------------------------------------------------------------关于调试功能(adb)的开启编译android源码之前总是要先运行build/envsetup.sh,以初始化一些常用命令(实际上是bash的函数,如add_lunch_combo)。其中也从以下文件中引入了一些编译设置: device/${CHIPSET_VENDOR}/vendorsetup.sh我们这里使用的CHIPSET_VENDOR为amlogic。比如我们有文件device/amlogic/vendorsetup.sh,内容为"产品名-编译类型(flavor)"列表(称为combo),如下: add_lunch_combo m1ref-eng add_lunch_combo m1ref-user add_lunch_combo m2ref-eng add_lunch_combo m2ref-user add_lunch_combo stvm3-eng add_lunch_combo stvm3-user其中,m1ref和stvm3是产品名(作前缀),后面为编译类型。除此前缀外可选的combo值有: eng, user, userdebug, tests。(参考文件build/core/main.mk中对于变量TARGET_BUILD_VARIANT的筛查条件)我们可以修改vendorsetup.sh文件,来改变为特定设备编译的结果。以下是各个编译类型的特点: eng: 工程模式,用于平台级的调试,是默认的编译类型。

⑸ 安卓系统APK反编译的问题——设置里添加新选项

我想问如何在一个已经编译的软件里添加新的事件(不是res)(不是我写的软件,没有源码)
我想你这个情况,应该换上原来的签名试试,我反编译改的都是res,不懂添加新的事件,只改res,就必须用原来的签名,

⑹ Android 编译选项user,userdebug和eng的区别

这我也不太懂,大概记得这样情况、
1、user:只有在user版本时该模块才被编译进去;
2、eng:只有在eng版本时该模块才被编译进去;
3、test:只有在tests版本时该模块才被编译进去;

⑺ 如何单独编译安卓系统源码指定模块

Android源码目录下的build/envsetup.sh文件,描述编译的命令

- m: Makes from the top of the tree.

- mm: Builds all of the moles in the current directory.

- mmm: Builds all of the moles in the supplied directories.

要想使用这些命令,首先需要在android源码根目录执行. build/envsetup.sh 脚本设置环境

m:编译所有的模块

mm:编译当前目录下的模块,当前目录下要有Android.mk文件

mmm:编译指定路径下的模块,指定路径下要有Android.mk文件

下面举个例子说明,假设我要编译android下的\hardware\libhardware_legacy\power模块,当前目录为源码根目录,方法如下:

1、. build/envsetup.sh

2、mmm hardware/libhardware_legacy/power/

编译完后 运行 make snod

会重新将你改过的模块打入到system.img中

⑻ 如何单独编译安卓系统源码指定模块

例如:你不想编译music进image中,你就在该文件里PRODUCT_PACKAGES:=这一项下的Music删除就可以了同理,你想把自己的app编译进image中,你先写好编译用的Android.mk文件,然后去到上面所说的文件里在PRODUCT_PACKAGES:=这一项添加对应的app包名一般来说,只要改这么一个文件就足够了。但是如果以上编译后发现还是编译到了image里面,那么它很有可能是一个已经编译好的apk文件预装到image里面去了,也是以我的sdk为例,进入device/产品目录/common/apk下看看有没有.apk文件,我的sdk里面这个目录下的.apk文件是全部预装到system/app里面的还有一个目录:/device/产品目录/common/preinstallapk这个目录里的apk也是预装到image里面去,只是并不是预装到system/app而已也就是说,你还要看看你不想编译进image里的app是不是预装进去,如果是预装进去的话,只要在对应目录下把该apk文件删除了就好了希望这些能帮到你!

热点内容
java返回this 发布:2025-10-20 08:28:16 浏览:593
制作脚本网站 发布:2025-10-20 08:17:34 浏览:888
python中的init方法 发布:2025-10-20 08:17:33 浏览:582
图案密码什么意思 发布:2025-10-20 08:16:56 浏览:765
怎么清理微信视频缓存 发布:2025-10-20 08:12:37 浏览:684
c语言编译器怎么看执行过程 发布:2025-10-20 08:00:32 浏览:1013
邮箱如何填写发信服务器 发布:2025-10-20 07:45:27 浏览:255
shell脚本入门案例 发布:2025-10-20 07:44:45 浏览:114
怎么上传照片浏览上传 发布:2025-10-20 07:44:03 浏览:806
python股票数据获取 发布:2025-10-20 07:39:44 浏览:713