`

Android的二进制工具

阅读更多

前 Google的策略是不会加入Native C++这样的本地语言开发,除了安全性考虑似乎这样可以有效的保证平台的控制权限,很多性能敏感的程序只有通过和Google合作加入到系统底层才可以, 用户最终只能在Dalvik层做开发。虽然完全开源,但最终的APK文件必需经过签名才可以安装到Android手机上,这样可以有效的排挤竞争对手,目 前很多浏览器厂商已经发现这个严重的问题,比如Firefox、Opera已经无法在Android平台上发展了,无论Java代码优化、算法再精炼只能 在Dalvik VM上运行,而Android自带的浏览器Chrome Lite使用的webkit内核是C++编写的库文件,提供Java接口上层调用,所以最终这个平台的限制还是很大的。

 

Android所用的Toolchain(即交叉编译工具链)可从下面的网址下载:

http://android.kernel.org/pub/android-toolchain-20081019.tar.bz2 。 如果下载了完整的Android项目的源代码,则可以在“<your_android>/prebuilt/linux-x86 /toolchain/arm-eabi-4.2.1/bin”目录下找到交叉编译工具,比如Android所用的arm-eabi-gcc- 4.2.1。

 

Android并没有采用glibc作为C库,而是采用了Google自己开发的Bionic Libc,它的官方Toolchain也是基于Bionic Libc而并非glibc的。这使得使用或移植其他Toolchain来用于Android要比较麻烦:在Google公布用于Android的官方 Toolchain之前,多数的Android爱好者使用的Toolchain是在http://www.codesourcery.com/gnu_toolchains/arm/download.html  下 载的一个通用的Toolchain,它用来编译和移植Android 的Linux内核是可行的,因为内核并不需要C库,但是开发Android的应用程序时,直接采用或者移植其他的Toolchain都比较麻烦,其他 Toolchain编译的应用程序只能采用静态编译的方式才能运行于Android模拟器中,这显然是实际开发中所不能接受的方式。目前尚没有看到说明成 功移植其他交叉编译器来编译Android应用程序的资料。

 

与glibc相比,Bionic Libc有如下一些特点:

-          采用BSD License,而不是glibc的GPL License;

-          大小只有大约200k,比glibc差不多小一半,且比glibc更快;

-          实现了一个更小、更快的pthread;

-          提供了一些Android所需要的重要函数,如”getprop”, “LOGI”等;

-          不完全支持POSIX标准,比如C++ exceptions,wide chars等;

-          不提供libthread_db 和 libm的实现

 

另外,Android中所用的其他一些二进制工具也比较特殊:

-          加载动态库时使用的是/system/bin/linker而不是常用的/lib/ld.so;

-          prelink工具不是常用的prelink而是apriori,其源代码位于” <your_android>/build/tools/apriori”

-          strip 工具也没有采用常用的strip,即“<your_android>/prebuilt/linux-x86/toolchain/arm- eabi-4.2.1/bin”目录下的arm-eabi-strip,而是位于<your_android>/out/host /linux-x86/bin/的soslim工具。

分享到:
评论

相关推荐

    在Android中调用二进制可执行程序

    ### 在Android中调用二进制可执行程序 #### 知识点一:理解Android环境下的二进制可执行程序 在深入探讨如何在Android环境中调用二进制可执行程序之前,首先需要理解Android系统的基本架构以及它与传统Linux系统...

    实现数据库二进制流转换成图片保存本地

    在IT领域,数据库中存储图片通常以二进制流(Binary Stream)的形式进行,这是因为二进制流可以高效地处理图像数据,同时节省存储空间。本文将深入探讨如何实现从数据库中的二进制流转换为图片,并将其保存到本地...

    二进制AndroidManifest.xml修改神器~

    总结来说,`AndroidManifest.xml`是Android应用的核心配置文件,而AXMLTWOEditor是处理其二进制形式的工具,它为开发者提供了更深层次的控制权,同时也提醒我们注意应用的安全性。对于想要深入探究APK结构或进行逆向...

    解决SU二进制文件过旧的问题

    在Android系统中,SU二进制文件是用于获取超级用户权限的关键组件,它允许用户以root权限执行操作。"解决SU二进制文件过旧的问题"这个标题表明我们需要讨论的是如何更新或修复已经过时的SU二进制文件,以确保系统的...

    java进制转换工具类

    二进制数组转换为二进制字符串 将二进制数组转换为十六进制字符串 将十六进制转换为二进制字节数组 将十六进制转换为二进制字符串

    Android-byte数据序列化成对象对象转化成二进制数据

    这样的工具可以极大地简化Android应用中的二进制数据处理,提高程序的可读性和可维护性。 总结来说,Android开发中的对象序列化和反序列化是数据交换的关键技术,特别是在处理二进制数据时。开发者需要根据实际需求...

    QT一二进制形式读取图片

    QT库,全称为Qt Application ...总之,QT库提供了强大的工具,使得在C++中处理图像数据变得简单,无论是读取、显示、编辑还是以二进制形式存储。理解并熟练运用这些知识点,对于进行QT图像处理相关的开发工作至关重要。

    android apk二进制文件修改查看工具包

    AXMLPrinter2 反编译AndroidManifest.xml二进制文件工具 AXMLEditor 修改AndroidManifest.xml二进制文件工具 ManifestEditor 修改AndroidManifest.xml二进制文件工具 baksmali dex转smali工具 smali smali转dex工具 ...

    以二进制法式上传图片

    在这个场景中,我们经常需要将图片数据转换成二进制流,以便更有效地传输和存储。标题“以二进制法式上传图片”和描述中提到的ASP(Active Server Pages)编程语言,表明我们将探讨如何在ASP环境下实现这个功能。 ...

    Sqlite3预编译二进制文件,lib,可执行文件,源码打包下载

    预编译的二进制文件(如`sqlite3.dll`,动态链接库)也是常见的,它允许程序在运行时动态加载SQLite3库,而不是在编译时静态链接。这种方式可以减少应用程序的大小,同时允许更新SQLite3库而不需要重新编译整个程序...

    AndroidManifest二进制文件格式分析

    分析`AndroidManifest`的二进制文件通常需要对Android的资源管理和二进制文件格式有深入的理解。可以借助反编译工具,如Apktool、dex2jar等,来查看和解析二进制`AndroidManifest`。这些工具能够将二进制数据重新...

    android 超级用户 root 管理工具 二进制文件

    android 实现root 需要的su,su.pie 二进制文件,android 开发过程中程序很多时候免不了需要对系统目录下的内容进行操作,虽然android的内核是linux系统,但是在linux中却换到root下的方式是sudo root的方式,但是在...

    AMXLPrinter2用于把二进制的XML转为文本

    总的来说,`AMXLPrinter2`是Android逆向工程中不可或缺的工具,它帮助开发者揭示隐藏在二进制XML中的信息,进一步推动对Android应用的理解和优化。通过熟练掌握这个工具,开发者可以更高效地进行调试、审计和安全...

    二进制打包解包

    5. **平台适配**:不同操作系统和硬件架构可能需要不同的二进制格式,例如Windows上的.exe,Linux下的 ELF 或者Android的APK。打包时需考虑目标平台,生成相应的二进制文件。 6. **安装程序制作**:打包后的二进制...

    使用AndroidStudio开发简易进制转换计算器

    这个应用将允许用户在不同的数值系统之间进行转换,如二进制、八进制、十进制和十六进制。 首先,我们需要了解Android Studio的基础知识。它基于IntelliJ IDEA,提供了丰富的功能来帮助开发者创建Android应用程序。...

    dx工具(android将jar包转成dex格式二进制jar包工具)

    在这个压缩包中,我们看到一个名为`platform-tools`的文件夹,这也是Android SDK的一个组成部分,包含了许多用于Android设备和模拟器管理的命令行工具,例如`adb`(Android Debug Bridge)和`fastboot`等,但`dx`...

    Android BCD和String的转换

    在Android开发中,有时我们需要处理二进制数据,特别是当涉及到通信协议或者存储紧凑型数据时,BCD(Binary-Coded Decimal,二进制编码的十进制)码是一种常用的表示方式。BCD码是一种将十进制数字用二进制形式表示...

    su&busybox;二进制文件

    在Android系统中,"su"和"busybox"是两个非常关键的二进制工具,它们在Android设备的root过程中扮演着重要角色。"su"是Linux系统中的一个程序,用于切换用户身份,特别是从普通用户提升到超级用户(root权限)。而...

    Androidmanifest二进制文件修改工具C语言源码.zip

    总结来说,"Androidmanifest二进制文件修改工具C语言源码.zip"涉及了Android应用的基础架构、逆向工程的实践、C语言编程技巧、跨平台编译、二进制文件解析以及批量修改属性等多方面的知识。对于想要深入理解Android...

Global site tag (gtag.js) - Google Analytics