
Android NDK(多功能系统开发与应用开发工具)
v2.1.0 免费版- 软件大小:805.65 MB
- 更新日期:2020-12-07 13:48
- 软件语言:英文
- 软件类别:编程工具
- 软件授权:免费版
- 软件官网:待审核
- 适用平台:WinXP, Win7, Win8, Win10, WinAll
- 软件厂商:

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

软件功能
使用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 代码模板工具,则会注意到所有Android应用程序模板默认都包含一个或多个支持库。
每个支持库都针对基本的Android API级别,并且每个库都提供了不同的功能集。
为了有效地使用这些库,重要的是考虑要支持的功能,并了解每个库在Android API级别上支持的功能。
转到支持库设置主题以了解如何将支持库合并到您的应用程序中。
Android调试桥(adb)是一种多功能的命令行工具,可让您与仿真器实例或连接的Android设备进行通信。
它是一个客户端服务器程序,包含三个组件:
在您的开发计算机上运行的客户端。
您可以通过发出adb命令从Shell调用客户端。
其他Android工具(例如ADT插件和DDMS)也会创建adb客户端。
服务器,在开发计算机上作为后台进程运行。
服务器管理客户端与在模拟器或设备上运行的adb守护程序之间的通信。
守护程序,在每个仿真器或设备实例上作为后台进程运行。
您可以在中找到该adb工具/platform-tools/。
启动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命令生成连接的仿真器/设备的列表:
作为响应,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%。
人气软件
-
redis desktop manager2020.1中文 32.52 MB
/简体中文 -
s7 200 smart编程软件 187 MB
/简体中文 -
GX Works 2(三菱PLC编程软件) 487 MB
/简体中文 -
CIMCO Edit V8中文 248 MB
/简体中文 -
JetBrains DataGrip 353 MB
/英文 -
Dev C++下载 (TDM-GCC) 83.52 MB
/简体中文 -
TouchWin编辑工具(信捷触摸屏编程软件) 55.69 MB
/简体中文 -
信捷PLC编程工具软件 14.4 MB
/简体中文 -
TLauncher(Minecraft游戏启动器) 16.95 MB
/英文 -
Ardublock中文版(Arduino图形化编程软件) 2.65 MB
/简体中文