编译 Android 源码问题总结

本文总结了编译Android源码中关于framework/policies模块的步骤,包括修改Phone目录下Android.mk文件的细节,以及如何在Android.mk中添加自定义库的方法,为Android开发者提供参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

单独编译 framework/policies/ 模块

这个文件需要修改下Phone目录下的Android.mk文件:

  • 1、 将 android.policy_phone中的_phone删掉
  • 2、注释掉LOCAL_UNINSTALLABLE_MODULE := true 这句

修改后的文件内容如下:

LOCAL_MODULE := android.policy
#LOCAL_UNINSTALLABLE_MODULE := true

这样就可以编译出 framework/android.policy.jar 模块了。不过要注意如果要全部编译的话,要把 Android.mk 改回去。

如何在 Android.mk 中添加自定义库

在编译 android 模块的时候,有时候想自己添加一些自己的东西,或者是说链接一些额外的库(例如说自己写的)。这个时候需要去修改 Android.mk 文件。这里以 android 中简单的 toolbox 模块为例说明。例如说要在 toolbox 中加一个自己的命令,除了编写相应的 .c 文件文件外(例如 myhello.c),Android.mk 中要这么改:
// myhello 是你自己加的命令
TOOLS := \
myhello \
ls \
mount \
cat \
ps \
kill \
ln \
insmod \
rmmod \
lsmod \
... ...

// 默认的是只有 libcutils 和 libc 的,后面的那个 libmyhello 假设就是你要链接的库(你自己写的那个)
// 动态库是加到 LOCAL_SHARED_LIBRARIES 这个变量,静态库是加到 LOCAL_STATIC_LIBRARIES 这个变量
// 动态库还需要把你的库复制到 obj/lib 下(弄个连接也可以,运行的时候要把你的库弄到 system/lib 下 )
// 动态库和静态库是不一样的,具体的可以通过出错信息来看(mm showcommands)
// 然后后面那个 LOCAL_LDFLAGS 可以用来设置一些额外链接信息
// 像这里我链接了 x11 的库,不过一般在 android 里是用不到这个库的
LOCAL_SHARED_LIBRARIES := libcutils libc libmyhello
OLD_LDFLAGS := $(LOCAL_LDFLAGS)
LOCAL_LDFLAGS = $(OLD_LDFLAGS) -L/usr/lib -lX11

... ...


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值