前
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系统的基本架构以及它与传统Linux系统...
在IT领域,数据库中存储图片通常以二进制流(Binary Stream)的形式进行,这是因为二进制流可以高效地处理图像数据,同时节省存储空间。本文将深入探讨如何实现从数据库中的二进制流转换为图片,并将其保存到本地...
总结来说,`AndroidManifest.xml`是Android应用的核心配置文件,而AXMLTWOEditor是处理其二进制形式的工具,它为开发者提供了更深层次的控制权,同时也提醒我们注意应用的安全性。对于想要深入探究APK结构或进行逆向...
在Android系统中,SU二进制文件是用于获取超级用户权限的关键组件,它允许用户以root权限执行操作。"解决SU二进制文件过旧的问题"这个标题表明我们需要讨论的是如何更新或修复已经过时的SU二进制文件,以确保系统的...
二进制数组转换为二进制字符串 将二进制数组转换为十六进制字符串 将十六进制转换为二进制字节数组 将十六进制转换为二进制字符串
这样的工具可以极大地简化Android应用中的二进制数据处理,提高程序的可读性和可维护性。 总结来说,Android开发中的对象序列化和反序列化是数据交换的关键技术,特别是在处理二进制数据时。开发者需要根据实际需求...
QT库,全称为Qt Application ...总之,QT库提供了强大的工具,使得在C++中处理图像数据变得简单,无论是读取、显示、编辑还是以二进制形式存储。理解并熟练运用这些知识点,对于进行QT图像处理相关的开发工作至关重要。
AXMLPrinter2 反编译AndroidManifest.xml二进制文件工具 AXMLEditor 修改AndroidManifest.xml二进制文件工具 ManifestEditor 修改AndroidManifest.xml二进制文件工具 baksmali dex转smali工具 smali smali转dex工具 ...
在这个场景中,我们经常需要将图片数据转换成二进制流,以便更有效地传输和存储。标题“以二进制法式上传图片”和描述中提到的ASP(Active Server Pages)编程语言,表明我们将探讨如何在ASP环境下实现这个功能。 ...
预编译的二进制文件(如`sqlite3.dll`,动态链接库)也是常见的,它允许程序在运行时动态加载SQLite3库,而不是在编译时静态链接。这种方式可以减少应用程序的大小,同时允许更新SQLite3库而不需要重新编译整个程序...
分析`AndroidManifest`的二进制文件通常需要对Android的资源管理和二进制文件格式有深入的理解。可以借助反编译工具,如Apktool、dex2jar等,来查看和解析二进制`AndroidManifest`。这些工具能够将二进制数据重新...
android 实现root 需要的su,su.pie 二进制文件,android 开发过程中程序很多时候免不了需要对系统目录下的内容进行操作,虽然android的内核是linux系统,但是在linux中却换到root下的方式是sudo root的方式,但是在...
总的来说,`AMXLPrinter2`是Android逆向工程中不可或缺的工具,它帮助开发者揭示隐藏在二进制XML中的信息,进一步推动对Android应用的理解和优化。通过熟练掌握这个工具,开发者可以更高效地进行调试、审计和安全...
5. **平台适配**:不同操作系统和硬件架构可能需要不同的二进制格式,例如Windows上的.exe,Linux下的 ELF 或者Android的APK。打包时需考虑目标平台,生成相应的二进制文件。 6. **安装程序制作**:打包后的二进制...
这个应用将允许用户在不同的数值系统之间进行转换,如二进制、八进制、十进制和十六进制。 首先,我们需要了解Android Studio的基础知识。它基于IntelliJ IDEA,提供了丰富的功能来帮助开发者创建Android应用程序。...
在这个压缩包中,我们看到一个名为`platform-tools`的文件夹,这也是Android SDK的一个组成部分,包含了许多用于Android设备和模拟器管理的命令行工具,例如`adb`(Android Debug Bridge)和`fastboot`等,但`dx`...
在Android开发中,有时我们需要处理二进制数据,特别是当涉及到通信协议或者存储紧凑型数据时,BCD(Binary-Coded Decimal,二进制编码的十进制)码是一种常用的表示方式。BCD码是一种将十进制数字用二进制形式表示...
在Android系统中,"su"和"busybox"是两个非常关键的二进制工具,它们在Android设备的root过程中扮演着重要角色。"su"是Linux系统中的一个程序,用于切换用户身份,特别是从普通用户提升到超级用户(root权限)。而...
总结来说,"Androidmanifest二进制文件修改工具C语言源码.zip"涉及了Android应用的基础架构、逆向工程的实践、C语言编程技巧、跨平台编译、二进制文件解析以及批量修改属性等多方面的知识。对于想要深入理解Android...