如何运行 NDK 示例?

2024-01-10

很抱歉问这样一个菜鸟问题,但是 NDK 文档是错误的(r7b):

如果您使用 ADT 在 Eclipse 中进行开发,请使用新建项目向导 使用“导入”为每个示例创建一个新的 Android 项目 从现有源”选项并从以下位置导入源<ndk>/apps/<app_name>/project/。然后,如有必要,设置 AVD,并且 在模拟器中构建/运行应用程序。

没有“apps”文件夹,并且示例不包含“project”文件夹。那么...运行样品的正确方法是什么?

另外,我可以配置 Eclipse 自动构建代码的 C++ 部分吗?


  1. 单击文件 |新 |项目...
  2. 选择Android项目,下一步
  3. 项目名称:这是 Package Explorer 中显示的项目名称。它只是一个存储在.projectEclipse 创建的文件。没有使用此名称创建文件或文件夹,并且输出二进制文件似乎不包含此名称。
  4. 单击“从现有源创建项目”
  5. 位置:选择项目的根文件夹,例如.../android-ndk-r7b/samples/位图等离子
  6. 单击“下一步”并选择您的目标 API。 Eclipse 似乎不允许稍后更改,至少不能从 GUI 更改。我不知道为什么 Eclipse 不简单地从<uses-sdk>在 AndroidManifest.xml 中或从 default.properties 中的“目标”行。我也不知道为什么两者可能不同(例如在位图等离子样本中,target=android-9 but <uses-sdk android:minSdkVersion="8"/>.)
  7. 单击下一步并考虑更改默认为“your.package.namespace”的“包名称”字段。但是,如果您不更改此字段,该项目将正常运行。不选中“创建活动”和“创建测试项目”。
  8. 单击“完成”。 Eclipse 将在现有代码旁边创建大量额外文件(例如 .classpath、.project、project.properties)和文件夹(bin、gen、assets)。这是除了 ndk-build 创建的输出文件夹(obj 和 libs)之外的内容。

Eclipse 不会自行构建本机代码,但它会自动部署本机代码(例如 libplasma.so)if它知道这一点。在命令行上构建本机代码后,例如:

C:\...\android-ndk-r7b\samples\bitmap-plasma>..\..\ndk-build
Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi/gdbserver
Gdbsetup       : libs/armeabi/gdb.setup
Gdbserver      : [arm-linux-androideabi-4.4.3] libs/armeabi-v7a/gdbserver
Gdbsetup       : libs/armeabi-v7a/gdb.setup
"Compile thumb : plasma <= plasma.c
SharedLibrary  : libplasma.so
Install        : libplasma.so => libs/armeabi/libplasma.so
"Compile thumb : plasma <= plasma.c
SharedLibrary  : libplasma.so
Install        : libplasma.so => libs/armeabi-v7a/libplasma.so

右键单击您的项目并选择“刷新”,否则 Eclipse 在启动模拟器时可能无法上传本机代码。

最后,要运行该示例,请右键单击该项目并选择“运行方式”|“安卓应用程序。See here https://stackoverflow.com/questions/1536384/android-emulator-select-avd-android-virtual-device-to-run-by-default关于选择使用哪个模拟器。

See here http://mobilepearls.com/labs/ndk-builder-in-eclipse/关于配置 Eclipse 自动构建本机代码。

我很好奇为什么 NDK 为每个 ABI 生成两个大小截然不同的 *.so 文件,例如它创建libs/armeabi-v7a/libplasma.so(15 KB) 而且obj/local/armeabi-v7a/libplasma.so(63 KB)。有人知道其中的区别吗?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何运行 NDK 示例? 的相关文章

随机推荐

  • C# 日期时间解析

    我尝试解析 DateTime TryParse 30 05 2010 它抛出异常 因为它接受 MMddyyyy 而我需要 ddMMyyyy 格式 如何更改 TryParse 格式 thanks Dani 您可以使用日期时间 TryParse
  • anaconda ipython 的路径是否已损坏?

    我希望使用 ipython 的 anaconda 发行版 但是输入ipython在终端产生一条错误消息 Traceback most recent call last File usr local bin ipython line 5 in
  • javascript:读取html标签中的lang属性

    In 标签我有属性lang 我如何使用 js 达到它 我想使用包含的 lang 作为变量 据我了解 应该从var lang 在 jQuery 中 var theLanguage html attr lang alert theLanguag
  • Java:如何使用 Thread.join

    我是线程新手 我怎样才能得到t join工作 调用它的线程会等待 t 执行完毕 这段代码只会冻结程序 因为线程正在等待自己死亡 对吧 public static void main String args throws Interrupte
  • Android fastboot 等待设备

    我正在尝试在我的 NVIDIA 测试 git 上加载自定义内核 我输入了fastboot boot myImage之后我得到
  • 为什么我不能从 ruby​​ 中选定的键创建新的哈希值?

    这已经困扰我一段时间了 这不是一件困难的事情 但我不知道为什么已经没有简单的方法可以做到这一点 我敢打赌有 但我没有看到它 我只想进行哈希处理 如下所示 cars bob gt Pontiac fred gt Chrysler lisa g
  • 从文本文件读取数据到 numpy 数组

    我有一个包含一些元数据的文件 然后是一些由两列和标题组成的实际数据 在 numpy 中使用 genfromtxt 之前是否需要分离两种类型的数据 或者我可以以某种方式分割数据吗 将文件指针放在标题上方的行尾 然后从那里尝试 genfromt
  • Android - 双击WebView检测

    我正在创建一个带有 WebView 和页面顶部菜单的应用程序 我使该菜单不可见 并且仅在单击按钮时才会出现 这工作正常 但该按钮无法很好地适应任何地方 因此我没有单击按钮 而是在双击屏幕时出现菜单 所以问题就在这里 双击仅适用于空白区域 但
  • 除了 Haxe 之外,还有其他针对 PHP 的编程语言吗?

    PHP 并没有得到太多的喜爱 但在易于部署 对于廉价托管 方面仍然是赢家 有没有任何编程语言 除了Haxe http haxe org 那个目标 PHP 用这种语言编写应用程序 然后将其翻译成 PHP 就像某些语言以 C 作为中间语言一样
  • 如何使用 NHibernate 插入或更新(或覆盖)记录?

    我需要将一行写入数据库 无论它是否已经存在 在使用 NHibernate 之前 这是通过存储过程完成的 该过程将尝试更新 如果没有行被修改 它将回退到插入 这很有效 因为应用程序并不关心记录是否存在 对于 NHibernate 我发现的解决
  • 如何访问 Galaxy S5 心率传感器?

    In the 三星的编程指南 http img developer samsung com contents cmm SHealth SDK Package ProgrammingGuide 2 Bio Physiology eng v1
  • 如何使用数组包含元素创建 NSPredicate

    我只是有Address有财产的实体favourites类型的 String Address objc Address class Address NSManagedObject Observer NSManaged var favourit
  • 在反应中一次导入多个图像文件的任何简单方法

    我输入以下内容来导入图像 需要一个简短的方法来做到这一点 import banner1 from imgs Banners banner1 jpg import banner2 from imgs Banners banner2 jpg i
  • 通过提升业力重用已解析的变量

    我有一个与下面的代码相当的代码库 我尝试生成一个文本文件 其内容是变量的两倍 我觉得答案在于语义动作以及 a 和 val 但即使有文档也无法完成 您将如何做才能拥有 str 中的 toto 和输出 托托一些东西托托 即如何在业力中重用已解析
  • 检测设备是否正在充电

    我找不到任何明确的用途我最喜欢的工具 http www google com 不过我想我会把它放在这里 有没有办法使用 iPhone SDK 让应用程序检测设备是否处于通电状态 充电 底座等 如果设备正在通电 否则它是用户指定的设置 我希望
  • Rails 迁移变更列

    We have script generate migration add fieldname to tablename fieldname datatype用于向模型添加新列的语法 在同一行上 我们是否有一个脚本 生成来更改列的数据类型
  • timessince 过滤器的格式

    有没有办法使用 date timesince 过滤器 但不是有两个相邻的单元 而是只显示一个 例如 我的模板当前显示 18 小时 16 分钟 我怎样才能让它显示 18小时 这里不考虑四舍五入 谢谢 我想不出一个简单的内置方法来做到这一点 这
  • JavaScript 如何创建稀疏数组?

    虽然我不知道这个功能的名称 a a 57 test console log a length console log a 57 console log a 我很敬畏这是可能的 由于具有 C 背景 这种行为与分配内存之类的行为非常不同 那么几
  • Elasticsearch-Kibana docker-compose - 禁止使用“elastic”值

    我想使用 docker compose 运行 elasticsearch 和 kibana 这是我的 docker compose yml 我使用 docker compose env file dev env up 运行 Docker 组
  • 如何运行 NDK 示例?

    很抱歉问这样一个菜鸟问题 但是 NDK 文档是错误的 r7b 如果您使用 ADT 在 Eclipse 中进行开发 请使用新建项目向导 使用 导入 为每个示例创建一个新的 Android 项目 从现有源 选项并从以下位置导入源