Android SDK PDK NDK详解

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

时间: 2024-08-05 22:51:13

Android SDK PDK NDK详解的相关文章

Android SDK Manager下载详解

1. SDK Platform 可以理解为版本,因此有 SDK Platform 7,SDK Platform 8等等  Android SDK Tools 是各个版本都可通用的工具文件夹,里面有draw9patch  hierarchyviewer emulator等工具 Android SDK Platform-tools 是版本有区别的工具文件夹,里面有adb aapt等 这些文件夹都可以在sdk安装路径下找到 2. ARM EABI v7a System Image: 更新Android

转:android Support 兼容包详解

本文转自stormzhang的ANDROID SUPPORT兼容包详解 背景 来自于知乎上邀请回答的一个问题Android中AppCompat和Holo的一个问题?, 看来很多人还是对这些兼容包搞不清楚,那么干脆写篇博客吧. Support Library 我们都知道Android一些SDK比较分裂,为此google官方提供了Android Support Library package 系列的包来保证高版本sdk开发的向下兼容性, 所以你可能经常看到v4,v7,v13这些数字,首先我们就来理清

Android开发之InstanceState详解

Android开发之InstanceState详解 本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceState(),并且在介绍这两个方法之后,再分别来实现使用InstanceState保存和恢复数据功能.Android实现屏幕旋转异步下载效果这样两个示例. 首先来介绍onSaveInstanceState() 和 onRestoreInstanceState() .关于这两个方法,一些朋友可能在Andr

ANDROID L——Material Design详解(UI控件)

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lollipop(5.0). 前几天发现Android5.0正式版的sdk已经可以下载了,而且首次搭载Android L系统的Nexus 6和 Nexus 9也即将上市. 所以是时候开始学习Android L了! 关于Android L如何配置模拟器和创建项目,如果大家有兴趣的话可以看看我之前的一篇文章: A

Android 开发 之 Fragment 详解

作者 : 韩曙亮 转载请著名出处 : http://blog.csdn.net/shulianghan/article/details/38064191 1. Fragement 概述 Fragement 与 Activity 生命周期关系 : Fragement 嵌入到 Activity 组件中才可以使用, 其生命周期与 Activity 生命周期相关. -- stop 与 destroy 状态 : Activity 暂停 或者 销毁的时候, 其内部嵌入的所有的 Fragement 也会执行

Android.mk 文件语法详解

转:http://blog.sina.com.cn/s/blog_602f8770010148ce.html ===================================================================================== 0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build System解析一次或多次

Android本地化资源目录详解

我们可以设想,有两个不同分辨率的手机(320*480和480*800)要使用一些图像资源,为了使图像不失真,就需要为不同分辨率的手机指定不同的图像,为此就需要建立不同的资源目录. 在res目录中建立了3个图像资源目录:drawable.drawable-hdpi和drawable-mdpi.其中drawable为默认图像的图像资源目录,drawable-hdpi保存了在高屏幕密度(指480*800或相似的分辨率)情况系使用的图像资源,drawable-mdpi保存了中屏幕密度(值320*480或

Android 多渠道打包方式详解

Android 多渠道打包方式详解 面试的时候,如果面试官突然问到:你们渠道包是怎么打的?如果你说是用gradle一个一个编译的,然后他很鄙视的说这个效率太低啦,你们写过什么脚本自己打渠道包没?你肯定心里想,卧槽,这么狂炫吊炸天,自己写脚本打包?!其实这个根本也不是太难啦!!今天就来聊聊多渠道打包的原理以及如何自己DIY多渠道打包的工具! 渠道包出现 当一个产品到发版的时候,我们搞Android的就会面临一个超级尴尬的问题:国内这么多的渠道,渠道统计是必须做滴,那么十多个主要渠道再加无限量的地推

ANDROID L——Material Design详解(动画篇)

转载请注明本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持! Android L: Google已经确认Android L就是Android Lollipop(5.0). 前几天发现Android5.0正式版的sdk已经可以下载了,而且首次搭载Android L系统的Nexus 6和 Nexus 9也即将上市. 所以是时候开始学习Android L了! 关于Android L如何配置模拟器和创建项目,如果大家有兴趣的话可以看看我之前的一篇文章: A