当前位置: 首页 > news >正文

SDK,NDK,AVD,AMD简单理解

NDK报错:


did not contain a valid NDK and and couldn't be used

修改为:

ndk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\sdk\\ndk-bundle
sdk.dir=C\:\\Users\\Administrator\\AppData\\Local\\Android\\sdk

AVD:Android 虚拟设备

ADM:android device monitor 设备监视

SDK:软件开发工具包括广义上指辅助开发某一类软件的相关文档、范例和工具的集合。android sdk (Android Software Development Kit, 即Android软件开发工具包)可以说只要你使用java去开发Android这个东西就必须用到。他包含了SDK Manager 和 AVD Manage对于android系统的一些开发版本的管理以及模拟器管理

 Android NDK 是一套允许您使用 C 和 C++ 等语言,以原生代码实现部分应用的工具集。在开发某些类型的应用时,这有助于您重复使用以这些语言编写的代码库。(Native Development Kit)跟sdk差不多的是他也是一个开发工具包。用他开发c/c++是很方便的。他有一个强大的编译集合。

其实很简单,SDK 就是 Software Development Kit 的缩写,中文意思就是“软件开发工具包”。这是一个覆盖面相当广泛的名词,可以这么说:辅助开发某一类软件的相关文档、范例和工具的集合都可以叫做“SDK”。具体到我们这个系列教程,我们后面只讨论广义 SDK 的一个子集——即开发 Windows 平台下的应用程序所使用的 SDK。 
其实上面只是说了一个 SDK 大概的概念而已,理解什么是 SDK 真有这么容易吗?恐怕没这么简单!为了解释什么是 SDK 我们不得不引入 API、动态链接库、导入库等等概念。 
首先要接触的是“API”,也就是 Application Programming Interface,其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用程序的命令(动作)。而在 Windows 中,系统 API 是以函数调用的方式提供的。同样是取得操作系统的版本号,在 Windows 中你所要做的就是调用 GetVersionEx() 函数。可以这么说,DOS API 是“Thinking in 汇编语言”的,而 Windows API 则是“Thinking in 高级语言”的。DOS API 是系统程序的一部分,他们与系统一同被载入内存并且可以通过中断矢量表找到他们的入口,那么 Windows API 呢?要说明白这个问题就不得不引入我们下面要介绍得这个概念——DLL。 
DLL(又是一个缩写,感觉 IT 这个行业里三字头缩写特别多),即 Dynamic Link Library(动态链接库)。我们经常会看到一些 .dll 格式的文件,这些文件就是动态链接库文件,其实也是一种可执行文件格式。跟 .exe 文件不同的是,.dll 文件不能直接执行,他们通常由 .exe 在执行时装入,内含有一些资源以及可执行代码等。其实 Windows 的三大模块就是以 DLL 的形式提供的(Kernel32.dll,User32.dll,GDI32.dll),里面就含有了 API 函数的执行代码。为了使用 DLL 中的 API 函数,我们必须要有 API 函数的声明(.H)和其导入库(.LIB),函数的原型声明不难理解,那么导入库又是做什么用的呢?我们暂时先这样理解:导入库是为了在 DLL 中找到 API 的入口点而使用的。 
所以,为了使用 API 函数,我们就要有跟 API 所对应的 .H 和 .LIB 文件,而 SDK 正是提供了一整套开发 Windows 应用程序所需的相关文件、范例和工具的“工具包”。到此为止,我们才真正的解释清楚了 SDK 的含义。 
由于 SDK 包含了使用 API 的必需资料,所以人们也常把仅使用 API 来编写 Windows 应用程序的开发方式叫做“SDK 编程”。而 API 和 SDK 是开发 Windows 应用程序所必需的东西,所以其它编程框架和类库都是建立在它们之上的,比如 VCL 和 MFC,虽然他们比起“SDK 编程”来有着更高的抽象度,但这丝毫不妨碍它们在需要的时候随时直接调用 API 函数。

相关文章:

  • build.gradle文件介绍,gradle版本对应
  • Android 开发 读取excel文件 jxl.jar包
  • RecyclerView的简单使用在activity和fragment中
  • 好用的dialog工具类,单例实现,普通的Dialog和Textview设置Int型
  • tabLayout实现viewPager+Fragment
  • Android控件绑定代码快速生成工具 ,Android 开发Invalid byte 2 of 2-byte UTF-8 sequence. Textview设置空格
  • Android 开发execel文件在内存和外存传递
  • Android 开发 sqllite文件查看,SqlLite文件查看步骤
  • GreenDao查询,Querying
  • 新版gradle 找不到 greendao 报错 android studio 怎样查看导报文件 怎样打开db文件 android greendao 工具类使用以及数据更新
  • android.content.res.Resources$NotFoundException: String resource ID #0x1
  • 通过Interface:fragment向activity传值
  • kotlin 基础语法
  • Kotlin 基本数据类型
  • Android写入文件电脑上看不到的原因
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • ➹使用webpack配置多页面应用(MPA)
  • Android路由框架AnnoRouter:使用Java接口来定义路由跳转
  • bearychat的java client
  • CSS中外联样式表代表的含义
  • fetch 从初识到应用
  • October CMS - 快速入门 9 Images And Galleries
  • PAT A1092
  • Python连接Oracle
  • 不上全站https的网站你们就等着被恶心死吧
  • -- 查询加强-- 使用如何where子句进行筛选,% _ like的使用
  • 好的网址,关于.net 4.0 ,vs 2010
  • 爬虫模拟登陆 SegmentFault
  • 巧用 TypeScript (一)
  • 深入浅出webpack学习(1)--核心概念
  • 异步
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • AI又要和人类“对打”,Deepmind宣布《星战Ⅱ》即将开始 ...
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​2020 年大前端技术趋势解读
  • (+4)2.2UML建模图
  • (html转换)StringEscapeUtils类的转义与反转义方法
  • (七)c52学习之旅-中断
  • (十八)SpringBoot之发送QQ邮件
  • (转)http-server应用
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .NET 4 并行(多核)“.NET研究”编程系列之二 从Task开始
  • .net core 依赖注入的基本用发
  • .NET MVC、 WebAPI、 WebService【ws】、NVVM、WCF、Remoting
  • .NET 的程序集加载上下文
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .Net的DataSet直接与SQL2005交互
  • .NET企业级应用架构设计系列之技术选型
  • .net项目IIS、VS 附加进程调试
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • /usr/bin/python: can't decompress data; zlib not available 的异常处理
  • @Autowired自动装配
  • [2019.2.28]BZOJ4033 [HAOI2015]树上染色
  • [2019.3.20]BZOJ4573 [Zjoi2016]大森林