论文部分内容阅读
安卓操作系统是基于Linux内核的移动操作系统,具有源码开放、兼容硬件丰富和易于开发等特点。龙芯中科作为自主创新的国产处理器研发机构,在移动互联网全面兴起的时代,有肩负起研发国产移动芯片的责任,安卓也成为龙芯平台上移动操作系统的最佳选择。由于早期移动市场被ARM长期独占,导致使用安卓NDK技术的安卓应用安装包都只携带了ARM版本的动态库,这种结构的安卓应用在龙芯平台上不兼容,不能正确运行。解决安卓ARM应用在龙芯平台上的兼容性问题对于龙芯进军移动市场具有重要意义。 本文通过分析安卓虚拟机运行机制及安卓JNI(Java Native Interface)调用原理,深入剖析安卓ARM应用程序在MIPS平台上不兼容的原因,并提出了一个第三方动态库跨平台兼容性问题的通用解决方案——“动态库跨平台二进制兼容模型”,基于该模型,设计并实现了龙芯平台安卓ARM动态库兼容系统。该系统利用自定义的动态链接器实现ARM动态库在龙芯平台上的加载,再采用二进制翻译技术,将ARM动态库中的二进制指令翻译成为MIPS指令,从而解决了龙芯平台上安卓ARM应用程序的兼容性问题。本文作出的贡献有: 1.提出“动态库跨平台二进制兼容模型”。通过分析安卓JNI调用原理,找出安卓ARM应用程序在第三方平台上不兼容的根本原因,在此基础上提出了一个针对第三方动态库跨平台兼容性问题的通用解决方案——“动态库跨平台二进制兼容模型”,并对模型中包含的动态连接器、二进制翻译器、控制核心三个模块的实现进行了技术分析。 2.设计并实现了龙芯平台上安卓ARM动态库兼容系统,解决了安卓ARM应用程序在龙芯平台上的兼容性问题。基于“动态库跨平台二进制兼容模型”,结合ARM指令集特点,实现了安卓ARM动态库在MIPS平台上的加载、链接及二进制翻译执行,并按照安卓ART虚拟机NativeBridge接口要求对系统进行封装,实现了与安卓虚拟机的整合。