android c c++库相关

来源:互联网 发布:知之深爱之切全文 编辑:程序博客网 时间:2024/06/11 11:49
感谢willproven的投递
前面一份投稿
的错误很抱歉,rom本身就找错了,用了一个AOSP-like的刷机包。好在这份内容错误的投稿多少起到了抛砖引玉的作用,当天晚上,就给出了正确的rom的分析《纯技术分析阿里云OS和Android之间的关系》。这里想做的事情就是把它的工作进一步展开,办法很笨,简单而直观:找出整个rom中,linuxkernel以上的所有部件各是什么东西。这样各位看官就能知道整个rom由什么组成,至于阿里云OS到底是什么,想必能获得属于自己的正确判断。
使用的方法是,通过Binary,动态库的名字来推测它本质上是什么,在AOSP Android中有没有相同或类似的东西。

刷机包的来源是http://bbs.aliyun.com/read.php?tid=22809

.so文件一般指的是linux下的动态链接用的库,它的作用类似于windows架构中的dll。简单地说,源代码的函数被编译成二进制格式,存放在.so库中。.so库可以被动态调用。在Android中的app如果要使用C,C++代码编译出的二进制程序,一般都得通过JNI调用.so库的方式。

system/lib/ 中的动态库

liba2dp         蓝牙a2dp协议用的参数

libacc          Android内建的轻量级C编译器

libAK8975Compass                可能是日本旭化成Electronic的Ak8975指南针相关

libaligl2               可能是阿里云的相关库

libalipy                可能是阿里云的相关库

libalitag               可能是阿里云的相关库

libandroid      Android提供的一些API实际执行时调用的库

libandroid_runtime

和Android中实现的JNI的主要库,由frameworks/base/core/jni/下的代码编译而来

libandroid_services             和Android中实现的JNI有关的库

libappengine    可能是阿里云appengine相关库

libardrv_dynamic                可能是和NVIDIA相关的库(W700使用了NVIDIA Tegra

2作为其AP处理器)

libasound               alsa-lib(Advanced Linux Sound

Architecture),linux的音频系统的中间层,用于Android

libasound               同样是alsa的库

libaudioeffect_jni              Android与音效有关的库,涉及到密集运算,因此用C代码实现可能更有效率

libaudioflinger

Android的audio最核心的部分是audioflinger,audioflinger向上处理来自于应用程序的声音相关的所有请求,向下通过AudioHardwareInterface访问硬件

libaudiopolicy          audioflinger必需的库

libbinder               Android用于实现binder机制的库,binder用于Android的跨进程通信

libbluedroid            Android中和蓝牙(bluetooth)相关的库

libbluetooth            Android中和蓝牙(bluetooth)相关的库

libbluetoothd           Android中和蓝牙(bluetooth)相关的库

libc                            Android中C运行库的实现,也就是Bionic

libcalibrate            Android中与触摸屏相关的库

libcamera                               Android中与摄像头相关的库

libcamera_client                Android中与摄像头相关的库

libcameraservice                Android中与摄像头相关的库

libcgdrv                        可能是与Tegra 2相关的库

libcloudletevent        可能是阿里云云服务相关库

libcloudletos           可能是阿里云云服务相关库

libCommon               Android的相关库

libcrypto                       Android中所使用的OpenSSL的一部分,包含了所使用到的加密算法的库

libctest                C++测试工具,被Android采用

libcutils               Bionic的一部分,是Android中最基础的库

libdbus         Dbus,被Android拿来用于进程间通信

libdiskconfig           Android中与储存(磁盘)相关的库

libdl                   Bionic实现的动态链接相关的库

libdrm1         Android中与drm(电子版权管理)相关的库

libdrm1_jni     Android中与drm相关的库

libdvm  Dalvik虚拟机本体

libeffects              Android中与媒体相关的库,源代码在/mdia/libeffects/中

libEGL          Android采用的OpenGL相关库

libemoji                “絵文字”(颜文字)相关库

libETC1         OpenGL相关库

libexif         Android所采用的编辑照片EXIF信息相关的库

libexpat                (The Expat XML

Parser)一个叫做Expat的XML解析器,可在Android的源码目录/platform/external/下面

libFFTEm                Android使用的一个用于计算FFT(快速傅里叶变换)的库

libGLESv1_CM            Android采用的OpenGL ES相关库

libGLESv2                       Android采用的OpenGL ES相关库

libgui          Android中与用户界面相关的库

libhardware             Android中HAL(硬件抽象层)相关库

libhardware_legacy              Android中HAL(硬件抽象层)相关库

libicui18n                      ICU(International Component for

Unicode),Android中与字符编码有关的库,i18n指的是internationalization,也就是国际化,还有一个叫L10n(localization,本地化)的类似概念。

libicuuc                同样是libicu的一部分

libiprouteutil          Android中与TCP/IP栈相关的库

libjni_latinime         Android中与拉丁字母输入法相关的库

libjni_pinyinime        Android中与中文拼音输入法相关的库

libjnigraphics          Android 2.2开始引入的部件,与绘图有关,对bitmap的访问进行了封装。

libjniktouchinner               似乎是和天语(K-touch)触摸屏相关的库

libjpeg         Libjpeg是被Android拿来用于处理jpeg图像的相关库

liblame1lib

LAME,是一个著名的mp3编码器,AOSP中似乎没有它。LAME本身仅以源代码形式,按照LGPL发布以躲避法律问题,发行LAME的可执行程序(包括库)可能需要MP3专利持有者的授权

liblamelib              LAME

liblog          Android所使用的,有关日志记录的库

libm            Bionic的一部分,与内存分配回收有关

libmapview-jni          没有出现在AOSP中,可能是和阿里云OS的地图部件有关的库

libmedia

Android的MediaPlay架构的一部分,源代码在/frameworks/base/media/libmedia/中

libmedia-jni    MediaPlayer中负责与JNI通信的部分

libmediaplayerservice   MediaPlayer架构的一部分,通过继承libmedia.so的类实现服务器的功能

libmllite               Android中与传感器相关的库

libmlplatform           Android中与传感器相关的库

libmpl          Android中与传感器相关的库

libnativehelper

Dalvik的一部分,用于注册JNI调用的原生代码函数,源代码在\dalvik\libnativehelper 里面

libnetlink              RSVP协议开源实现,被Android采用

libnetutils     Android中有关以太网(Ethernet)的模块

libnfc_ndef

Android中用于实现nfc的一小部分,主要是实现NDEF消息的解析,供Framework调用,但在这个rom中没有找到libnfc这个主要模块

libnggame       Samsung GameHub相关库(这显然不太可能是AOSP的一部分)

libnodejs               Node.JS,一个服务器端JavaScript 解释器,可能用于阿里云相关服务

##以下一长串libnv开头的都是和NVIDIA Tegra

2有关的库,nv是NVIDIA的惯用缩写。也就是说,也可以在别的使用Tegra芯片的手机中找到类似的内容

libnvddk_2d             ddk指的可能是Driver Development Kit

libnvddk_2d_v2

libnvddk_audiofx

libnvddk_vmr

libnvdispmgr_d

libnvec

libnvmm

libnvmm_audio

libnvmm_camera

libnvmm_contentpipe

libnvmm_image

libnvmm_manager

libnvmm_misc

libnvmm_parser

libnvmm_service

libnvmm_tracklist

libnvmm_utils

libnvmm_video

libnvmm_videorenderer

libnvmm_vp6_video

libnvmm_writer

libnvodm_dtvtuner

libnvodm_imager

libnvodm_query

libnvomx

libnvomxilclient

libnvos

libnvrm

libnvrm_channel

libnvrm_graphics

libnvsm

libnvtestio

libnvtestresults

libnvwinsys

libnvwsi

##

libopensl_audio 与OpenGL ES的音频部分相关的库

libOpenSLES             与OpenGL ES的音频部分相关的库

libpixelflinger         Pixelflinger是Android系统中为OpenGLES引擎提供的一套软件渲染器

libpmstatus             可能是阿里云邮的库

libqqsecure             和腾讯QQ有关的库

libreference-cdma-sms           Android中与CDMA这种蜂窝网络制式相关的库

libreference-ril

Android中的ril库,负责与基带(baseband)芯片的驱动(经常会被称作‘基带’,‘radio’等)通信的部分

libRS                   Android中与用户界面有关的库,和launcher有关

librs_jni               Android中与用户界面有关的库,和launcher有关

librtp_jni              Android中和RTP协议相关的库

libsensors.mpl          Android中和传感器有关的库

libsensorservice        Android中和传感器有关的库

libsinautility          和新浪微博有关的库

libskia         Android所采用的SKIA图形引擎

libskia         Android所采用的SKIA图形引擎

libskyeye               SkyEye(天目)硬件模拟平台相关库,可能是阿里云OS所使用的库

libsmsChecker           可能是QQ管家的组件

libsonivox      一个电子声音合成器,源码在/external/sonivox/ 中

libsoundpool            Android中和声音回放有关的库

libsqlite               Android所使用的Sqlite的相关库

libsqlite_jni   Sqlite的相关库,用于JNI通信

libSR_AudioIn           和Tegra 2有关的库

libsrec_jni             源代码在/external/srec/ 中,

libssl                  OpenSSL模块主体

libstagefright          FFmpeg(现在叫libav)的模块

libstagefright_amrnb_common             FFmpeg(现在叫libav)的模块

libstagefright_avc_common                       FFmpeg(现在叫libav)的模块

libstagefright_color_conversion         FFmpeg(现在叫libav)的模块

libstagefright_enc_common                       FFmpeg(现在叫libav)的模块

libstagefright_foundation                       FFmpeg(现在叫libav)的模块

libstagefright_omx

FFmpeg(现在叫libav)的模块

libstagefrighthw

FFmpeg(现在叫libav)的模块

libstdc++                       Bionic的C++库

libstlport                      Bionic的C++的STL模版库

libstorageservice               可能是阿里云OS的库

libsurfaceflinger               Android显示系统的部件相关库

libsurfaceflinger_client                Android显示系统的部件相关库

libsystem_server                Android中和系统服务有关的库

libsysutils

Android的核心模块,这里的一个(可能是曾经的)漏洞和zergrush的提权有关

libthread_db            Android采用的与多线程调试有关的库

libttspico                      Android采用的TTS语音相关库

libttssynthproxy                Android采用的TTS语音相关库

libtyidservice                  可能是阿里云OS的库

libui                   Android的GUI(图形用户界面)的中枢

libutils

Android的底层库,这个库以C++实现,它提供的API也是C++的。Android的层次的C语言程序和库,大都基于libutils开发。

libVideoCtrl            和视频控制相关的库

libvmkid_clibs          阿里云OS的lemur虚拟机

libvmkid_lemur  阿里云OS的lemur虚拟机

libvorbisidec           Android采用的Vorbis解码器(如ogg等)

libwebcore              Android中的Webkit网页渲染引擎

libwpa_client           Android中和无线局域网wpa加密相关的部分

libxgold-ril            也是一个Ril模块

libz                    Android所使用的Zlib

node_compress   node.js所使用的流压缩器扩展,应该是阿里云OS的部件

node_zipfile            node.js管理zip压缩文件的扩展,应该是阿里云OS的部件

omxplayer               omxplayer是Android所使用的一个媒体播放器

system/bin 中的可执行文件

linux的原生可执行文件不需要,通常也没有扩展名

akmd8975                W700所使用的指南针有关

am                              Android所使用的命令行工具

app_process             Android中启动java程序的途径

applypatch              源码在tools/applypatch/

应该是和.patch差分补丁有关的工具,可能与OTA更新有关

auth.cgi                        可能是阿里云OS的部件

bootanimation   Android负责渲染启动动画的

BqTool                  可能是阿里云OS的部件

brcm_patchram_plus              Android中与蓝牙相关的模块

bugreport               Android的调试工具,可以通过adb启动

chpasswd.cgi            可能是阿里云OS的部件

cyttsp_fwloader 似乎是一个Android的硬件校正工具

dalvikvm                        Dalvik虚拟机的执行文件

dbus-daemon             Android采用的Dbus的看守进程

debuggerd               一个Android的守护进程,他会把出问题的进程信息打印到文件里面

dexopt          Android中执行odex相反动作的程序

dhcpcd                  Android负责进行DHCP的守护进程,可能用于wifi热点模式

dnsmasq                 Android使用的一个域名解析服务器,用于提供DNS 缓存和DHCP 服务功能

dumpstate               Android的命令行调试工具

dumpsys                 Android的命令行调试工具

dyz                             Android的命令行调试工具,和Dalvik虚拟机的Zygote机制有关

fsck_msdos              Android使用的磁盘检查工具

FWHelper                可能是阿里云OS的部件

glgps           Android使用的负责GPS芯片与上层通信的守护进程

gyrotest                与陀螺仪有关的

gzip                    gzip压缩工具,在Andoid上都能见到

hciattach               Android上用于蓝牙芯片初始化,协议绑定等功能的程序

ime                     Android的一个部件,源代码在/frameworks/base/cmds/ime/

input           Android的一个部件,提供一种在终端输入命令来控制系统的方式

installd                安装apk时相关的服务

iptables                iptables防火墙,AOSP源码中德/external/ipdables/ 里可以找到

keystore                Android采用的密钥/数字证书管理工具

lemur           阿里云OS的虚拟机进程

lexopt          阿里云OS的虚拟机的“dexopt”

linker          Android用于共享库的加载,链接

logcat          Android的调试工具,用于输出日志

logmodule               Android的调试工具,和日志有关

logwrapper              Android的调试工具,和日志有关

mediaserver             Android的mediaserver

monkey          Android的压力测试工具,向系统发送伪随机的用户事件流(键盘输入、触摸屏输入、手势输入等)

mtpd            Android中和VPN有关的守护进程

ndc                     Android中和网络有关的工具

netcfg          Android中获取网络信息的工具

netd                    Android中和网络有关的工具

nv_hciattach            NVIDIA相关的内容

nvtest                  NVIDIA相关的内容

omx_tests               Android的测试工具

pand    Android中和建立wifi热点有关的工具

phoneService.cgi                可能是阿里云OS的组件

ping    这个就不用说了吧,除了ping以外还有什么

pm      Android用于包管理的脚本(显然pm就是package manager的缩写)

pppd    Android中用于Point-to-Point Protocol的守护进程

progress.cgi                            可能是阿里云OS的组件

recoveryd               可能与recovery有关的内容

rild    Android的RIL模块的守护进程

rilsyscmd       可能是和RIL模块有关的命令行工具

run-as  Android的一个命令

schedtest       Android的一个调试工具

screencap       Android的截图工具

sdcard  Android的和磁盘相关的工具

sdptool Android的一个管理工具

service Android的Service组件的工具

servicemanager          Android的Service组件的工具

sh      这个就不用说了吧

surfaceflinger                  Android显示部件的守护进程

svc             Android的Service组件的工具

system_server           Android的Service组件的工具

tc      Android的一个工具

tegrastats      NVIDIA的Tegra芯片有关的工具

toolbox Android的一个工具

upload.cgi      可能是阿里云OS的组件

v8shell Google的V8虚拟机,用于快速执行javascript

vdc     Android的一个工具

vold    (Volume Daemon) 负责大容量存储设备挂载和删除的守护进程

wl      Android的一个工具

wpa_supplicant  Android中用于处理无线局域网的WPA(2)安全措施的守护进程

xgold-mux       可能是阿里云OS的组件或是W700手机的组件

我的判断是,W700用的阿里云OS从头到尾用的了和AOSP Android一样的东西:Linux内核,rom中几乎所有的二进制部件(/bin目录下的可执行程序,/lib目录下的动态库)都是和AOSP Android相同的,仅仅多出了两个模块:lemur虚拟机(而且这个东西的本质可能是和Dalvik没什么区别的)以及云app用的一些客户端程序,库,框架。

到这里为止,很明显阿里云OS的云app部分是一个Android的补丁,如果按照人们通常不会把Windows 7 rtm当作windows 7 sp1升级包的补丁这样的标准来看的话。

而lemur更像是一个Dalvik的补丁,或者不妨说,是插件(plugin):

有一个蹊跷的地方,在framework/目录下的所有jar库中的java中间代码全部是以lex结尾的,包括那些明显是android framework的部分。android本身的java API都是封装在framework/下面的库中,包括dex格式在内应用运行的时候会直接调用这些jar库中的lex格式所包含的对象(虽说实际上是经过lemur检测/优化后的”olex”):这意味着lemur有可能和Dalvik几乎完全相同,或者lemur就是Dalvik的一部分。

有可能lemur被写出来的唯一目的是用于制造不兼容性。退一步,lemur和Dalvik之间的区别显然远小于J2ME与Dalvik的差异。

Google施压的对象是受到OHA限制的Acer,至少字面上阿里云和这事情没有直接关系。选择不愿意发售手机的是Acer。

所以,阿里云公司:

这个很丢人的话题,我们已经听了很多,到这里就可以了。

不要再把你的伤口扯开了,已经够了。


PS:转载为了了解android  C C++底层的库的介绍。

from:http://www.cnbeta.com/articles/206282.htm

0 0
原创粉丝点击