Nokia N1 添加v2兼容库支持,以及移植arm64兼容库

您所在的位置:网站首页 supersu原理 Nokia N1 添加v2兼容库支持,以及移植arm64兼容库

Nokia N1 添加v2兼容库支持,以及移植arm64兼容库

#Nokia N1 添加v2兼容库支持,以及移植arm64兼容库| 来源: 网络整理| 查看: 265

首先,这个arm64的兼容性很拉跨,来源于电脑端remix os 2.0,以及米板2的MIUI,所以用过这俩系统的人应该清楚是怎么个回事。就个人体验而言64位的哔哩哔哩HD版是兼容最好的app,64位Acfun在看视频过程会重启应用,64位8.8.50版本QQ在登录完就会闪退,此外呢还有64位阿尔托冒险直接闪退(我一般用这个测试兼容库正不正常),b站64位闪退……

所以其实这篇移植教程作用不大

但是呢,对于32位app的兼容性你就可以多一个选择了,诺基亚n1的houdini版本是5.1.0,而添加v2兼容库支持就可以试试5.2.2或5.2.3版本houdini的兼容性了,应该会好一点。

吐槽一下,原本发在贴吧,结果全被吞了

废话少说,首先说要求:

电脑一台,

必须为B19版本的系统(台版、国版都行),

需要看过这板子的刷机教程(需要刷boot),

需要root,

添加替换文件推荐用mt管理器。

如果不清楚文件作用,请按教程来,不然,开不了机的话自己重刷系统,楼主的文件仅供学习不承担责任。

 

步骤:

1. 改selinux为宽容模式(selinux开启时,替换bin目录文件将导致进不了系统):

提取你系统里的或者ROM压缩包里的boot.img到平板,

下载Image Studio for Android

点加号,选“Unpack/Mount”,然后选取刚刚复制来的boot.img

加载完,点进split_img,选cmdline结尾的,用这个软件的编辑器编辑

在文本的末尾加一个空格(不用换行),添加以下内容

androidboot.selinux=permissive

右上角,点save保存

加号→Repack,打包镜像

然后再Export Img,导出镜像

导出镜像后可以Cleanup清理产生的文件

 

接下来把打包好的镜像复制到电脑,平板重启到fastboot模式,电脑用fastboot刷到boot分区,可以百度fastboot怎么刷boot

用twrp刷boot也可以。

 

 

2. 添加v2兼容支持:

将压缩包的文件替换到system目录对应文件。

额外注意:如果是惜旧ROM或者自己用supersu进行了root,那么bin目录下的会有app_process_init和app_process64_original这两个文件,而app_process64只是一个链接文件。不要直接替换app_process64,先把准备要复制的app_process64改名成app_process_init或app_process64_original其中一个替换掉,再改名成剩下那个替换掉。

包含以下文件内容:

/system/bin/:app_process32,app_process64,dalvikvm32,dalvikvm64, dex2oat,oatdump,patchoat,surfaceflinger

/system/lib/:libart.so,libsigchain.so,libnativebridge.so

/system/lib64/:libart.so,libsigchain.so,libnativebridge.so

权限的设置均为rw-r--r--(0644)

 

3. 添加arm64的binfmt支持,如果不要arm64兼容,这一步可省略:

复制arm64_exe,arm64_dyn到/system/etc/binfmt_misc/,复制的文件设置权限0644

 

4. 复制兼容库,分32位和64位,还有备份的32位houdini_5.1.0(如果想恢复):

32位(houdini尾缀为y): /system/bin/:houdini

/system/lib/:libhoudini.so文件,arm整个目录复制过去

64位(houdini尾缀为z): /system/bin/:houdini64

/system/lib64/:libhoudini.so文件,arm64整个目录复制过去

权限设置:/system/bin/下的文件权限为rwxr-xr-x(0755)

剩余的文件均为0644,文件夹为0755

 

5. 修改build.prop,仅针对添加arm64支持:

①红色为加的内容:

ro.product.cpu.abilist=x86_64,x86,armeabi-v7a,armeabi,arm64-v8a

ro.product.cpu.abilist64=x86_64,arm64-v8a

(一定要在末尾添加,要把arm64-v8a的优先级设成最低)

②找到这两行,在下面加两行(不是改):

ro.dalvik.vm.isa.arm=x86

ro.enable.native.bridge.exec=1

ro.dalvik.vm.isa.arm64=x86_64

ro.enable.native.bridge.exec64=1

改完保存。

额外说明:如果是惜旧官改包,除非你不使用他的“1.导航栏开关(重启生效)”功能,否则你应该对 /system/xijiu/ 目录下的两个文件同步修改。

改了abi后的aida64哔哩哔哩HD版64位哔哩哔哩HD版本

教程完毕,附上蓝奏云相关文件:

https://wwze.lanzoub.com/b0ai6evej 密码:1234

有兴趣改官方包的也可以参照以上内容。有兴趣的话可以看看简单的原理讲解?(学了很多东西捏)

最先我是只从libart和libnativebridge的源码发现了一点点源码区别,后来从这里https://github.com/iConsole/Console-OS_art/commits/consoleos-lollipop

发现了一些v2版本兼容库支持的源码改动,于是总结了需要以下改动:

libnativebridge.so需要添加两个函数,libart.so需要修复一个函数,libsigchain.so需要添加一个函数(但这个函数的真正实现却在bin目录下一些文件,这个库只是会在找不到里边包含的函数时生成报错日志)。

然后我花了很长时间看怎么修改libart和bin文件,用过LIEF,patchelf,还有用ida分析,但是后来才意识到,其实只要找到相似的文件替换就好了,因为此前我一直没懂得,应该去看elf的导入导出符号。

于是我从Tesco Hudl2的刷机包里找到了高度相似的bin文件(导入符号除了新函数实现要导入的sigemptyset外,其余全一样)。在米板2的MIUI7里找到了最相似的libart.so(几千个导出符号只有8个区别,并且这几个区别在lib和bin目录没有依赖,导入函数就只有新函数所需的区别),至于libnativebridge.so和libsigchain.so,其源码的体量很小,只有几十个符号所以基本其他机型的对应文件都可以直接替换。

接下来呢我比较感兴趣的就是尝试能不能通过修一修一些系统文件,然后跨安卓版本使用houdini兼容库。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3