首页
论坛
课程
招聘
[原创]android linker 编译替换
2020-12-31 14:20 1621

[原创]android linker 编译替换

2020-12-31 14:20
1621

全编译android源码

设备

pixel 2

准备源码

1
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
1
chmod +x repo
1
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
1
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.0.0_r4
1
repo sync -j2

android 源码版本更换

1
2
repo init -b android-8.1.0_r2
repo sync

设置java环境

android源码中自带java环境。

1
PATH=$PATH:/home/pareto/data/prebuilts/jdk/jdk8/linux-x86/bin/:/home/pareto/data/prebuilts/jdk/jdk8/linux-x86/jre/bin

设置环境变量

编译

1
source build/envsetup.sh
1
lunch aosp_walleye-eng # 根据设备进行修改

部分编译

1
mm bionic/linker/.

全编译

1
make -j4

编译android linker

1
2
cd bionic/linker
mm ./

修改sys文件系统权限

1
mount -o rw,remount /

调试信息

打开调试信息

1
2
3
4
#所有应用
adb shell setprop debug.ld.all dlerror,dlopen
# com.pareto.jnidemo 应用的日志
adb shell setprop debug.ld.app.com.pareto.jnidemo dlopen,dlerror

elf 文件结构

替换linker

最重要的问题,需要重启手机替代的linker才会生效。

1
2
3
4
5
6
7
8
9
adb push linker64 /data/local/tmp
 
adb push linker /data/local/tmp
 
chmod +x /data/local/tmp/linker*
 
mount -o rw,remount /
 
cp /data/local/tmp/linker* /system/bin/ -rf

生成的文件在out目录下。

https://www.jianshu.com/p/8ec0f1f1863a

https://www.jianshu.com/p/82a7eef74aae

https://source.android.google.cn/setup/build/building-kernels?hl=zh-cn#building 官方内核构建


[注意]中秋好礼,诚意满满——你提意见,我送月饼!!

收藏
点赞1
打赏
分享
最新回复 (1)
雪    币: 610
活跃值: 活跃值 (557)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
mb_foyotena 活跃值 2020-12-31 16:21
2
0
这是要搞一个系列么,其实放一篇文章里就够了
游客
登录 | 注册 方可回帖
返回