您的位置 首页 > 电脑资讯

安卓驱动程序开发_安卓 驱动开发

安卓驱动程序开发_安卓 驱动开发

       大家好,今天我想和大家详细讲解一下关于“安卓驱动程序开发”的知识。为了让大家更好地理解这个问题,我将相关资料进行了分类,现在就让我们一起来学习吧。

1.如何入手学习android 底层开发

2.myeclipse怎么搭建android开发环境

3.Android开发需要哪些技术

安卓驱动程序开发_安卓 驱动开发

如何入手学习android 底层开发

       android 底层开发学习:

       一、基于Android的CPU+GPU的异构编程开发,目前主要有以下几种平台:

       1. OpenCL

       在桌面系统和大规模并行计算领域被普遍使用的一种底层API。最近一段时间,主流的芯片厂商的旗舰或准旗舰芯片都开始支持OpenCL1.1或者1.2标准,包括高通,三星, 联发科,Rockchip等厂商的芯片,都可以找到OpenCL的支持。

       2. CUDA

       目前只有NVIDIA自己出的基于Tegra K1芯片的设备(NVIDIA Shield)支持CUDA,所以支持的面比较窄。

       3. RenderScript (RS)

       Google力推的异构编程,宗旨是由平台帮你选择运行的处理器,也就是说你是不知道你的程序跑在CPU还是GPU上的,这是由系统的驱动来决定的。想法是美好的,可现实是开发者并不买RS的帐, 大家觉得RS的性能不可控,灵活性太差,其文档之缺乏也被人诟病;此外,芯片厂商对于RS的优化都还普遍处于比较低阶的水平,这些都导致了RS在实际应用中很少被用到。

       二、由于OpenCL的普及程度,以下部分只针对OpenCL展开。

       目前支持OpenCL的设备和芯片

       1. 支持OpenCL的GPU

       高通几乎全系的GPU, 包括但不限于以下GPU (Adreno 305, 320, 330, 405, 420, 430, 530 ...)

       ARM Mali的6系和7系GPU, 比如T628, T760

       2014年以来较新的Imagination PowerVR GPU,比如G6430

       2. 支持OpenCL的芯片。以下是一个很粗略地列举了主要的支持OpenCL的芯片。

       高通8064, 8974(骁龙800,801), 8084(骁龙805), 8994(骁龙810)等

       三星 Exynos猎户座 5420, 5433 (内置ARM Mali GPU)

       联发科 MT6752 (内置ARM Mali T760 GPU)

       瑞芯微 RK3288 (内置ARM Mali GPU)

       3. 支持OpenCL的手机和平板。 这个就数不胜数了,下面只随手给出几个例子以供参考。(注意:Google Nexus系列的手机或平板,虽然硬件上支持OpenCL,但因为删掉了OpenCL的驱动程序,所以基本都不支持OpenCL;值得注意的是,据国外blog上报道,可以将相应的OpenCL驱动推送回设备以重新开启OpenCL的支持, 详见maxlv.net 的页面)

       三星 Galaxy S4, S5, S6, Note 3, Note 4

       LG G2, G3, G4

       HTC One M7, M8, M9

       小米使用高通芯片的手机和平板

       魅族M1 Note

       台积电P90HD

       等等等等。。。。

       如果不确定手头的设备是否支持OpenCL, 可以使用OpenCL-Z Android进行检测,这款软件可以显示详细的OpenCL的设备信息,同时运行micro-benchmark检测设备的计算能力。

       三、需要掌握的知识:

       1. 简单的GPU基本知识

       2. OpenCL并行程序设计

       3. Android NDK知识

       4. Android JNI接口的编写

       5. 简单的Android程序开发知识

       四、开发的步骤(这里只是步骤的精简版本,只阐述操作,不进行解释):

       1. 编写OpenCL的C/C++程序实现GPU的核心计算代码

       2. 用Android NDK编译之前写的C/C++代码。这一阶段可以在纯C/C++环境下工作,可以编写main函数测试实现的功能,用NDK将代码编译为可执行的代码(BUILD_EXECUTABLE), 然后用ADB将可执行程序推送到设备上运行。运行可执行程序要求设备具有root权限,如果没有root权限,可以通过Native Program Launcher (AndroidNativeLauncher · GitHub,可能需要**) 这一工具在设备上执行二进制代码。

       3. 上一阶段测试结束,功能基本正常。开始编写JNI接口。

       4. 开始编写Android应用程序,使用JNI封装native函数。编译C/C++代码成动态链接库。

       5. 在Android程序里,以静态方式加载上一步编译的动态链接库。

       6. 在需要的地方(比如点击按钮事件),调用相应的native函数,即可实现相应的功能。

myeclipse怎么搭建android开发环境

       1、首先将手机设置为调试模式,方法:设置——应用程序——开发——USB调试,打上√即可。

       2、用数据线连接至电脑,在电脑上安装豌豆荚,此时豌豆荚会帮你安装驱动,安装好后豌豆荚就可以连接上手机了用adb命令测试是否有装置已连接。

       3、如果无法测试装置是否连接,就是用adb server启动服务项开始在真机上调试,在eclipse中选择Run——Run Configurations,在左边选择好你要调试的工程,然后将右边切换至Target标签下。

       6连接至真机调试,可选第一个或第二个,这里我直接选择第一个,点击Run,等待几秒钟出现以下界面。

Android开发需要哪些技术

       Android开发环境搭建和HelloWorld

       一、Android开发环境搭建前准备:

       1、Android开发利器掌握

       JavaSDK(software development kit)

       AndroidSDK

       Eclipse及ADT插件(android development tools)

       二、开发环境安装(常规安装步骤):了解

       1、安装JavaSDK,配置环境变量

       2、安装Eclipse

       3、安装Android SDK,完成配置

       4、安装ADT插件,下载安装包(/android/eclipse/)

       5、创建AVD

       三、快速安装:掌握

       1、拷贝其他机器中android sdk和eclipse

       2、修改Eclipse中配置信息

       3、创建AVD(android virtual device)

       Eclipse的首选项设置:

       1、字符集设置:

       General——Editors——TextEditors——Spelling——utf-8

       General——Workspace——Other——UTF-8

       Content Assist —— Auto Activation triggers for Java

       save actions

       四、Android发展历史了解

       Android公司于2003年在美国加州成立,创始人Andy Rubin , Rich Miner等;

       2005年由Google收购注资,并组建开放手机联盟;

       2007年11月12日,Google发布Android1.0操作系统;

       2008年9月,首款搭载Android 1.0 OS的Android手机诞生T-Mobile G1。不支持触摸输入,因此G1配置实体键盘。(HTC宏达电代加工);

       2009年4月30日发布Android 1.5 Cupcake。这是Android发展历史上第一个重要的里程碑。此后,Android系统版本都是以甜点进行命名,并以字母排序;

       2009年9月15日发布Android 1.6 Donut。Android1.6首次支持了CDMA网络;

       2009年11月Android 2.0 Eclair降临了。它是Android发展历史上第二个重要的里程碑;

       2010年5月20日发布Android 2.2 Froyo。直到Android2.2发布时,谷歌似乎才开始认真考虑Android的企业级功能;

       2010年12月7日发布Android 2.3 Gingerbread。该版本开始对NFC的支持(Near Field Communication);

       2011年2月2日发布Android 3.0 Honeycomb。“蜂巢”正式进军平板电脑。

       2011年10月19日在香港发布Android4.0 Sandwich。4.0是Android发展历史上又一次重大的升级;

       2012年6月28日发布Android 4.1/4.2 Jellybean。Android4.1是谷歌继蜂巢之后,一次全新的平板策略尝试。

       Android基本常识:掌握

       1.5 Cupcake API 3

       1.6 Donut API 4

       2.0/2.0.1/2.1 Eclair API 7

       2.2 Froyo (Frozen Yogurt) API 8

       2.3.1/2.3.3 Gingerbread API 9/API 10

       3.0/3.1/3.2 Honeycomb API 11/API 12/API 13

       4.0/4.0.3 Icecream Sandwich API 14/API 15

       4.1.2/4.2.2/4.3 JellyBean API 16/API 17/API 18

       4.4 KitKat API 19

       五、Android学习路线图:

       学习Android要具备的基础知识

       JavaSE基本知识:集合、IO操作、线程、网络访问、XML解析、JSON解析

       WEB开发知识:HTML、jsp、servelet

       服务器开发知识:jdbc数据库操作(Mysql)

       六、Android的系统架构

       设备驱动程序层(Linux Kernel):该层主要包括:驱动、内存管理、进程管理、网络协议等组件。

       执行层c/c++函数库层(Libraries)及Android Runtime:

       Java不能直接访问硬件,要访问硬件,必须使用NDK。NDK是由c/c++语言编写的库(.so文件),该层是对应用程序框架层提供支持的层。

       SSL:Secure Sockets Layer安全套接字层

       libc:C运行时库

       WebKit:负责浏览器支持(Chrome和Safari都使用该库来支持浏览器)

       FreeType:负责字体支持

       应用程序框架层(Application FrameWork):该层一般都是开发人员直接调用的API。该层主要由Java语言编写。

       应用程序层(Applications):由运行在Dalvik虚拟机上的app组成。(Dalvik是Google公司为Android专门设计的Java虚拟机,运行Java程序的速度比JVM更快,以此来克服手持设备在内存、处理器速度和功率等方面上的限制)。该层由Java语言编写。

       Dalvik是冰岛一个小镇的名字。Dalvik VM获取生成的java类文件,将它们组合为一个或者多个、Dalvik可执行文件(.dex)。Dalvik VM的目标是找到所有可能的方式来优化JVM性能、内存及电池寿命。

       采用Dalvik VM的一个结果是,Android中最终的可执行程序代码不是java字节码,而是.dex文件。这意味着无法直接执行java字节码,必须得到java的类文件,然后将它们转换为.dex文件。

       七、如何学习Android?

       PPT注明当天教学重点和教学目标,必须要达到教学目标;

       熟练模仿出当天课堂演示代码的内容;

       完成讲师布置的作业;

       手写笔记,整理当天学习过程中核心代码

       有道词典

       八、Andorid要掌握的核心内容:

       Android开发环境配置

       Android界面编程(常用布局、基本组件)

       Android高级组件编程(Dialog设计、ListView设计及分页、Toast、Notification、Menu、WebView)

       事件处理

       Activity及Intent

       Android应用资源的访问

       Android网络应用开发及异步任务AsyncTask

       Android数据存储(内部存储及SDcard存储)和IO

       使用ContentProvider实现数据共享

       Service编程

       Broadcast编程

       图像图像处理

       多媒体应用开发

       传感器应用开发

       GPS应用开发

       性能优化、apk安装、平板技术开发

       九、Android-sdk目录结构介绍:

       tools

       platforms

       platform-tools

       docs

       sources

       十、开发Android的Eclipse视图设置

       DDMS

       LogCat

       其它首选项设置

       十一、HelloWorld及Android项目目录结构介绍

       src(开发人员源码放置目录)

       gen(自动生成R.java,所有的资源文件都会在R.java文件中以final static 内部类的形式被注册。所以可以通过R..id,R.layout等形式来访问资源。)

       assets(资产目录。在这个目录中放置的资源文件,不会在R.java文件中被注册,也就是不会生成资源id。一般程序中的音频或视频文件可以放置在这个目录下。这个目录支持任意深度的子目录,而res资源目录则不可以。)

       bin(编译后的class等文件在此目录。系自动生成)

       libs(项目自动生成)

       res(资源文件。是Android编程中最重要的目录。所有的资源都定义在这个目录下。)

       drawable(放置的目录)备注:android中不允许资源的文件名中出现大写字母,并且不能以数字开头

       layout(布局文件放置的目录)

       menu(菜单文件放置的目录)

       values(字符串、尺寸等文件放置的目录)

       AndroidManifest.xml (Android清单文件——是Android开发中非常重要的文件。

       该文件中定义了本App的版本号;

       适用的手机操作系统最大及最小的兼容版本号;

       整个项目中每写一个组件(Activity、Service、Broadcast),都需要在该清单文件中注册;

       运行本程序的权限等等。

       备注:res和assests目录的不同:

       是否在R.java文件中被注册;

       res所放的文件类型是规定好的;而assests目录下放置的文件类型不限制;

       访问方法不同。res中文件使用R.内部静态类.id来访问;而assest中的文件通过IO流来访问。

       十二、需要掌握的单词缩写:

       专业英文缩写及词汇:

       API,JDK,SDK,Dalvik,ADT,AVD,Emulator,DDMS,ADB,APK

       drawable,activity,intent,manifest,permission

       十三、备注:

       1、如何通过F3访问到源代码?

       点击需要访问的类或者方法,显示界面如下图:

       点击“Attach source”,进入下一个界面,选择"External location" , 选择“External Folder”,找到android_sdk下面的sources目录下的某个子目录即可。

       十四、Android程序初体验:

       在xml布局文件中给一个文本控件的id赋值;

       在MainActivity的onCreate方法中,加载该文本控件;

       给该文本控件赋值。

       核心代码如下:

       private TextView text_main_info;

       text_main_info = (TextView)findViewById(R.id.text_main_info);

       text_main_info.setText("指定的内容");

       备注:Android UI:

        Android使用的UI框架本质上更先进,更具有异步特征。属于第四代UI框架。UI是声明性的,具有独立的样式和主题。

       基于c的传统Microsoft Windows API是第一代UI框架;

       基于c++的MFC(Microsoft Foundation Classes , Microsoft基础类)是第二代UI框架;

       基于java 的Swing是第三代;

       Android UI,javaFX , Microsoft Silverlight ,Mozilla XUL都是第四代UI框架。

       十五、扩展知识:常用adb shell命令 了解

       1. 显示系统中全部Android平台:

       android list targets

       2. 显示系统中全部AVD(模拟器):

       android list avd

       3. 创建AVD(模拟器):

       android create avd --name 名称 --target 平台编号

       4. 启动模拟器:

       emulator -avd 名称 -sdcard ~/名称.img (-skin 1280x800)

       5. 删除AVD(模拟器):

       android delete avd --name 名称

       6. 创建SDCard:

       mksdcard 1024M ~/名称.img

       7. AVD(模拟器)所在位置:

       Linux(~/.android/avd) Windows(C:\Documents and Settings\Administrator\.android\avd)

       8. 启动DDMS:

       ddms

       9. 显示当前运行的全部模拟器:

       adb devices

       10. 对某一模拟器执行命令:

       abd -s 模拟器编号 命令

       11. 安装应用程序:

       adb install -r 应用程序.apk

       12. 获取模拟器中的文件:

       adb pull <remote> <local>

       13. 向模拟器中写文件:

       adb push <local> <remote>

       14. 进入模拟器的shell模式:

       adb shell

       15. 启动SDK文档实例下载管理器:

       android

       16. 卸载apk包:

       adb shell

       cd data/app

       rm apk包

       exit

       adb uninstall apk包的主包名

       adb install -r apk包

       17. 查看adb命令帮助信息:

       adb help

       18. 在命令行中查看LOG信息:

       adb logcat -s 标签名

       19. adb shell后面跟的命令主要来自:

       源码\system\core\toolbox目录和源码\frameworks\base\cmds目录。

       20. 删除系统应用:

       adb remount (重新挂载系统分区,使系统分区重新可写)。

       adb shell cd system/app rm *.apk

       21. 获取管理员权限:

       adb root

       22. 启动Activity:

       adb shell am start -n 包名/包名+类名(-n 类名,-a action,-d date,-m MIME-TYPE,-c category,-e 扩展数据,等)。

       23、发布端口:

       你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。

       如:adb forward tcp:5555 tcp:8000

       24、复制文件:

       你可向一个设备或从一个设备中复制文件, 复制一个文件或目录到设备或模拟器上:

       adb push <source> <destination></destination></source>

       如:adb push test.txt /tmp/test.txt

       从设备或模拟器上复制一个文件或目录:

       adb pull <source> <destination></destination></source>

       如:adb pull /addroid/lib/libwebcore.so

       25、搜索模拟器/设备的实例:

       取得当前运行的模拟器/设备的实例的列表及每个实例的状态: adb devices

       26、查看bug报告:

       adb bugreport

       27、记录无线通讯日志:

       一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:

       adb shell logcat -b radio

       28、获取设备的ID和序列号:

       adb get-product

       adb get-serialno

       29、访问数据库SQLite3

       adb shell sqlite3

       #cd system/sd/data //进入系统内指定文件夹

       #ls //列表显示当前文件夹内容

       #rm -r xxx //删除名字为xxx的文件夹及其里面的所有文件

       #rm xxx //删除文件xxx

       #rmdir xxx //删除xxx的文件夹

       十六:备注:

       (一)、AVD中的ARM:

       ARM:Advanced RISC Machine 高级的精简指令集机器

       RISC:Reduced Instruction Set Computer 精简指令集计算机

       ARM是一种基于RISC的32位微处理器架构,设计简单,通过高度集中精简的指令集来提高速度。模拟器就是在基于此架构的处理器上运行Android app。

       ARM被广泛应用于手持设备和其它嵌入式电子设备。低功耗是它最大的特点,移动市场广泛使用基于此架构的处理器。

       (二)、ping

       (三)、android:configChanges属性

       对android:configChanges属性,一般认为有以下几点:

       1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

       2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

       3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

       但是,自从Android 3.2(API 13),在设置Activity的android:configChanges="orientation|keyboardHidden"后,还是一样 会重新调用各个生命周期的。因为screen size也开始跟着设备的横竖切换而改变。所以,在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,如果你想阻止程序在运行时重新加载Activity,除了设置"orientation", 你还必须设置"ScreenSize"。

       解决方法:

       AndroidManifest.xml中设置android:configChanges="orientation|screenSize“

       安卓开发需要学:

       一、应用程序

       Android以Java为编程语言,使接口到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类负责创建视窗,一个活动中的Activity就是在foreground(前景)模式,背景运行的程序叫做Service。

       二、中介软件

       操作系统与应用程序的沟通桥梁,并用分为两层:函数层(Library)和虚拟机(VirtualMachine)。Bionic是Android改良libc的版本。

       Android同时包含了Webkit,所谓的Webkit就是AppleSafari浏览器背后的引擎。Surfaceflinger是就2D或3D的内容显示到屏幕上。Android使用工具链(Toolchain)为Google自制的BionicLibc。

       三、硬件抽像层

       Android的HAL(硬件抽像层)是能以封闭源码形式提供硬件驱动模块。HAL

       的目的是为了把Androidframework与Linuxkernel隔开。

       让Android不至过度依赖Linux

       kernel,以达成kernelindependent的概念,也让Androidframework

       的开发能在不考量驱动程序实现的前提下进行发展。

       四、编程语言

       Android是运行于Linuxkernel之上,但并不是GNU/Linux。因为在一般GNU/Linux里支持的功能,Android大都没有支持。

       包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。

       五、安全控制

       目前Android的Linuxkernel控制包括安全(Security),存储器管理(MemoryManagemeat),程序管理(ProcessManagement),网络堆栈(NetworkStack),驱动程序模型等。

       下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo是Android用来辅助Git工作的一个工具。

       好了,今天我们就此结束对“安卓驱动程序开发”的讲解。希望您已经对这个主题有了更深入的认识和理解。如果您有任何问题或需要进一步的信息,请随时告诉我,我将竭诚为您服务。

热门文章