安下载编程开发

分类分类

Android NDK(多功能系统开发与应用开发工具)

Android NDK(多功能系统开发与应用开发工具)

v2.1.0 免费版

大小:805.65 MB 更新:2020/12/07

类别:编程工具系统:WinXP, Win7, Win8, Win10, WinAll

立即下载

  Android NDK是一款多功能应用/系统开发工具箱,可以让用户实现在本地代码你的应用程序的部分,使用的语言,如C和C++;对于某些类型的应用程序,这可以帮助您重用以这些语言编写的代码库;本机开发套件(NDK)是一组工具,使用户可以在Android上使用C和C++代码,并提供可用于管理本机活动和访问物理设备组件(例如传感器和触摸输入)的平台库;适用于PC的Android NDK可能不适用于大多数只需要使用Java代码和框架API的新手Android程序员开发他们的应用,但是,NDK在需要执行以下一项或多项操作的情况下很有用:从设备中挤出额外的性能以实现低延迟或运行计算密集型应用程序,例如游戏或物理模拟,重用您自己或其他开发人员的C或C++库!

Android NDK(多功能系统开发与应用开发工具)

软件功能

  使用Android Studio 2.2及更高版本,您可以使用NDK将C和C ++代码编译到本机库中

  并使用IDE的集成构建系统Gradle将其打包到APK中。

  然后,您的Java代码可以通过Java本机接口(JNI)框架调用本机库中的函数。

  Android Studio用来编译本机库的默认构建工具是CMake。

  由于使用构建工具包的大量现有项目,因此Android Studio还支持ndk-build。

  但是,如果要创建新的本机库,则应使用CMake。

  要编译和调试应用程序的本机代码,您需要以下组件:

  在Android原生开发套件(NDK):一组工具,可让您使用C和C ++代码的Android。

  CMake:一个外部构建工具,可与Gradle一起使用来构建本机库。

  如果仅计划使用ndk-build,则不需要此组件。

  LLDB:Android Studio用来调试本机代码的调试器。

软件特色

  NDK是一个工具集,可让您使用本机代码语言(例如C和C ++)实现应用程序的各个部分。

  对于某些类型的应用程序,这可能会有所帮助,因此您可以重复使用以这些语言编写的现有代码库

  但是大多数应用程序不需要Android NDK。

  在下载NDK之前,您应该了解NDK不会使大多数应用程序受益。

  作为开发人员,您需要在其优点与缺点之间取得平衡。

  值得注意的是,在Android上使用本机代码通常不会带来明显的性能提升,但始终会增加应用程序的复杂性。

  通常,仅应在对应用程序至关重要的情况下使用NDK-绝对不要使用NDK,因为您只是喜欢使用C / C ++进行编程。

  NDK的典型好选择是独立的,占用大量CPU的操作,这些操作不会分配太多内存,例如信号处理,物理模拟等。

  在检查是否应使用本机代码进行开发时,请考虑您的要求,并查看Android框架API是否提供所需的功能。

使用说明

  Android支持库程序包是一组代码库,提供了向后兼容的Android框架API版本以及仅可通过库API使用的功能。

  每个支持库都向后兼容特定的Android API级别。

  这种设计意味着您的应用程序可以使用库的功能,并且仍与运行Android 1.6(API级别4)及更高版本的设备兼容。

  对于应用程序开发人员而言,在其Android项目中包括支持库被视为最佳实践

  这取决于您的应用程序所针对的平台版本范围以及所使用的API。

Android NDK(多功能系统开发与应用开发工具)

  使用库提供的功能可以帮助您改善应用程序的外观,提高性能并扩大应用程序对更多用户的影响。

  如果您使用Android 代码模板工具,则会注意到所有Android应用程序模板默认都包含一个或多个支持库。

  每个支持库都针对基本的Android API级别,并且每个库都提供了不同的功能集。

  为了有效地使用这些库,重要的是考虑要支持的功能,并了解每个库在Android API级别上支持的功能。

  转到支持库设置主题以了解如何将支持库合并到您的应用程序中。

  Android调试桥(adb)是一种多功能的命令行工具,可让您与仿真器实例或连接的Android设备进行通信。

  它是一个客户端服务器程序,包含三个组件:

  在您的开发计算机上运行的客户端。

  您可以通过发出adb命令从Shell调用客户端。

  其他Android工具(例如ADT插件和DDMS)也会创建adb客户端。

  服务器,在开发计算机上作为后台进程运行。

  服务器管理客户端与在模拟器或设备上运行的adb守护程序之间的通信。

  守护程序,在每个仿真器或设备实例上作为后台进程运行。

  您可以在中找到该adb工具/platform-tools/。

Android NDK(多功能系统开发与应用开发工具)

  启动adb客户端时,客户端首先检查是否已在运行adb服务器进程。

  如果没有,它将启动服务器进程。服务器启动时,它将绑定到本地TCP端口5037,并侦听从adb客户端发送的命令

  所有adb客户端都使用端口5037与adb服务器进行通信。

  然后,服务器建立与所有正在运行的仿真器/设备实例的连接。

  它通过扫描5555到5585(模拟器/设备使用的范围)内的奇数端口来定位模拟器/设备实例。

  服务器在其中找到adb守护程序的地方,将建立与该端口的连接。

  请注意,每个仿真器/设备实例都获取一对顺序端口

  用于控制台连接的偶数端口和用于adb连接的奇数端口。例如:

  模拟器1,控制台:5554

  模拟器1,adb:5555

  模拟器2,控制台:5556

  模拟器2,adb:5557

  如图所示,在端口5555上连接到adb的仿真器实例与其控制台在端口5554上监听的实例相同。

  服务器建立与所有仿真器实例的连接后,即可使用adb命令访问这些实例。

  由于服务器管理与仿真器/设备实例的连接并处理来自多个adb客户端的命令

  因此您可以从任何客户端(或脚本)控制任何仿真器/设备实例。

  如果仅运行一个模拟器或仅连接一个设备,则默认情况下,adb命令会发送到该设备。

  如果有多个模拟器运行和/或多个设备连接,你需要使用-d,-e或-s 选项来指定该命令应针对目标设备。

  查询仿真器/设备实例

  在发出adb命令之前,了解哪些模拟器/设备实例连接到adb服务器会很有帮助。

  您可以使用以下devices命令生成连接的仿真器/设备的列表:

Android NDK(多功能系统开发与应用开发工具)

  作为响应,adb为每个实例打印此状态信息:

  序列号-由adb创建的字符串,用于通过其控制台端口号唯一地标识模拟器/设备实例。

  序列号的格式为-。这是一个示例序列号:emulator-5554

  状态-实例的连接状态可以是以下之一:

  offline —实例未连接到adb或没有响应。

  device—实例现在已连接到adb服务器。

  请注意,此状态并不表示Android系统已完全启动并可以运行,因为该实例在系统仍在启动时会连接到adb。

  但是,启动后,这是仿真器/设备实例的正常操作状态。

  no device —没有连接仿真器/设备。

  每个实例的输出格式如下:

  [serialNumber] [州]

  这是显示devices命令及其输出的示例:

  adb设备,连接的设备列表

  emulator-5554设备

  emulator-5556设备

  仿真器5558设备

  将命令定向到特定的仿真器/设备实例

  如果正在运行多个仿真器/设备实例,则在发出adb命令时必须指定目标实例。

  为此,请使用-s命令中的选项。该-s选项的用法是:

  adb -s <命令>您使用命令的adb分配的序列号指定命令的目标实例。

  您可以使用该devices命令获取正在运行的仿真器/设备实例的序列号。例如:

  adb -s emulator-5556安装helloWorld.apk

  请注意,如果在多个设备可用时发出命令而未指定目标仿真器/设备实例,则adb会生成错误。

  如果有多个可用的设备(硬件或仿真设备),但只有一个是仿真器,则只需使用该-e选项即可将命令发送到仿真器

  同样,如果有多个设备,但仅连接了一个硬件设备,请使用该-d选项将命令发送到硬件设备。

  安装应用程序

  您可以使用adb从开发计算机复制应用程序并将其安装在模拟器/设备实例上。

  为此,请使用install命令。使用该命令,必须指定要安装的.apk文件的路径:

  亚行安装

  请注意,如果您正在使用Eclipse IDE并安装了ADT插件

  则无需直接使用adb(或aapt)将应用程序安装在模拟器/设备上。

  相反,ADT插件将为您处理应用程序的打包和安装。

  转发端口

  您可以使用该forward命令来设置任意端口转发

  将特定主机端口上的请求转发到仿真器/设备实例上的其他端口。

  这是设置主机端口6100转发到仿真器/设备端口7100的方法:

  亚行转发tcp:6100 tcp:7100

  您还可以使用adb设置对命名的抽象UNIX域套接字的转发,如下所示:

  adb转发tcp:6100 local:logd

  将文件复制到仿真器/设备实例或从仿真器/设备实例复制文件

  您可以使用adb命令pull并push在仿真器/设备实例之间来回复制文件。

  与install仅将APK文件复制到特定位置的 命令不同

  使用pull和push命令可以将任意目录和文件复制到模拟器/设备实例中的任何位置。

  要复制一个文件或目录(及其子目录)从模拟器或设备,使用

  adb pull <远程> <本地>

  要将文件或目录(及其子目录)复制到仿真器或设备,请使用

  adb push <本地> <远程>

  在命令中,并指向开发计算机(本地)和仿真器/设备实例(远程)上目标文件/目录的路径。

  例如:亚行推送foo.txt /sdcard/foo.txt

  发出Shell命令

  Adb提供了一个Unix shell,可用于在仿真器或连接的设备上运行各种命令。

  命令二进制文件存储在仿真器或设备的文件系统中,位于/system/bin/...

  最常见的两个命令工具是活动管理器(am)和 程序包管理器(pm)。

  您可以使用该shell命令来发出命令,无论是否在仿真器/设备上输入adb远程外壳程序。

  要发出单个命令而不输入远程shell,请使用如下shell命令:

  亚行[-d | -e | -s ] shell

  或在仿真器/设备上输入远程外壳,如下所示:

  adb [-d | -e | -s ] shell

  准备退出远程外壳程序时,请按CTRL + D或键入 exit。

  使用活动管理器(上午)

  在adb shell中,您可以使用活动管理器(am)工具发出命令以执行各种系统操作

  例如启动活动,强制停止过程,广播意图,修改设备屏幕属性等等。在外壳中时,语法为:

  您也可以直接从adb发出活动管理器命令,而无需输入远程shell。例如:

  adb shell开始-android.intent.action.VIEW

  重要更改:已更新include/android/*h,math.h适用于所有Android API级别(最高18)

  包括添加的级别13、15、16和17。

  添加了对API级别19的支持,包括Renderscript绑定。

  -mhard-float在现有的armeabi-v7a ABI中增加了对它的支持。

  从GNU编译器集合(GCC)4.8迁移到4.8.2,并添加了诊断颜色支持。

  为了使诊断颜色,集合-fdiagnostics-color=auto

  -fdiagnostics-color=always,或导出GCC_COLORS如下所示:

  GCC_COLORS = '错误= 01; 31:警告= 01; 35:注释= 01; 36:插入符号= 01; 32:位置= 01:引号= 01'

  添加了两个新示例来演示OpenGL ES 3.0功能:Teapot和MoreTeapots。

  这些示例在具有Android 4.1(API级别16)及更高版本的设备上运行。

  不建议使用的GCC 4.7和Clang 3.2支持,将在下一版本中删除。

更新信息

  重要的错误修复:

  修复了ARM GCC 4.6thumb2无法生成16位相对跳转表的问题。

  修复了GCC 4.8内部编译器错误(ICE) g++.dg/cpp0x/lambda/lambda-defarg3.C。

  修复了Windows 32位*-gdb.exe可执行文件无法启动的问题。

  修复了构建项目符号库时的GCC 4.8 ICE。错误消息如下:

  内部编译器错误:verify_flow_info失败

  修改了GDB / ARM构建,以跳过ARM.exidx序言代码中用于展开的数据

  并添加了命令(set arm exidx-unwinding)以控制基于exidx的堆栈展开。

  修复了Clang 3.3 MIPS编译器问题,其中HI和LO寄存器被错误地重用。

  修复了MIPS 4.7 ICE在Windows中的问题dbx_reg_number。错误消息如下:

  外部/ icu4c / i18n / decimfmt 。cpp :1322 :1 :内部编译器错误

  在dbx_reg_number中,在dwarf2out 。c :10185

  其他错误修复:

  标头修复

  修复了ARM,WCHAR_MIN并WCHAR_MAX已根据规范将其取消签名(X86 / MIPS版本已签名)。

  定义_WCHAR_IS_ALWAYS_SIGNED以恢复旧的行为。

  固定include/netinet/tcp.h为包含TCP_INFO状态枚举。

  修复了使用c ++ 11模式时cdefs_elh.h宏_C_LABEL_STRING停止在GCC 4.8工具链中生成警告的问题。

  除去不存在的功能imaxabs和imaxdiv从首标 inttypes.h。

  解决了pthread_exit()返回值和的问题pthread_self()。

  添加了缺少的mkdtemp()功能,该功能已存在于bionic header中stdlib.h。

  修复samples/gles3jni了在Android API级别11上使用Clang构建问题。

  修复了MCLinker,允许多次出现以下选项: -gc-sections和--eh-frame-hdr。

  修复了MCLinker接受该--no-warn-mismatch选项的问题。

  修改后的cpu-features选项不假定所有VFPv4设备都支持IDIV。

  现在,此选项仅将IDIV添加到列入白名单的设备中,包括Nexus4。

  修复android_native_app_glue.c了事件预调度操作中错误记录错误的问题。

  修复了gabi++terminate和unexpected_handler上的所有操作都是线程安全的。

  修复了Clang-integrated-as选项的几个问题,因此它可以通过ssax-instructions和的测试fenv。

  修复了GCC 4.6 / 4.7 / 4.8编译器--eh-frame-hdr即使对于静态可执行文件也可以通过链接器选项的问题。

  修复了中的多余撇号CPU-ARCH-ABIS.html。

  修复了Windows上ndk-build输出中的多余引号。

  固定锵3.3编译ARM的内置,原子操作,如 __atomic_fetch_add,__atomic_fetch_sub和__atomic_fetch_or。

  修复了Clang 3.3 ICE的自定义问题vfprintf。

  其他变化:

  为所有GCC构建启用OpenMP。要使用此功能,请在构建设置中添加以下标志:

  LOCAL_CFLAGS + = - fopenmp LOCAL_LDFLAGS + = - fopenmp

  ld.mcld显着减小了大小(1.5MB对ld.bfd3.5MB和 ld.gold7.5MB),速度提高了约20%。

  添加LOCAL_CONLYFLAGS并APP_CONLYFLAGS指定仅适用于C但不适用于C ++的选项。

  现有的LOCAL_CFLAGS 和APP_CFLAGS也用于C ++编译(以省去两次指定大多数选项的麻烦)

  因此-std=gnu99在警告的g ++版本中可能会失败,而在错误的clang ++版本中可能会失败。

  添加了gabi++数组帮助器功能。

  修改后的GCC构建,以便libgcc.a与之-funwind-tables一起构建所有文件

  以使堆栈能够通过之前被阻止的点展开,例如__aeabi_idiv0。

  在MIPS GCC4.6 / 4.7 / 4.8中增加了Ingenic MXU支持,并带有新-mmxu选项。

  扩展的MIPS GCC4.6 / 4.7 / 4.8也-mldc1-sdc1可以控制ldxc1 / sdxc1

  添加了疯狂的链接器。

  固定bitmap-plasma为全屏绘制,而不是200x200像素区域。

  通过创建指向相同文件的符号链接,将linux和darwin工具链的大小减少了25%。

精品推荐
同类推荐
相关下载
  • 最新排行
  • 最热排行
  • 评分最高
编程开发排行榜
实时热词