当前位置:首页 » 安卓系统 » androidlogger

androidlogger

发布时间: 2022-04-27 04:59:09

‘壹’ android和linux的区别

有以下三点区别:

1、Android没有本地窗口系统,而Linux是有X窗口系统。

2、Android没有glibc支持,而Linux是有glibc支持的。

3、Android是有自己专有的驱动程序。

虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别。

(1)androidlogger扩展阅读

Android专有的驱动程序

1、Android Binder 基于OpenBinder框架的一个驱动,用于提供 Android平台的进程间通信(InterProcess Communication,IPC)功能。源代码位于drivers/staging/android/binder.c。

2、Android电源管理(PM) 一个基于标准Linux电源管理系统的轻量级Android电源管理驱动,针对嵌入式设备做了很多优化。源代码位于:

kernel/power/earlysuspend.c

kernel/power/consoleearlysuspend.c

kernel/power/fbearlysuspend.c

kernel/power/wakelock.c

kernel/power/userwakelock.c

3、低内存管理器(Low Memory Killer) 比Linux的标准的OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程以释放需要的内存。源代码位于 drivers/staging/ android/lowmemorykiller.c。

4、匿名共享内存(Ashmem) 为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。源代码位于mm/ashmem.c。

5、Android PMEM(Physical) PMEM用于向用户空间提供连续的物理内存区域,DSP和某些设备只能工作在连续的物理内存上。源代码位于drivers/misc/pmem.c。

6、Android Logger 一个轻量级的日志设备,用于抓取Android系统的各种日志。源代码位于drivers/staging/android/logger.c。

7、Android Alarm 提供了一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使在设备睡眠时也会运行的时钟基准。源代码位于drivers/rtc/alarm.c。

8、USB Gadget驱动 一个基于标准 Linux USB gadget驱动框架的设备驱动,Android的USB驱动是基于gaeget框架的。源代码位于drivers/usb/gadget/。

9、Android Ram Console 为了提供调试功能,Android允许将调试日志信息写入一个被称为RAM Console的设备里,它是一个基于RAM的Buffer。源代码位于drivers/staging/android / ram_console.c。

10、Android timed device 提供了对设备进行定时控制的功能,目前支持vibrator和LED设备。源代码位于drivers/staging/android /timed_output.c(timed_gpio.c)。

参考资料:网络——Android

网络——linux

‘贰’ android上如何实现后台日志记录并写文件到sd卡

1.debug alarm manager 启动的service,你想要知道是否每一次service的执行都正常,一切都是按照你所想的; 2.一些重要的信息,需要保存起来做分析或者需要上传到服务器做分析的; 3.开发期间,了解各个主要是网络接口的工作状态,执行效率(每个接口的执行时间)等等;过程分析1、下载 下载下来的microlog.properties是microlog.properties.txt,修改一下后缀名) 2、建立使用logger对象 private static final Logger logger = LoggerFactory.getLogger(main.class); 3、在程序的第activit或者service的oncreate方法里初始化方法 PropertyConfigurator.getConfigurator(this).configure(); 4、把microlog.properties文件放到assets文件夹里 注意:assets文件夹是与res文件夹平级的 然后更改microlog.properties文件为以下内容: microlog.level=DEBUG microlog.appender=LogCatAppender;FileAppender microlog.formatter=PatternFormatter microlog.formatter.PatternFormatter.pattern=%c [%P] %m %T 5、写日志记录 logger.debug(my debug); 6、在AndroidManifest.xml 添加写sd卡的权限 <uses-permission android:name=android.permission.WRITE_EXTERNAL_STORAGE / 启动程序,然后到SD卡根目录,可以发现有一个microlog.txt的文件,里面就是我们记录的日志了。 1.上面的日志在多地方调用,有时候可能会发现只保存了一条记录,每次后面的日志都覆盖了前面的日志,所以我们需要增加点额外代码; 2.在第三步后面: final FileAppender fa = logger.getAppender(1); fa.setAppend(true); ok, 到此大功告成。

‘叁’ Android-android Logcat怎么让它只显示我自己的应用程序信息

添加过滤器,您可以右击并选择filter similar messages
填上你应用的包名当filter Name,其余的项都清空,然后把
by application name一项填上你的包名即可。

以后查看的时候,点击你包名就是只看你应用程序的log信息。

注意,底层的报错,不会显示在你的应用程序log信息中,要看All messages(no filter)

‘肆’ Android手机在开发调试时logcat不显示输出信息的办法

问题表现:连接手机与电脑后,驱动安装正确,USB调试模式打开,在DDMS中可以看到device及其进程的信息,但是logcat中就是没有信息输出
问题原因:一些rom默认关闭logcat
问题说明:ddms中设备名字显示为问号不影响,即adb
get-serialno显示为问号不影响.
解决方法:
1.需要root权限(部分rom不需要)
2.打开logcat,并设置level,执行命令如下(android
升级之后
adb

platform-tools中,不在tools中)
adb
shell
echo
1
>
/sys/kernel/logger/log_main/enable
说明:将1写入日志开关文件,1为开,0为关
echo
2
>/sys/kernel/logger/log_main/priority
说明:将代表level的2写入优先级文件
3.重启adb,如果使用eclipse,先关闭eclipse,再重启adb,再启动eclipse
adb
kill-server
adb
start-server
4.此时logcat应该可以工作了,如果仍旧不工作,则更新adb
android
update
adb
5.重复第三步,此时logcat应该可以工作了,如果仍旧不工作,找到个人主目录下的android目录,如C:Documents
and
SettingsAdministrator.android
找到这个目录下的adb_usb.ini文件,其内容默认只有三行,全为注释,在后面添加一行,内容为0x12d1
6.重复第三步,此时logcat应该可以工作了

‘伍’ linux和android的区别

虽然Android基于Linux内核,但是它与Linux之间还是有很大的差别,比如Android在Linux内核的基础上添加了自己所特有的驱动程序。下面我们就来分析一下它们之间究竟有什么关系?
android是否能称为一种新的操作系统呢?至少我自己认为不算是,它最多算作一个新的应用程序罢了。
一、Android为什么会选择Linux
成熟的操作系统有很多,但是Android为什么选择采用Linux内核呢?这就与Linux的一些特性有关了,比如:
1、强大的内存管理和进程管理方案
2、基于权限的安全模式
3、支持共享库
4、经过认证的驱动模型
5、Linux本身就是开源项目
更多关于上述特性的信息可以参考Linux 2.6版内核的官方文档,这便于我们在后面的学习中更好地理解Android所特有的功能特性。接下来分析Android与Linux的关系。
二、Android不是Linux
看到这个标题大家可能会有些迷惑,前面不是一直说Android是基于Linux内核的吗,怎么现在又不是Linux了?迷惑也是正常的,请先看下面几个要点,然后我们将对每一个要点进行分析,看完后你就会觉得Android不是Linux了。
因为它没有本地窗口系统,没有glibc的支持,而且并不包括一整套标准的Linux使用程序,同时增强了Linux以支持其特有的驱动。
1.它没有本地窗口系统
什么是本地窗口系统呢?本地窗口系统是指GNU/Linux上的X窗口系统,或者Mac OX X的Quartz等。不同的操作系统的窗口系统可能不一样,Android并没有使用(也不需要使用)Linux的X窗口系统,这是Android不是Linux的一个基本原因。
我很奇怪的是linux的Xwindow并不是其核心程序,你可以看到很多嵌入式linux根本不会用到这个图形界面系统,而手机上的android不使用Xwindow不是很正常吗?我们学习的时候用QT难道就不叫做linux系统了么?
2.它没有glibc支持
由于Android最初用于一些便携的移动设备上,所以,可能出于效率等方面的考虑,Android并没有采用glibc作为C库,而是Google自己开发了一套Bionic Libc来代替glibc。
库文件不同,好吧,因为移植显然是要修改库文件和头文件的吧,求指教
3.它并不包括一整套标准的Linux使用程序
Android并没有完全照搬Liunx系统的内核,除了修正部分Liunx的Bug之外,还增加了不少内容,比如:它基于ARM构架增加的Gold-Fish平台,以及yaffs2 FLASH文件系统等。

4.Android专有的驱动程序
除了上面这些不同点之外,Android还对Linux设备驱动进行了增强,主要如下所示。
1)Android Binder 基于OpenBinder框架的一个驱动,用于提供 Android平台的进程间通信(InterProcess Communication,IPC)功能。源代码位于drivers/staging/android/binder.c。
2)Android电源管理(PM) 一个基于标准Linux电源管理系统的轻量级Android电源管理驱动,针对嵌入式设备做了很多优化。源代码位于:
kernel/power/earlysuspend.c
kernel/power/consoleearlysuspend.c
kernel/power/fbearlysuspend.c
kernel/power/wakelock.c
kernel/power/userwakelock.c
如果给内核添加驱动也可以称之为不同的话?
3)低内存管理器(Low Memory Killer) 比Linux的标准的OOM(Out Of Memory)机制更加灵活,它可以根据需要杀死进程以释放需要的内存。源代码位于 drivers/staging/ android/lowmemorykiller.c。
4)匿名共享内存(Ashmem) 为进程间提供大块共享内存,同时为内核提供回收和管理这个内存的机制。源代码位于mm/ashmem.c。
5)Android PMEM(Physical) PMEM用于向用户空间提供连续的物理内存区域,DSP和某些设备只能工作在连续的物理内存上。源代码位于drivers/misc/pmem.c。
6)Android Logger 一个轻量级的日志设备,用于抓取Android系统的各种日志。源代码位于drivers/staging/android/logger.c。
7)Android Alarm 提供了一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使在设备睡眠时也会运行的时钟基准。源代码位于drivers/rtc/alarm.c。
8)USB Gadget驱动 一个基于标准 Linux USB gadget驱动框架的设备驱动,Android的USB驱动是基于gaeget框架的。源代码位于drivers/usb/gadget/。
9)Android Ram Console 为了提供调试功能,Android允许将调试日志信息写入一个被称为RAM Console的设备里,它是一个基于RAM的Buffer。源代码位于drivers/staging/android / ram_console.c。
10)Android timed device 提供了对设备进行定时控制的功能,目前支持vibrator和LED设备。源代码位于drivers/staging/android /timed_output.c(timed_gpio.c)。
11)Yaffs2 文件系统 Android采用Yaffs2作为MTD nand flash文件系统,源代码位于fs/yaffs2/目录下。Yaffs2是一个快速稳定的应用于NAND和NOR Flash的跨平台的嵌入式设备文件系统,同其他Flash文件系统相比,Yaffs2能使用更小的内存来保存其运行状态,因此它占用内存小。Yaffs2的垃圾回收非常简单而且快速,因此能表现出更好的性能。Yaffs2在大容量的NAND Flash上的性能表现尤为突出,非常适合大容量的Flash存储

‘陆’ android的日志Logger和Log比较,哪个好

建议使用Log,这是android专门用来开发打印日志使用的。输出的日志可以在Logcat中查看。


Android开发中,所的有输出都在logcat中 包含System.out输出和printStackTrace()输出都在Logcat中,Android开发,建议使用android提供的Log工具类来打印信息。

找到Logcat视图的方式:

  1. Eclipse 点击 Window

  2. Show View会出来一个对话框

  3. 点击Ok按钮时,会在控制台窗口出现LogCat视图


android.util.Log常用的方法有以下5个:Log.v()Log.d()Log.i()Log.w()以及Log.e()。根据首字母对应VERBOSE,DEBUG,INFO,WARN,ERROR。

1、Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦的意思,平时使用就是Log.v("","");

2、Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.

3、Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息

4、Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。

5、Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要认真的分析,查看栈的信息了。

‘柒’ android中log文件能否删除太占空间了

你的手机内置logger抓取工具,主要是捕捉你的操作记录的,MODEM LOG (关于机身发射器的记录); MOBILE LOG(关于通话方面的记录) ; NET LOG(关于网络方面的记录)分别指抓取工具的捕捉类型。如果是系统自带的这个工具,你可以把它关闭,然后记得从你的文件管理中把MTKLOG文件夹删除(这个文件夹会随着你的使用逐渐增大)。关闭Logger功能的操作步骤:1、点击右下角的状态栏,找到MODEM log/其他log通知;2、在弹出的界面,先点击Modem log,点击里面的“stop”按钮;返回;再点Mobile log,同样点击“stop”;返回;再点Net log,同样点击“stop”即可!另,需要彻底解决这个问题,还是需要通过系统的方式把logger抓取工具给卸掉比较好,希望能对你有所帮助!

‘捌’ 如何把安卓驱动封装成jni接口

说到 android 驱动是离不开 Linux 驱动的。Android 内核采用的是 Linux2.6 内核 (最近Linux 3.3 已经包含了一些 Android 代码)。但 Android 并没有完全照搬 Linux 系统内核,除了对Linux 进行部分修正,还增加了不少内容。android 驱动 主要分两种类型:Android 专用驱动 和 Android 使用的设备驱动(linux)。 Android 专有驱动程序: 1)Android Ashmem 匿名共享内存; 为用户空间程序提供分配内存的机制,为进程间提供大块共享内存,同时为内核提供回收和管理这个内存。 2)Android Logger 轻量级的LOG(日志) 驱动; 3)Android Binder 基于 OpenBinder 框架的一个驱动; 4)Android Power Management 电源管理模块; 5)Low Memory Killer 低内存管理器; 6)Android PMEM 物理内存驱动; 7)USB Gadget USB 驱动(基于 gaeget 框架); 8)Ram Console 用于调试写入日志信息的设备; 9)Time Device 定时控制设备; 10)Android Alarm 硬件时钟; Android 上的设备驱动: 1)Framebuff 显示驱动; 2)Event 输入设备驱动; 3)ALSA 音频驱动; 4)OSS 音频驱动; 5)v412摄像头:视频驱动; 6)MTD 驱动; 7)蓝牙驱动; 8)WLAN 设备驱动; Android 专有驱动程序 1.Android Ashmem 为用户空间程序提供分配内存的机制,为进程间提供大块共享内存,同时为内核提供回收和管理这个内存。 设备节点:/dev/ashmen .主设备号 10. 源码位置: include/linux/ashmen.h Kernel /mm/ashmen.c 相比于 malloc 和 anonymous/named mmap 等传统的内存分配机制,其优势是通过内核驱动提供了辅助内核的内存回收算法机制(pin/unoin) 2.Android Logger 无论是底层的源代码还上层的应用,我们都可以使用 logger 这个日志设备看、来进行调试。 设备节点: /dev/log/main /dev/log/event /dev/log/radio 源码位置:include/linux/logger.h include/linux/logger.c 3.Android Binder IPC Binder 一种进程间通信机制。他的进程能够为其它进程提供服务 ----- 通过标准的 Linux 系统调用 API。 设备节点 :/dev/binder 源码位置:Kernel/include/linux/binder.h Kernel/drivers/misc/binder.c 4.Android Power Management 一个基于标准 linux 电源管理的轻量级 Android 电源管理系统,在 drivers/android/power.c kernel/power/ 5.Low Memory Killer 它在用户空间中指定了一组内存临界值,当其中某个值与进程描述中的 oom_adj 值在同一范围时,该进程将被Kill掉(在parameters/adj中指定oome_adj 的最小值)。它与标准的Linux OOM机制类似,只是实现方法不同 源码位置:drivers/misc/lowmemorykiller.c 6.Android PMEM PMEM 主要作用就是向用户空间提供连续的物理内存区域。 1.让 GPU 或 VPU 缓冲区共享 CPU 核心。 2.用于 Android service 堆。 源码位置:include/linux/android_pmem.h drivers/android/pmem.c 7.USB Gadget 基于标准 Linux USB gaeget 驱动框架的设备驱动。 源码位置:drivers/usb/gadet/ 8.Ram Console 为了提供调试功能,android 允许将调试日志信息写入这个设备,它是基于 RAM 的 buffer. 源码位置: drivers/staging/android/ram_console.c 9.Time Device 定时控制,提供了对设备进行定时控制的功能。 源码位置:drivers/staging/android/timed_output.c(timed_gpio.c) 10.Android Alarm 提供一个定时器,用于把设备从睡眠状态唤醒,同时它还提供了一个即使在设备睡眠时也会运行的时钟基准。 设备节点:/dev/alarm 源码位置:drivers/trc/alarm.c Android 设备驱动 1. Framebuffer 帧缓存设备 Framebuffer 驱动在 Linux 中是标准的显示设备的驱动。对于 PC 系统,它是显卡的驱动 ; 对于嵌入式 SOC 处理器系统,它是 LCD 控制器或者其他显示控制器的驱动。它是一个字符设备,在文件系统中设备节点通常是 /dev/fbx 。 每个系统可以有多个显示设备 , 依次用 /dev/fbO 、 /dev/fb l 等来表示。在 Android 系统中主设备号为 29 ,次设备号递增生成。 Android 对 Framebuffer 驱动的使用方式是标准的 , 在 / dev / graphie / 中的 Framebuffer 设备节点由 init 进程自动创建 , 被 libui 库调用 。 Android 的 GUI 系统中 , 通过调用 Framebuffer 驱动的标准接口,实现显示设备的抽象。 Framebuff的结构框架和实现 : linux LCD驱动(二)--FrameBuffer Linux LCD驱动(四)--驱动的实现 2.Event输入设备驱动 Input 驱动程序是 Linux 输入设备的驱动程序 , 分为游戏杆 (joystick) 、 鼠标 (mouse 和 mice)和事件设备 (Event queue)3 种驱动程序。其中事件驱动程序是目前通用的程序,可支持键盘 、 鼠标、触摸屏等多种输入设备。 Input 驱动程序的主设备号是 l3 ,每一种 Input 设备从设备号占 用5 位 , 3 种从设备号分配是 : 游戏杆 0 ~ 61 ; Mouse 鼠标 33 ~ 62 ; Mice 鼠标 63 ; 事件设备 64 ~ 95 ,各个具体的设备在 misc 、 touchscreen 、 keyboard 等目录中。 Event 设备在用户空问使用 read 、 ioctl 、 poll 等文件系统的接口操作, read 用于读取输入信息, ioctl 用于获取和设置信息, poll 用于用户空间的阻塞,当内核有按键等中断时,通过在中断中唤醒内核的 poll 实现。 Event 输入驱动的架构和实现: Linux设备驱动之——input子系统 3.ALSA音频驱动 高级 Linux 声音体系 ALSA(Advanced Linux Sound Architecture ) 是为音频系统提供驱动 的Linux 内核组件,以替代原先的开发声音系统 OSS 。它是一个完全开放源代码的音频驱动程序集 ,除了像 OSS 那样提供一组内核驱动程序模块之外 , ALSA 还专门为简化应用程序的编写提供相应的函数库,与 OSS 提供的基于 ioctl 等原始编程接口相比, ALSA 函数库使用起来要更加方便一些 利用该函数库,开发人员可以方便、快捷地开发出自己的应用程序,细节则留给函数库进行内部处理 。 所以虽然 ALSA 也提供了类似于 OSS 的系统接口 , 但建议应用程序开发者使用音频函数库,而不是直接调用驱动函数。 ALSA 驱动的主设备号为 116 ,次设备号由各个设备单独定义,主要的设备节点如下: / dev / snd / contmlCX —— 主控制 ; / dev / snd / pcmXXXc —— PCM 数据通道 ; / dev / snd / seq —— 顺序器; / dev / snd / timer —— 定义器。 在用户空问中 , ALSA 驱动通常配合 ALsA 库使用 , 库通过 ioctl 等接口调用 ALSA 驱动程序的设备节点。对于 AIJSA 驱动的调用,调用的是用户空间的 ALsA 库的接口,而不是直接调用 ALSA 驱动程序。 ALSA 驱动程序的主要头文件是 include / sound ./ sound . h ,驱动核心数据结构和具体驱动的注册函数是 include / sound / core . h ,驱动程序 的核心实现是 Sound / core / sound . c 文件。 ALSA 驱动程序使用下面的函数注册控制和设备: int snd _ pcm _ new (struct snd _ card * card , char * id , int device , int playback _ count , int capture _ count , struct snd _ pcm ** rpcm) ; int snd ctl _ add(struct snd _ card * card , struct snd _ kcontrol * kcontro1) ; ALSA 音频驱动在内核进行 menuconfig 配置时 , 配置选项为 “ Device Drivers ” > “ Sound c ard support ” 一 > “ Advanced Linux Sound Architecture ” 。子选项包含了 Generic sound devices( 通用声音设备 ) 、 ARM 体系结构支持,以及兼容 OSS 的几个选项。 ALsA 音频驱动配置对应的文件是sound / core / Kconfig 。 Android 没有直接使用 ALSA 驱动,可以基于 A-LSA 驱动和 ALSA 库实现 Android Audio 的硬件抽象层; ALSA 库调用内核的 ALSA 驱动, Audio 的硬件抽象层调用 ALSA 库。 4.OSS音频驱动 OSS(Open Sound System开放声音系统)是 linux 上最早出现的声卡驱动。OSS 由一套完整的内核驱动程序模块组成,可以为绝大多数声卡提供统一的编程接口。 OSS 是字符设备,主设备号14,主要包括下面几种设备文件: 1) /dev/sndstat 它是声卡驱动程序提供的简单接口,它通常是一个只读文件,作用也只限于汇报声卡的当前状态。(用于检测声卡) 2)/dev/dsp 用于数字采样和数字录音的设备文件。对于音频编程很重要。实现模拟信号和数字信号的转换。 3)/dev/audio 类似于/dev/dsp,使用的是 mu-law 编码方式。 4)/dev/mixer 用于多个信号组合或者叠加在一起,对于不同的声卡来说,其混音器的作用可能各不相同。 5)/dev/sequencer 这个设备用来对声卡内建的波表合成器进行操作,或者对 MIDI 总线上的乐器进行控制。 OSS 驱动所涉及的文件主要包括: kernel/include/linux/soundcard.h kernel/include/linux/sound.h 定义 OSS 驱动的次设备号和注册函数 kernel/sound_core.c OSS核心实现部分 5.V4l2视频驱动 V4L2是V4L的升级版本,为linux下视频设备程序提供了一套接口规范。包括一套数据结构和底层V4L2驱动接口。V4L2提供了很多访问接口,你可以根据具体需要选择操作方法。需要注意的是,很少有驱动完全实现了所有的接口功能。所以在使用时需要参考驱动源码,或仔细阅读驱动提供者的使用说明。 V4L2的主设备号是81,次设备号:0~255,这些次设备号里也有好几种设备(视频设备、Radio设备、Teletext、VBI)。 V4L2的设备节点: /dev/videoX, /dev/vbiX and /dev/radioX Android 设备驱动(下) MTD 驱动 Flash 驱动通常使用 MTD (memory technology device ),内存技术设备。 MTD 的字符设备: /dev/mtdX 主设备号 90. MTD 的块设备: /dev/block/mtdblockX 主设备号 13. MTD 驱动源码 drivers/mtd/mtdcore.c:MTD核心,定义MTD原始设备 drivers/mtd/mtdchar.c:MTD字符设备 drivers/mtd/mtdblock.c:MTD块设备 MTD 驱动程序是 Linux 下专门为嵌入式环境开发的新一类驱动程序。Linux 下的 MTD 驱动程序接口被划分为用户模块和硬件模块: 用户模块 提供从用户空间直接使用的接口:原始字符访问、原始块访问、FTL (Flash Transition Layer)和JFS(Journaled File System)。 硬件模块 提供内存设备的物理访问,但不直接使用它们,二十通过上述的用户模块来访问。这些模块提供了闪存上读、写和擦除等操作的实现。 蓝牙驱动 在 Linux 中,蓝牙设备驱动是网络设备,使用网络接口。 Android 的蓝牙协议栈使用BlueZ实现来对GAP, SDP以及RFCOMM等应用规范的支持,并获得了SIG认证。由于Bluez使用GPL授权, 所以Android 框架通过D-BUS IPC来与bluez的用户空间代码交互以避免使用未经授权的代码。 蓝牙协议部分头文件: include/net/bluetooth/hci_core.h include/net/bluetooth/bluetooth.h 蓝牙协议源代码文件: net/bluetooth/* 蓝牙驱动程序部分的文件: drivers/bluetooth/* 蓝牙的驱动程序一般都通过标准的HCI控制实现。但根据硬件接口和初始化流程的不同,又存在一些差别。这类初始化动作一般是一些晶振频率,波特率等基础设置。比如CSR的芯片一般通过BCSP协议完成最初的初始化配置,再激活标准HCI控制流程。对Linux来说,一旦bluez可以使用HCI与芯片建立起通信(一般是hciattach + hciconfig),便可以利用其上的标准协议(SCO, L2CAP等),与蓝牙通信,使其正常工作了。 WLAN 设备驱动(Wi-Fi)(比较复杂我面会专门写个wifi分析) 在linux中,Wlan设备属于网络设备,采用网络接口。 Wlan在用户空间采用标准的socket接口进行控制。 WiFi协议部分头文件: include/net/wireless.h WiFi协议部分源文件: net/wireless/* WiFi驱动程序部分: drivers/net/wireless/*

‘玖’ Linux和安卓具体是存在什么关系

Android一种基于Linux的自由及开放源代码的操作系统。Linux操作系统的内核,安卓则是基于Linux内核开发的操作系统,安卓在Linux的基础上提供了驱动以及用户编程接口。

操作系统管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入设备与输出设备、操作网络与管理文件系统等基本事务。操作系统也提供一个让用户与系统交互的操作界面。

Android以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 Userspace,使得Linux driver 与 Linux kernel彻底分开。

Bionic/Libc/Kernel/ 并非标准的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏。

(9)androidlogger扩展阅读

APK安卓应用的后缀,是AndroidPackage的缩写,即Android安装包(apk)。APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。

apk文件和sis一样,把android sdk编译的工程打包成一个安装程序文件,格式为apk。 APK文件其实是zip格式,但后缀名被修改为apk,通过UnZip解压后,可以看到Dex文件,Dex是Dalvik VM executes的全称,即Android Dalvik执行程序,并非Java ME的字节码而是Dalvik字节码。

Android在运行一个程序时首先需要UnZip,然后类似Symbian那样直接执行安装,和Windows Mobile中的PE文件有区别;

这样做对于程序的保密性和可靠性不是很高,通过dexmp命令可以反编译,但这样做符合发展规律,微软的 Windows Gadgets或者说WPF也采用了这种构架方式。

在Android平台中dalvik vm的执行文件被打包为apk格式,最终运行时加载器会解压然后获取编译后androidmanifest.xml文件中的permission分支相关的安全访问,但仍然存在很多安全限制,如果你将apk文件传到/system/app文件夹下会发现执行是不受限制的。

最终平时安装的文件可能不是这个文件夹,而在android rom中系统的apk文件默认会放入这个文件夹,它们拥有着root权限。

‘拾’ android logcat 无法使用

android开发中如果碰到logcat中不输出信息的情况,请按以下步骤排除问题:

  1. 重启Eclipse和android模拟器

  2. 如果是真机测试的话,数据线拔下重新连接

  3. 打开logcat,并设置level,执行命令如下(android 升级之后 adb 在 platform-tools中,不在tools中)adb shellecho 1 > /sys/kernel/logger/log_main/enable

    说明:将1写入日志开关文件,1为开,0为关echo 2 >/sys/kernel/logger/log_main/priority说明:将代表level的2写入优先级文件

  4. 重启adb,如果使用eclipse,先关闭eclipse,再重启adb,再启动eclipseadb kill-serveradb start-server

  5. 此时logcat应该可以工作了,如果仍旧不工作,则更新adbandroid update adb

  6. 重复第三步,此时logcat应该可以工作了,如果仍旧不工作,找到个人主目录下的android目录,如C:Documents and SettingsAdministrator.android 找到这个目录下的adb_usb.ini文件,其内容默认只有三行,全为注释,在后面添加一行,内容为0x12d1

  7. 重复第三步,此时logcat应该可以工作了


如果logcat还不输出日志

  1. 打开 开发工具中的DDMS

  2. 点击所有连接设备的信息,连接几个显示几个

  3. 双击连接的设备,logcat就显示哪个设备的信息了

热点内容
4k无压缩 发布:2025-05-15 06:02:54 浏览:74
hp存储6350 发布:2025-05-15 05:40:41 浏览:233
怎么更改电脑默认缓存位置 发布:2025-05-15 05:39:01 浏览:877
安卓qq公孙离在哪个战区战力最低 发布:2025-05-15 05:38:58 浏览:493
androidffmpeg压缩 发布:2025-05-15 05:37:02 浏览:288
ftp简称是 发布:2025-05-15 05:37:02 浏览:121
光遇发光耳机怎么设置安卓 发布:2025-05-15 05:32:03 浏览:113
台电安卓平板系统太低怎么办 发布:2025-05-15 05:20:00 浏览:510
安装了zlib编译报错 发布:2025-05-15 05:19:56 浏览:168
二分算法无序 发布:2025-05-15 05:18:22 浏览:30