问题标签 [android-ndk]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
896 浏览

android - 如何在 Windows 上运行 Android NDK 安装?

以下是我设法从 Google 找到的关于如何安装 Android NDK 的唯一说明,它的编写方式好像我们都运行 Linux 并假设我们都了解这些晦涩难懂的工具是什么。如果知道 Unix 和 Windows 的人会翻译,我的评论和问题会以斜体显示,那就太好了!


Android NDK 安装

介绍:

请阅读 docs/OVERVIEW.TXT 以了解 Android NDK 是什么和不是什么。该文件提供了有关如何正确设置 NDK 的说明。

一、要求:

Android NDK 当前需要 Linux、OS X 或 Windows 主机操作系统。Windows 用户需要安装 Cygwin ( http://www.cygwin.com ) 才能使用它。请注意,不支持在 MSys 下运行 NDK。

您需要安装 Android SDK 及其依赖项。NDK 不能生成最终的应用程序包(.apk 文件),只能生成可以进入其中的共享库文件。

重要的:

Android NDK 只能用于使用 Cupcake (1.5) 或更高版本的平台来定位系统映像。这是由于细微的工具链和 ABI 相关更改使其与 1.0 和 1.1 系统映像不兼容。

NDK 要求您的开发系统上有 GNU Make 3.81 或更高版本。早期版本的 GNU Make 可能会工作,但尚未经过测试。

您可以通过从命令行运行“make -v”来检查这一点。输出应如下所示:

在某些系统上,GNU Make 可能通过不同的命令(如“gmake”或“gnumake”)可用。对于这些系统,在调用文档中所述的 NDK 构建系统时,将“make”替换为适当的命令。

太好了,一些奇怪的东西叫做 gnu make。如果您不打算告诉我它的作用,那么您至少可以给我一个 URL 吗?

NDK 还需要在您的开发系统上提供 Nawk 或 GNU Awk 可执行文件。请注意,原始的 'awk' 程序没有实现 NDK 构建系统使用的 'match' 和 'substr' 函数。

好的,另一个工具,有 2 个可能的名称中的 1 个,但不是第三个......我应该在哪里下载这个?

在 Windows 上,您需要安装最新版本的 Cygwin 才能使用 NDK。有关说明,请参见http://www.cygwin.com

哇哦一个网址!下载大约需要一天时间,因为这些安装说明没有指定要下载的部分。

二、准备安装预构建的跨工具链二进制文件:

安装和解压缩 NDK 后,您需要从根文件夹运行以下命令:

构建/主机-setup.sh

你好?除了 .exe .com 或 .dll,Windows 不会运行任何东西,只要告诉我您希望我如何运行它即可。

这将测试您的设置并确保 NDK 可以正常工作。

没有说明这些东西需要安装到哪里(什么目录)

0 投票
1 回答
4676 浏览

java - Android NDK jni 问题

我已经开始自学有关 Android NDK 的知识,并且在这里遵循了这个示例 - http://marakana.com/forums/android/android_examples/49.html

我已经完美地遵循了这些步骤,但是当我运行应用程序时,我收到以下错误:


这是 java 代码, nativeLib.hello() 导致了问题。

以前有没有人遇到过同样的问题并且能够告诉我出了什么问题?

0 投票
6 回答
29267 浏览

android - 如何获取已安装软件包的 lib 文件夹的路径

共享库 .so 文件放在 apk 文件中的 lib/armeabi 中。

我已阅读安装后的库被提取到 /data/data/application_package/lib

如何在运行时在我的应用程序中获取此目录的确切路径?应用程序是否可以读取此目录?还是只允许可执行访问?如果它是可读的 - 这对于受版权保护的应用程序仍然适用吗?

0 投票
2 回答
2220 浏览

java - 如何从 C++ 调用 Java 方法

我正在使用 JNI 从 Java 调用我的 C++ 函数。C++ 函数的参数之一是jobject thiz(据我所知,所有 JNI 本机函数都有这个参数)。该函数需要很长时间才能完成,我想将进度报告回jobject thizJava 对象,以便向用户显示进度。如何从 C++ 调用 jobject 的方法?

0 投票
1 回答
601 浏览

java - 我可以在 Android 原生库中访问什么?如何?

我对 NDK 完全陌生。

我已经完成了一些教程,包括来自 jni 的 hello 和另一个计算两个数字之和的教程。

他们涉及使用 cygwin 和 ndk 创建库 so 文件,我对如何将自己的库插入 Android 的库层有一些了解。

我现在被要求访问 Android 上的本机库,看看我能用它们做什么。

我的问题是我可以这样做吗?

STABLE-APIS.txt 文档有点含糊,并提到以下内容作为 Android 1.5 中的稳定 C++ API


cstddef

新的

效用

stl_pair.h


这是否意味着我可以访问它们?

如果是这样,那我该怎么做?我认为遵循我已经完成的教程不会有任何帮助吗?

任何有关如何执行此操作的指示或指向教程等的链接将不胜感激

0 投票
4 回答
63803 浏览

android - 用于 android 的 ffmpeg(使用教程:“ffmpeg 和 Android.mk”)

我正在尝试为 android 编译 ffmpeg。我发现了几个关于这个主题的帖子,但这些似乎都不起作用。如果尝试像在 [1] 上发布的那样构建 ffmpeg。有人使用这些教程成功编译了ffmpeg吗?我不确定如何实现第 4 步到第 5 步。

第 4 步:配置...

STEP5: cd 到你的 NDK 根目录,输入 make TARGET_ARCH=arm APP=ffmpeg-org

在我看来,构建一个像教程第 5 步中解释的那样的应用程序需要一些前面的步骤。不幸的是,我的文件夹中没有要制作的应用程序。我正在使用当前的 android ndk 版本 3 并检查了 [3] 和 [4] 中的实际 ffmpeg 版本。我感谢每一个建议。

[1]http://slworkthings.wordpress.com/
[2]http://gitorious.org/~olvaffe/ffmpeg/ffmpeg-android
[3]http://ffmpeg.org/download.html

0 投票
2 回答
13551 浏览

android - 在 Android 原生环境中从我自己的 APK 中读取资源文件

我正在移植到安卓。我现有的项目有大量的资源文件,我将它们移植到我的 Android 项目中。我将它们全部放在 /res/raw/ 中,我想使用 fopen() 等函数访问我的本机库中的这些资源。这可以做到吗,还是我也必须通过JNI?为了便于移植以及可能的速度和内存原因,我真的不希望这样做。

0 投票
1 回答
800 浏览

android - WeTab 将运行 Android 应用程序,但使用 Atom CPU。这对 NDK 和 MonoDroid 意味着什么?

我猜 MonoDroid 直接编译成 ARM 代码。还有 NDK。

0 投票
2 回答
13199 浏览

c++ - Linux C++:链接器输出奇怪的错误

好的,这是我得到的输出:

这是我设法破译的一个错误:

这是第 43 到 45 行:

所以,我觉得有趣的是第一个new很好(第 43 行),但第二个不是。什么可能导致这种情况?

另一个问题new

我不知道从哪里开始处理其他问题。

这些是我的makefile,它们是一团糟,因为我只是想让它工作。

静态库:

测试游戏项目:

任何帮助,将不胜感激。

0 投票
1 回答
2155 浏览

c++ - C/C++ 新手使用 Android NDK 移植 Legacy 代码,出现编译错误

今天,我一直在尝试使用 NDK 将一些旧的 Symbian C++ 代码转移到 Android 上。

我几乎没有 C 或 C++ 知识,所以这是一件苦差事,但必须完成。

我的主要问题是我在移植我认为是 Symbian 特定代码以使用 Android NDK 提供的小型 C/C++ 子集时遇到问题。

这是我使用 cygwin 时遇到的编译错误的图片

我想知道是否有人可以为我指出如何处理这些错误的正确方向?例如 TBool/Int/TUint/RPointerArray/RSocket 是 Symbian 原语,这就是它无法编译的原因还是其他原因?

还有什么是 ISO C++?

任何教程、指南或提示和帮助将不胜感激。

编辑:

这是我尝试导入的 .h 文件中的代码片段,后面是编译器的片段输出。

有人可以指导我如何将这个 Symbian 特定代码移植到普通 C++ 中吗?

如果我知道什么是 Symbian 特定的以及如何更改它,我相信我可以更改,然后开始自己移植其余部分