Android SDK PDK NDK详解

Framework学习(一)Android 系统架构,安卓开发中遇到最难的问题 自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中… 阅读详情

昨天一个同事问我Android PDK,NDK,SDK都是做什么的,什么意思。之前听到过这几个词,感觉自己能够理解,

但是发现要比较清晰的给她解释才发现自己的理解可能还不是很到位,带着疑问查了查资料,结合自己的理解写

下来。

其实这个三个词应该是在软件开发领域通用的,它们的全称分别为SDK(Software Development Kit),PDK(Platform

Development Kit),NDK(Native Development Kit),我们可以从它们的用途以及针对的人群来理解一下。

1.SDK 软件开发套件

  一般平台都会发布自己的SDK,SDK包含该平台为应用程序开发人员提供的开发工具,主要是所有公开API

的集合,应用程序开发人员可以借助SDK中的API快速的进行应用的开发。

   Android SDK针对所有安卓应用开发人员开放,下载ADT查看sdk目录如下:

 sdk
├── add-ons
├── build-tools
├── extras
├── platforms
├── platform-tools
└── tools

SDK文件目录解释:

1) add-ons   这里保存一些附加库,例如GoogleMaps

2) build-tools 这里放的是Android的一些重要的编译工具,比如aapt、aidl、逆向调试工具dexdump和编译脚本dx等

3) extras 存放的是几次大的升级添加的新功能相关的static library,如android-v4,android-v7,android-v13

4) platforms 存放的是平台真正的SDK,其中会根据APILevel来区分SDK的版本,命名规则android-APILevel,如android 4.4

                     SDK的文件夹名称为android-20,其文件目录如下:

├── android.jar
├── build.prop
├── data
├── framework.aidl
├── sdk.properties
├── skins
├── source.properties
├── templates
└── uiautomator.jar

该目录下主要文件android.jar为该版本framework的主要文件,包括class,图片等;

data目录下为系统的资源文件,包括字符串资源,fonts字体库文件,activity broadcast的action记录,intent的category,

widget的列表等内容;skins目录为Android模拟器的皮肤资源;templates目录下为创建Android工程默认模板,包括

AndroidManifest.xml,java文件,launch图标等;

5) platform-tools  此目录主要放置的是平台工具,如adb, fastboot, sqlite3等

6) tootls  这个目录中有比较重要的调试工具,如ddms(包括一些截图),Android模拟器的主程序emulator,traceview性能优化工具,

               UI控件扫描工具uiautomatorviewer,UI层级显示工具hierarchyviewer,代码混淆工具proguard,ant编译脚本,代码缺陷

               扫描工具lint等,这个目录下也有个templates目录,简单看了下不太明白是干什么用的,有兴趣的可以了解一下。

2.PDK 平台开发套件(合作伙伴开发套件)

PDK主要针对系统和平台开发的人员,有的博客上说PDK对于解决Android碎片化有一定的作用,在PDK推出之前,未能参与Google

早期开发设备计划的OEM厂商和半导体供应商必须等到Android开源版本公布后,才能开始进行开发。而从Jelly Bean,也就是Android

 4.1版本开始Google在发布新的Android版本之前会Release给与其签约过的OEM厂商和半导体供应商PDK(PDK的获取需要授权,因为

PDK中的新版Android尚未正式发布),这样OEM厂商不会再落后于Google挑选的独家早期开发伙伴。原来的时候,只有Google的自有品

牌Nexus设备才能成为市场领先者,但以后的情况可能不一定会如此,因为会有许多积极的OEM 厂商也能借助PDK快速推出新版产品。


这个就是PDK的作用,加快OEM厂商的update速度,不然Android的新版本的使用率会跟不上更新的速度。

这个PDK中会有一些平台的少量Code,以及一些binary文件,能够是系统工程师尽快的进行本平台的一些驱动的开发,调试,以及一些

平台的新功能开发,至于PDK的详细文件目录以及文件内容我暂时不太清楚。

3.NDK 原生开发套件(这个我翻译得比较蹩脚)

Android的SDK是中的API都是java的,众所周知,安卓应用跑在dalvik/ART上,所以第三方应用基本上只能通过java来进行开发,如果

想要通过C来开发,需要通过JNI来实现,个人理解由于C/C++上有很多成熟的库可以用,所以Google开辟的NDK,可以使得C/C++的

应用也能直接在Android上跑起来,但是这里面也存在技术障碍,比如程序更加复杂,兼容性难以保障,无法访问Framework API,Debug

难度更大等,开发者需要自行斟酌使用。NDK官方说明

我没有进行过NDK的开发,查阅到NDK的讲述有一篇特别详细的博客,有兴趣或这需求的可以根据该blog学习一下。

如果有更多关于NDK的问题可以到NDK论坛找找看。

参考文章:

1.http://www.cnblogs.com/Soprano/articles/2559332.html

2.http://www.eet-china.com/ART_8800676827_617693_NT_2debd506.HTM

3.http://www.oschina.net/p/android+ndk

嵌入式Linux&Android开发-SDK介绍 目录 一、Android系统架构 二、SDK目录解析 2.1 SDK子目录解析-Uboot 2.2SDK子目录解析-Kenerl 2.3SDK子目录解析-Android文件系统 2.3.1Android文件系统子目录解析-Framworks 三、固件目录解析 一、Android系统架构 二、SDK目录解析 ├── abi 应用程序二进制接口,描述了应用程序和操作系统之间,一个应用和它的库之间,或者应用的组成部分之间的低接口 。 ├── art 和androi... 阅读详情

相关推荐

android-pdk:Pinterest Android SDK

适用于Android的PinterestSDK 适用于Android的PinterestSDK允许您使用Pinterest验证帐户并代表已验证的用户发出请求。 有关支持的端点的详细信息,请访问 。 安装 使用AAR 转到Android Studio | 新项目| 最低SDK 选择“ API 11:Android 3.0”或更高版本,然后创建新项目。 创建新项目后,请转到“文件”>“新建”>“新模块” 选择“导入.JAR或> AAR包” 输入从该存储库下载的.AAR文件的路径。 在文件>项目结构下,添加pdk模块作为项目的依赖项 将以下内容作为依赖项添加到build.gradle文件中 compile ' com.mcxiaoke.volley:library:1.0.+ ' 使用源代码 转到Android Studio | 新项目| 最低SDK 选择“ API 11:And

aosp android 区别,aosp和android pdk有什么区别?

首先,我知道pdk的定义。 “平台开发工具包”。 我的问题如下。aosp和android pdk有什么区别?我用google搜索了一下android pdk并阅读了其中的一些。 但我仍然好奇pdk是什么。当我听说谷歌提供了一些领先的manifactors新版本的android作为pdk。 在这部分,我很好奇。 如果pdk包含所有的源代码,它只是最新的Android源代码,谷歌标签,对不对?有人说,...

weixin_39693437的博客 1246

Android_RIL层剖析(官方翻译).

http://www.kandroid.org/android_pdk/telephony.html Android 无线接口层(Radio Layer Interface) 目录: 1、介绍 2、RIL 初始化 3、RIL 交互 ----3.1 主动请求 ----3.2 被动请求 4、实现RIL -----RIL初始化 5、RIL函数 ----5.1 RIL 主动命令请求 ----5.2 RIL 被动请求的命令

安卓开发中JNI,NDK,SDK,JDK的概念

SDK(oftware development kit):软件开发工具包,辅助开发某一类软件的相关文档、API必需资料、范例和工具的集合都可以叫做 "SDK"。NDK(native development kit):在android中,通过NDK使用JNI与本地代码(如c、c++)交互。JNI(java native interface):使得java与本地其他类型语言(如c、c++)交互的接口。JDK(java development kit):Java语言的软件开发工具包,即java开发使用的sdk。

u014050788的专栏 2532

android 开发套件

Android开发套件包含进行Android开发必须的SDK和ADT,使用者只需安装SDK并配置环境变量后,将ADT集成到Eclipse后,开发平台就搭建好了

力扣(Leetcode)第1题:两数之和(C语言版本)

题目: 给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出和为目标值 target 的那两个整数,并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是,数组中同一个元素在答案里不能重复出现。 你可以按任意顺序返回答案。 示例 1: 输入:nums = [2,7,11,15], target = 9 输出:[0,1] 解释:因为 nums[0] + nums[1] == 9 ,返回 [0, 1] 。 示例 2: 输入:nums = [3,2,4], target = 6

qq_39855356的博客 3296

Android | Android OS 源码结构

Android 9.0.0系统源码根目录结构

JifengZ9的博客 1726

附录B:Standard Delay Format(SDF)(上)

本附录将介绍标准延迟标注格式,并说明了如何在仿真中执行反标。 延迟格式描述了设计网表的单元延迟和互连走线延迟,无论设计是用两种主要硬件描述语言(VHDL或Verilog HDL)中的哪一种所描述的。 本章还会介绍仿真的反标(backannotation),STA的反标其实是一个简单直接的过程,其中DUA中的时序弧将由SDF所指定的延迟进行标注。

To the beyond and infinity! 5408

[Symbian源码]什么是SDK,PDK,ADT?

<br />原文地址:http://www.gixing.com/?p=82<br /> <br />工具包关系图(PDF格式)<br /> <br /> <br /><br />什么包你需要?<br />要创建一个完整的开发环境,你需要一个工具包和至少一个软件工具。这些工具包主要面向应用开发人员(开发Symbian平台的上层应用软件的人员)和系统平台开发人员(创造设备驱动、开发系统核心或补充)。<br />如果你是一个应用开发人员可以使用:应用程序开发工具包(ADT) ADT为Application De

5315

在VS2019里把JSBSim飞行模型集成到你的C++项目里(附完整配置流程和常见错误解决)

本文详细介绍了如何在Visual Studio 2019中将JSBSim飞行模型集成到C++项目中,包括环境准备、源码编译、项目配置和常见错误解决方案。通过实战技巧和优化建议,帮助开发者高效实现高精度飞行仿真功能,提升开发效率。

weixin_42620202的博客 413

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

SKILL实现电路virtuoso原理图schematic中引脚pin的net自动打上pin label

qq_41510657的博客 2610

Android SDK -PDK- NDK

三个词应该是在软件开发领域通用的,它们的全称分别为 SDK(Software Development Kit) PDK(PlatformDevelopment Kit) NDK(Native Development Kit),我们可以从它们的用途以及针对的人群来理解一下。 1.SDK 软件开发套件 一般平台都会发布自己的SDK,SDK包含该平台为应用程序开发人员提供的开发工具,主要是...

u010783226的专栏 709

用本地 Chrome + DeepSeek 实现浏览器自动化:browser-use 实战与踩坑记录

本文记录了使用本地Chrome浏览器结合DeepSeek API实现浏览器自动化的实战经验。作者通过browser-use项目连接本地Chrome(启动时需添加--remote-debugging-port=9222参数),并解决了DeepSeek API不支持response_format的问题,通过设置dont_force_structured_output=True和add_schema_to_system_prompt=True成功绕过。同时分享了任务描述需精准的重要性,避免Agent输出多余信息导

LY的博客 750

Android编译系统参考手册

原文链接:http://android.cloudchou.com/build/core/binary.php build/core/binary.mk 定义了将asm,c,cpp,yacc,lex源代码编译为目标文件的基本规则 模块想生成某类型目标时不会直接包含该makefile,但如果生成二进制程序,会间接包含该makefile dynamic_binary.mk,executab

xiangcao1110的博客 663

从零开始用 C# 打造工业级上位机系统:完整项目实战

本文介绍了一个基于C#开发的工业级上位机系统项目。该系统采用分层架构设计,包含通信、数据采集、UI展示、告警日志等模块,支持Modbus协议和串口通信。文章详细阐述了系统架构设计、关键模块实现(如Modbus通信封装、实时数据采集、告警系统等)以及性能优化策略。该项目已在实际工控场景中稳定运行超过1年,具备良好的可扩展性和稳定性,适合有一定C#基础的开发者参考学习工业软件开发实践。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1367

Python爬虫实战:利用Playwright与反反爬技术抓取Crunchbase企业数据

在当今数据驱动的商业环境中,获取准确的企业信息对于市场分析、竞争情报和投资决策至关重要。Crunchbase作为全球领先的企业信息平台,包含了数百万家公司、投资者和关键人员的详细数据。本文将深入探讨如何使用Python最新爬虫技术Playwright,结合多种反反爬策略,高效抓取Crunchbase企业数据。我们将从爬虫基础概念讲起,逐步深入到高级技巧,并提供完整的代码实现,帮助读者掌握现代网络数据采集的核心技术。网络爬虫技术自互联网诞生以来经历了显著演变。

2201_76125261的博客 1832

Setup Android Emulator Enviroment

Simple step for Emulator Enviroment. Linux system is better choice for Android Emulator. Download eclipse 3.7 indigo from "www.eclipse.org". Download Android SDK and NDK from "http://developer.andr

flyingqr的专栏 903

YOLOv10改进策略【模型轻量化】| MoblieNetV3:基于搜索技术和新颖架构设计的轻量型网络模型

本文记录的是基于MobileNet V3的YOLOv10目标检测轻量化改进方法研究。的模型结构是通过得来的,其中的基础模块结合了的深度可分离卷积、的线性瓶颈和倒置残差结构以及MnasNet中基于挤压和激励的轻量级注意力模块,使模型在性能、效率和灵活性方面都具有显著的优势。本文在替换骨干网络中配置了原论文中的small和large2种模型,以满足不同的需求。

Limiiiing的博客 513

Android源码目录

Android源码目录

weixin_39499334的博客 145

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android-Framework学习笔记(一)Android-系统架构,阿里P7手把手教你

(2)Android运行时库 运行时库又分为核心库和ART(5.0系统之后,Dalvik虚拟机被ART取代)。核心库提供了Java语言核心库的大多数功能,这样开发者可以使用Java语言来编写Android应用。相较于JVM,Dalvik虚拟机是专门为移动设备定制的,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。而替代Dalvik虚拟机的ART的机制与Dalvik不同。在Dalvik下,应用每次

m0_64604842的博客 278

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

安卓源代码核心结构

安卓体系结构图如下 第一层是我们的APP层,在这个层次中有我们熟悉的应用程序,也是我安卓系统自带的一些应用程序,比如说我们的通讯录,比如说我们的电话本,比如说我们短信,这都是我们系统自带的一些运用程序,但是除此之外还可以自己开发一些运用程序放到这个层次当中。 第二层是我们框架层,在这个层次中包括了10最主要的部分。包括我们的活动管理层,窗口管理器,内容提供者,试图子系统,通知管

fight_onlyfor_you的博客 2672

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

移动开发最新Framework学习(一)Android-系统架构,2024年最新安卓面试基础题

现在随着短视频,抖音,快手的流行NDK模块开发也显得越发重要,需要这块人才的企业也越来越多,随之学习这块的人也变多了,音视频的开发,往往是比较难的,而这个比较难的技术就是NDK里面的技术。音视频/高清大图片/人工智能/直播/抖音等等这年与用户最紧密,与我们生活最相关的技术一直都在寻找最终的技术落地平台,以前是windows系统,而现在则是移动系统了,移动系统中又是以Android占比绝大部分为前提,所以AndroidNDK技术已经是我们必备技能了。

2401_84556783的博客 800

Android源码目录详解

abi:应用程序的二进制接口 art:实现的是安卓5.0新引入的一个虚拟机 bionic:实现C库的一个目录 bootable:和启动相关的目录,比如和bootloader相关的代码 build:和编译相关的目录,存放一些和编译编译相关的规则、代码等 cts:存放一些测试案例,测试安卓系统的稳定性和兼容性 dalvik:用来实现lalvik虚拟机的 developers:不常用 d

fang_yang_wa的博客 715

Android系统源码目录详解

如题。

EricWZY2008的专栏 1537
上一篇: FLAG_ACTIVITY_NEW_TASK标记 以及taskAffinity属性
下一篇: xmlns是什么意思
AnnaLoad
博客等级 码龄17年 7粉丝 23原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值