精华内容
下载资源
问答
  • 安卓系统层次架构.pdf

    2020-09-07 08:53:28
    分析 第一 Linux 操作系统和驱动 (Linux kernel: 由 C 语言实现 Android 核心系统服务依赖于 Linux2.6 内核包括安全性内存管理进程管理网 络协议驱动模型 Linux 内核也作为硬件和软件栈之间的抽象 除了标准的 ...
  • 1.Linux内核层Android系统是基于Linux内核开发的,为Android设备的各种硬件提供底层驱动,如显示驱动,声音驱动,电源管理,相机驱动等。2.系统运行库系统运行库通过一些C/C++库来为Android实现支持SQLite库提供...

    Android主要可以分为四层架构:Linux内核层,系统运行层,应用框架层和应用层。

    1.Linux内核层

    Android系统是基于Linux内核开发的,为Android设备的各种硬件提供底层驱动,如显示驱动,声音驱动,电源管理,相机驱动等。

    2.系统运行库层

    系统运行库层通过一些C/C++库来为Android实现支持SQLite库提供数据库,OpenGUI|ES库提供3D绘图的支持,Webkit库提供浏览器内核支持等

    另外在Android运行库中允许开发者使用Java语言来编写Android应用,以及内置虚拟机使得每一个应用程序都可以独立运行。

    3.应用框架层

    应用框架层提供了构建应用程序所用到的API。开发者通过应用框架层中的API开发Android应用程序。

    4.应用层

    应用层包括安装在你手机中的应用程序,以及手机自带的相机,短信等软件。

    Android应用开发特色

    1.四大组件

    Android系统四大组件分别是活动(Activity),服务(Service),广播接收器(Broadcast Receiver),内容提供器(Content Provider)

    活动:Android应用程序中你能够直观的感受到的部分,如UI等都是放在活动当中。

    服务:你无法看到,但会在后台默默运行,即使隐藏,退出了应用。

    广播接收器:运行你接收来自设备外的信息数据,如电话,短信;同时你的应用也可以向外发送广播。

    内容提供器:为不同应用将实现数据的共享,如调用图库的图片,获取其他应用程序的权限信息。

    2.丰富的系统控件

    实现应用程序UI界面

    3.SQLite数据库

    提供轻量级,运算速度极快的嵌入式关系型数据库。与Android封装好API进行操作,让数据存储,读取变得简单。

    4.强大的多媒体

    提供声音,视频,录音,拍照等媒体功能。

    5.地理位置定位

    内置GPS,以及加速度等诸多传感器。

    展开全文
  • Android系统Java访问Native函数

    千次阅读 2016-10-14 09:57:34
    Android系统中Java函数需要访问Native函数的话,需要通过Jni,下面通过一个示例来演示windows环境下,在java中调用C库函数。1、编写java代码。在java写好类和函数,例如HelloJNI.java:class HelloJNI { // ...

    Android系统中Java层函数需要访问Native层函数的话,需要通过Jni,下面通过一个示例来演示windows环境下,在java中调用C库函数。

    1、编写java代码。在java层写好类和函数,例如HelloJNI.java:

    class HelloJNI {
        // 本地方法声明
        native void printHello();
    
        native void printString(String str);
    
        // 加载库
        static {
            System.loadLibrary("hellojni");
        }
    
        public static void main(String args[]) {
            HelloJNI myJNI = new HelloJNI();
            // 调用本地方法(实际调用的是使用C语言编写的JNI本地函数)
            myJNI.printHello();
            myJNI.printString("Hello World from printString fun");
        }
    }

    2、 编译java代码,在cmd命令行中使用javac命令编译上面的HelloJNI.java文件,生成HelloJNI.class文件: javac -encoding uft-8 HelloJNI.java
    在当前目录下就有了.java文件和.class文件了。
    3、生成C语言的头文件:我们这里使用的是javah命令来生成所需要的C语言的头文件HelloJNI.h。在cmd控制台中输入javah HelloJNI命令。生成的头文件HelloJNI.h如下:

    /* DO NOT EDIT THIS FILE - it is machine generated */
    #include <jni.h>
    /* Header for class HelloJNI */
    
    #ifndef _Included_HelloJNI
    #define _Included_HelloJNI
    #ifdef __cplusplus
    extern "C" {
    #endif
    /*
     * Class:     HelloJNI
     * Method:    printHello
     * Signature: ()V
     */
    JNIEXPORT void JNICALL Java_HelloJNI_printHello
      (JNIEnv *, jobject);
    
    /*
     * Class:     HelloJNI
     * Method:    printString
     * Signature: (Ljava/lang/String;)V
     */
    JNIEXPORT void JNICALL Java_HelloJNI_printString
      (JNIEnv *, jobject, jstring);
    
    #ifdef __cplusplus
    }
    #endif
    #endif

    这里面有在java文件中声明的两个函数的原型。不要随意修改,在后面使用。
    ps:这里主要是注册java在JIN层的函数,一般有静态和动态两种注册方法,这里采用的就是静态注册方法。
    4、编写C/C++代码:
    在hellojni.c文件中实现在头文件HelloJNI.h中声明的函数,注意补齐形参,并包含头文件:

    #include "HelloJNI.h"
    #include <stdio.h>
    /*
    * Class:     HelloJNI
    * Method:    printHello
    * Signature: ()V
    */
    JNIEXPORT void JNICALL Java_HelloJNI_printHello
        (JNIEnv *env, jobject obj){
            printf("Hello World!\n");
            return;
    }
    
    /*
    * Class:     HelloJNI
    * Method:    printString
    * Signature: (Ljava/lang/String;)V
    */
    JNIEXPORT void JNICALL Java_HelloJNI_printString
        (JNIEnv *env, jobject obj, jstring string){
            const char *str = (*env)->GetStringUTFChars(env,string,0);
            printf("%s!\n",str);
            return;
    }

    5、生成共享库.dll文件:
    5.1、首先将jdk目录下的jni.h(C:\Program Files\Java\jdk1.8.0_102\include\jni.h)和jni_md.h(C:\Program Files\Java\jdk1.8.0_102\include\win32\jni_md.h)这两个文件拷贝到vs的include(D:\Microsoft Visual Studio 11.0\VC\include)目录下。
    5.2、将3和4中的.c文件和.h文件拷贝到D:\Microsoft Visual Studio 11.0\VC目录中,供编译使用。
    5.3、在开始菜单中打开Microsoft Visual Studio 2012->Visual Studio Tools->VS2012 x64 兼容工具命令提示(根据自己平台选择32位还是64位,这里是选择的64位的)。在命令行中输入如下命令:

    cl -I"<C:\Program Files\Java\jdk1.8.0_102>\include" -I"<C:\Program Files\Java\jdk1.8.0_102>\include\win32" -LD hellojni.c -Fehellojni.dll

    ps:各种参数的含义:

    cl:visual c++编译命令;
    -I<dir>:添加要检索头文件的目录路径,这里需要包含jni.h和jni_md.h这两个头文件。虽然在上述命令中已经包含着两个头文件的目录路径,但还是存在无法找到头文件的情况,所以特地在4.1中将这两个头文件手动添加到了……\VC\include目录下。
    -LD:创建dll文件;
    -Fe<文件名>:指定编译结果文件名称;

    6、运行java程序:将5中生成的hellojni.dll文件拷贝到java文件目录下,然后在cmd命令行中输入java HelloJNI运行java程序。根据书写的程序内容,应该在控制台中返回:

    Hello World!
    Hello World from printString fun!

    至此就完成了在java中调用C库函数!

    展开全文
  • 分析 第一Linux操作系统和驱动(Linux kernel:由C语言实现 Android核心系统服务依赖于Linux2.6内核包括安全性内存管理进程管理网络协议驱动模型Linux内核也作为硬件和软件栈之间的抽象 除了标准的Linux内核外...
  • Android系统体系架构

    千次阅读 2019-08-09 20:00:48
    Android体系架构分为四:应用、应用框架、库、...Android开发人员接触最多的就是框架,该提供了各种各样的系统API,开发人员通过使用这些API来构建上一的各种各样的APP。这些API包括且不限于:Acti...

    Android体系架构分为四层:应用层、应用框架层、库层、内核层。(盗用一张图)

     

    一、应用层

    应用层包括手机上的所有APP,无论是系统自带的还是用户开发的。他们都是基于第二层应用框架层开发的。

     

    二、应用框架层

    Android开发人员接触最多的就是框架层,该层提供了各种各样的系统API,开发人员通过使用这些API来构建上一层的各种各样的APP。这些API包括且不限于:Activity Manager(控制Activity的生命周期等)、Notification Manager(提供通知相关的功能)、Content Provider(实现应用程序间的数据共享)、Resource Manager(管理非代码资源,比如布局文件,图片资源,字符资源等等)、View(提供常见的视图控件)、Alarm Manager(提供闹钟相关服务)等等。

     

    三、库层

    第三层包含两部分内容:

            第一部分是Native C\C++系统库层,主要提供一系列第三方类库,常见的有系统C库、多媒体库(播放媒体文件)、SGL(2D图像引擎)、Free Type(渲染位图和矢量字体)、Sqlite(轻量级数据库)、SSL(Secure Socket Layer)、Webkit(提供网络工具)等等;

           第二部分是运行环境,包括Dalvik虚拟机和Java核心库。关于Dalvik虚拟机和JVM的区别:Dalvik是基于寄存器的,JVM是基于栈的。JVM运行.class文件,每个.class文件对应一个类;Dalvik虚拟机将.class文件转为.dex文件,只有一个.dex文件,包含了所有的类,并且通过性能优化转为.odex文件。基于寄存器的虚拟机运行速度更快,文件更小,效率更高,适合移动端。另外Dalvik虚拟机需要更多的指令空间。

     

    四、内核层

    Android系统底层是基于Linux系统的,主要提供各种硬件驱动。

    展开全文
  • Android系统体系结构详解

    万次阅读 多人点赞 2016-07-01 16:07:43
    Android会同一系列核心应用程序包一起发布,该应用程序包包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。 什么?这你已经知道了。那么你知道这些应用...

    开门见山,先上图
    Android系统架构图
    很明显四层:接下来一一讲解:

    Java应用程序层:

    Android会同一系列核心应用程序包一起发布,包括客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言调用应用程序框架层的接口编写的,显然你自己也可以使用Java通过JNI(Java Native Interface)的方式,配合Android NDK来开发原生程序(Android Studio里面可直接下载集成NDK。我的另外一篇博客里面有实例)。它允许Java代码和其他语言写的代码(通常为 C和C++ ,形成的代码称为本地代码)进行交互.使用Java与本地已编译的代码交互,通常会丧失平台可移植性.但有些情况下这样做是可以接受的,甚至是必须的。

    Java应用程序框架层

    这一层刚刚已经提到了一下,他其实就是隐藏在每个应用后面的是一系列的服务和系统。
    应用框架层为应用开发者提供了用以访问核心功能的API框架及各种服务和管理工具,包括界面管理、数据访问、应用层的消息传递、应用包的管理、电话管理、定位管理等功能。
    它主要包括以下几部分:
    丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text boxes),按钮(Buttons), 甚至可嵌入的web浏览器。
    内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据。
    资源管理器(Resource Manager)提供非代码资源的访问,如本地字符串,图形,和布局文件。
    通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。
    活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。

    Android系统提供给应用开发者的本身就是一个框架,所有的应用开发都须遵守该框架的原则。我们在开发应用时就是在这个框架上进行扩展。Android应用框架功能如下。
    *android.app:提供高层的程序模型和基本的运行环境。
    android.content:包含对各种设备上的数据进行访问和发布。
    android.database:通过内容提供者浏览和操作数据库。
    android.graphics:底层图形库,包含画布、颜色过滤、点、矩形。可直接绘制到屏幕上。 android.location:定位和相关服务的类。
    android.media:提供一些类管理多种音频、视频的媒体接口。
    android.net:提供帮助网络访问的类,超过通常的java.net.接口。
    android.os:提供了系统服务、消息传输和IPC机制。
    android.opengl:提供OpenGL的工具。
    android.provider:提供访问Android内容提供者的类。
    android.telephony:提供与拨打电话相关的API交互。
    android.view:提供基础的用户界面接口框架。
    android.util:涉及工具性的方法,例如时间日期的操作。
    android.webkit:默认浏览器操作接口。
    android.widget:包含各种UI元素(大部分是可见的)在应用程序的布局中。

    C、C++本地库和Android运行时环境

    开发者可在自己的应用中使用C、C++本地库中的接口来方便地实现官方API未实现的功能 。例如,Facebook提供了一个开源的Java库,开发者可在自己的应用中嵌入Facebook的部分社交功能, 第三方类库独立于 Android系统架构实现,但与系统架构处于相同的地位,都是使用内核层来提供服务,实现、封装功能模块,供应用层调用。
    Android C/C++库通过Android应用程序框架为开发者提供服务。以下是一些核心库:
    系统 C 库 - 一个从BSD (Berkeley Software Distribution,伯克利软件套件),Unix的衍生系统继承来的标准C系统函数库 Libc ), 它是专门为基于Embedded linux的设备定制的。

    媒体库 - 基于PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。

    Surface Manager - 管理显示子系统,并为多个应用程序提供2D和3D图层的无缝融合。

    LibWebCore - web浏览器引擎,支持Android浏览器和一个可嵌入的web视图。

    Android运行时环境( Android Runtime)提供了核心链接库和 Dalvik VM虚拟系统,采用 Java开发的应用程序编译成apk程序代码后,交给 Android操作环境来执行。
    Android采用 Dalvik VM来代替 Java VM,将写好的 Java程序“.java”先编译成“.class”程序,这个过程和开发 Java SE是相同的;接下来再次编译成可以在 Dalvik VM执行的“.dex”程序,最后包装成 Android可执行“.apk”文件
    每个Android 应用都运行在自己的进程上, Dalvik 虚拟机为它分配自有的实例。 Dalvik 使一台设备能运行多个虚拟机程序但消耗较少的资源。

    Linux内核与驱动层

    Android是基于不同版本的 Linux内核开发出来的, Linux内核层包括系统层安全机制、内存管理、进程管理、网络堆栈及一系列的驱动模块,位于硬件与其他的软件层之间,提供与硬件的交互.
    Android 内核与标准 Linux 内核在文件系统、进程间通信机制、内存管理等方面存在不同:
    Android内核中增加了标准 Linux 内核中没有采纳的 YAFFS2文件系统。 YAFFS2 ( Yet Another Flash File Sy-stem,2nd edition ) 是专用于 Flash 的文件系统, 对 NAND-Flash 芯片有着良好的支持。 YAFFS2 是日志结构的文件系统,提供了损耗平衡和掉电保护,可以有效地避免意外断电对文件系统一致性和完整性的影响。
    Android 增加了一种进程间的通信机制 IPC Binder , 在内核源代码中, 驱动程序文件为 coredroid/include/linux/binder.h 和 coredroid/drivers/android/binder.c 。 Binder 通过守护进程 Service Manager 管理系统中的服务,负责进程间的数据交换。 各进程通过 Binder 访问同一块共享内存,以达到数据通信的机制。
    在标准 Linux内核当中,使用一种叫做 OOM( Out of Memory) 的低内存管理策略;当内存不足时,系统检查所有的进程,并对进程进行限制评分, 获得最高分的进程将被关闭(内核进程除外)。 Android 系统采用的则是一种叫作LMK ( Low Memory Killer )的机制,这种机制将进程按照重要性进行分级、分组。内存不足时,将处于最低级别组的进程关闭。 例如,在移动设备当中, UI 界面处于最高级别,所以该进程永远不会被中止,这样,在终端用户看来,系统是稳定运行的。LMK 内核源码->coredroid/drivers/misc/lowme -morykiller.c

    Android Linux内核核心驱动主要包括:

    Android Binder,基于OpenBinder框架的一个驱动,用于提供Android平台的进程间通讯(IPC,inter-process communication)。Android中每个应用都是一个独立的系统进程,而资源的管理和分配是以进程为单位进行的,通常情况下一个进程不能直接访问另一个进程的资源.为了实现进程通信, Android系统引入了 Binder机制.这种通信基于 Client/Server模型,通信的双方都必须创建一个 IBinder接口,进行通信时, Client首先通过系统的 ServiceManager获取目标 Service的代理对象,并通过这个代理对象调用Service提供的功能接口,调用请求会通过 Binder驱动发送给Service,而Service的处理结果也会通过 Binder驱动发送给 Client。
    源代码位于drivers/staging/android/binder.c

    Android电源管理(PM),一个基于标准Linux电源管理系统的轻量级的Android电源管理驱动,针对嵌入式设备做了很多优化。
    ####源代码位于kernel/power/earlysuspend.c
    kernel/power/consoleearlysuspend.c
    kernel/power/fbearlysuspend.c
    kernel/power/wakelock.c
    kernel/power/userwakelock.c

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

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

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

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

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

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

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

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

    Yaffs2 File System,Android采用Yaffs2作为MTD nand flash文件系统,源代码位于fs/yaffs2/目录下。Yaffs2是一个快速稳定的应用于NAND和NOR Flash的跨平台的嵌入式设备文件系统,同其他Flash文件系统相比,Yaffs2使用更小的内存来保存他的运行状态;Yaffs2的垃圾回收简单快速,因此能达到更好的性能;Yaffs2非常适合大容量的Flash存储。

    参考资料:
    【1】张玉清, 王凯, 杨欢, 方喆君, 王志强, 曹, 琛. Android安全综述[J]. 计算机研究与发展, 2014, (7): 1385-1396
    【2】陈璟, 陈平华, 李文亮. Android 内核分析[J]. 现代计算机(专业版), 2009, (11): 112-115
    【3】http://www.cnblogs.com/leaven/archive/2010/01/10/1643429.html

    展开全文
  • Android系统架构 五结构

    万次阅读 2017-06-27 14:09:43
    Android系统架构 五结构 Android系统架构(由下往上): Linux Kernel HAL Native C/C++ Libraries & Android Runtime Java Framework Applications Android系统架构
  • 1. Android手机操作系统是一个基于Linux Kernel的分层智能手机操作系统,其共分为4,从上到下分别是:  应用(Java ... 系统运行库(User Libraries),包含了手机系统平台必须的C/C++核心库、Dal...
  • Android 系统架构分为五,从上到下依次是:应用、应用框架系统运行库、硬件抽象、Linux内核1. 应用(SystemApps)这主要是JAVA开发的,负责与用户交互2.应用框架(Java API Framework)这是为开发...
  • Android系统框架四结构

    千次阅读 2019-02-22 15:26:28
    Google官方提供的Android系统的四架构图 从上到下进行简单介绍:   一、应用 Applications:应用由运行在Android设备上的所有应用构成,包括预装的系统应用和自己安装的第三方应用。大部分是由Java语言...
  • Android系统架构(五

    千次阅读 2019-10-07 21:29:11
    最开始的Android系统框架分为5(内核、硬件抽象、系统运行库、应用程序框架、应用程序) 后来维基百科上搜索到的Android系统框架图为上图,少了一个硬件抽象HAL(GPS、Wi-Fi、Camera….) 从下往上看 ...
  • 06 Android系统之添加java系统服务

    千次阅读 2020-04-02 21:18:29
    目前对android系统体系了解比较少,主要区分一下服务、系统服务这两个概念 服务是一个后台运行的组件,执行长时间运行且不需要用户交互的任务。在android开发中作为一个应用组件,通过继承类来使用extern Service。 ...
  • 笔记1--Android系统

    2017-04-28 20:04:20
    Android系统大体可分为四,从下往上依次是: Linux内核:包含了Linux内核和一些驱动模块(比如USB驱动、Camera驱动、蓝牙驱动等)。目前Android2.2(代号为Froyo)基于Linux内核2.6版本。 Libraries:这一...
  • Android的Java层系统服务

    千次阅读 2016-01-24 22:04:28
    Android的Java系统服务(AndroidService)Android系统服务上接Framework框架,下接HAL硬件抽象,作为APP和硬件通信的中间管道之一,起着承上启下的重要作用,研究系统服务对APP开发,ROM开发以及底层开发都...
  • android 安卓系统

    千次阅读 2012-02-23 11:07:49
    Android是一种以Linux为基础的开放源码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用安卓(非官方)或安致(官方)。Android操作系统最初由Andy Rubin开发,最初主要支持手机。...
  • Android系统分为5,从高到低分别是应用程序、应用程序框架、系统运行库、硬件抽象和Linux内核,各采用软件栈(Software Stack)的方式进行构建。Android软件栈是通过一个应用程序框架提供了Linux...
  • android系统架构分为四,自底向上分别为: 一、linux内核以及驱动: android系统是基于linux2.6内核的,包括安全性、内存管理、进程管理、网络协议栈、驱动模型,此外android系统在linux系统上特有的驱动程序,...
  • android系统架构图及各介绍

    万次阅读 多人点赞 2016-07-15 13:50:26
    此技术文档主要是从基础了解Android系统架构,便于对以后开发形成一些基本应用架构。  Android的系统架构采用了分层架构的思想,如图1所示。从上层到底共包括四,分别是应用程序程序、应用框架、系统库和...
  • 在android2.3.1下进行HAL的开发,先参照网上弄了个hello的demo,首先看下HALandroid系统中的位置: 硬件驱动程序可以看做是在keinel,HAL封装了硬件驱动,然后再经过JNI接口的封装才能给Java应用程序调用...
  • 安卓系统中蓝牙服务的初始化流程分析 蓝牙系统依赖于安卓,从上到下,层次分明。本篇文章我们就来简单分析下蓝牙服务初始化的相关流程。 首先来了解下安卓系统中的蓝牙模块大致分为以下几部分: 对安卓系统...
  • 本系列为学习笔记,学习内容来自刘望舒的博客1.Android系统架构Android系统架构分为5 - 应用 - 应用框架 - 系统运行库 - 硬件抽象 - linux内核应用 无论是系统内置的应用程序还是非系统内置的...
  • 有时间了,就整理一下这几年下来android的基础知识,希望可以帮到需要的人和影响到一些开发者,然后也希望自己...Android 是一套基于linux内核的开源系统,主要应用于移动端,在移动互联网时代,应运而生。要详细了解它
  • Android系统是基于Linux内核的,这一为Android设备的各种硬件提供了底层的驱动(如显示,音频,照相机,蓝牙,WI-FI,电源管理等等),那么Android为什么会选择采用linux呢?原因与Linux的特性有关,内核作为一个...
  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 首先为了理解安卓系统是怎么工作的,就先来看一下android的...Android系统是基于Linux内核的,这一为Android设备的各种硬件提供了底层的驱动(如显示,
  • android 系统基本架构-软件层次

    千次阅读 2018-03-17 13:03:38
    Android 体系结构图  Android作为一个移动设备的平台,其软件层次结构包括了一个操作系统(OS...第一、操作系统层(OS) 第二、各种库(Libraries)和Android 运行环境(RunTime) 第三、应用程序框架(Application F
  • 一般情况下,我们在 android 原始 framework C/C++ 代码中添加 log 信息非常方便: 只需要添加如下头文件 : #define LOG_TAG "MediaRecorder" #include 并且在 函数中添加如下 log 输出信息(如蓝色...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 94,894
精华内容 37,957
关键字:

安卓系统c层