问题标签 [android-ndk-r7]

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 投票
1 回答
223 浏览

android - 从 C++ 调用 Java 代码在 Android 上崩溃

PS:实际上,这是有效的,我有另一个问题,我会尽快更新这个问题。

我有以下本机代码:

以及 Java 类中的相应方法

但是在运行时会发生以下情况:

正在找到该方法,但是在调用它时它们会崩溃(任何方法都会),我该如何解决?我不确定为什么它不起作用。

PS:Android NDK5 和 NDK7B 也会出现同样的错误

0 投票
4 回答
6668 浏览

android - ndk-gdb:“未加载符号表”

我还在使用 ndk-gdb,现在正试图解决导致我做另一个问题的主要问题,我自己回答了 xD

ndk-gdb 告诉我当前的库没有符号表。这就像我正在调试的文件与模拟器正在执行的文件不同。但我重新上传了应用程序。它还说“使用文件命令”,但文件仅在我调试本地程序时使用,对吗?它不适合当我像使用 android 一样远程调试时。

所以我该怎么做?自3天以来,我一直在寻找解决方案,但我仍然一无所知。除了错误的文件问题,我可能应该问这个消息的其他原因是什么?

谢谢。一些信息:在项目的父目录中调用了 ndk-build 和 ndk-gdb。android api 级别 10 (2.3.3) android ndk r7b

Android.mk 文件内容:

0 投票
2 回答
5187 浏览

android - 编译 ndk 程序时出错 - 权限被拒绝

在 cygwin 中编译 ndk 程序时出现此错误。我不知道为什么 arm-linux-androideabi-ld.exe 文件没有被执行。

帮我。我想知道是cygwin错误还是代码有问题?

0 投票
1 回答
3642 浏览

android - OpenGLES 1.1 with FrameBuffer / ColorBuffer / DepthBuffer for Android with NDK r7b

在阅读了 NDK 文档和我所有关于 OpenGLES 的书之后,我碰壁了。我正在尝试将我的 iOS OpenGLES 设置复制到 Android NDK R7 及更高版本,主要是为了获取我之前在编码时忽略的深度缓冲区。

问题是当我启用如下所示的颜色缓冲区时,我会丢失某些对象上的纹理,而当我将对象发送到背景中时深度缓冲区不起作用。

我正在使用 OGLES 1.1 FFP 和 NDK R7 或更高版本

这是我的初始化代码:-

这是我的渲染代码:

0 投票
0 回答
2155 浏览

android - 使用 Android NDK 的 x86 工具链编译时出现未定义的 stdout、stderr 引用错误

我正在尝试使用 Android NDK 工具链编译本地库 libdigcert 之一。

如果我使用 arm 工具链一切正常,并且如果我将此库链接到我的可执行文件,我不会收到任何链接器错误。

如果我使用 x86 工具链,则会收到链接器错误,这些错误显示对 stdout 、 stderr 等的未定义引用。

我使用 nm 来读取两个 .a 文件(arm 和 x86)之间的差异,我看到 x86 文件的 stdout 未定义,而 arm .a 甚至没有提到 stdout 符号。

谁能指出我在这里缺少的东西?

0 投票
2 回答
2120 浏览

android - 在 NativeActivity 恢复时重新初始化 OpenGL ES 2 窗口

解决了!请参阅下面的更新。

我们正在将一个大型 C++ 应用程序移植到 Android,并且在暂停和恢复应用程序之前一切都运行良好。我们监听 APP_CMD_INIT_WINDOW 命令,当它出现时,我们重新初始化所有 egl 命令以获取表面、上下文和显示。在此之后屏幕是黑色的。但是,如果我们在它正常工作之后设置一个 glClearColor,这意味着我们至少有窗口并且可以绘制它。这使我们相信可能还有其他东西没有重新初始化。

我的问题是是否有缓冲区、着色器程序或其他缓存的东西需要在恢复后(或暂停前)清除和重新加载,以及测试的合适方法。我们怀疑这可能与我们的应用程序使用旧 EGL 上下文引用旧缓冲区有关,但我们无法知道。该应用程序使用大量纹理和屏幕外缓冲区。


更新:像往常一样,经过一周尝试不同的事情后,我们终于在创建帖子后解决了它。这是解决方案:

所有缓存的纹理、缓冲区和着色器都连接到 EGL 创建的上下文句柄。为了创建 GL 上下文,初始化了几件事,窗口表面就是其中之一。这是唯一依赖于 ANativeWindow 对象的对象,该对象在暂停和恢复应用程序时被销毁和重新创建。因此,这是唯一需要重新创建的。

简而言之:

在以新窗口对象作为参数的恢复之后再次运行 eglCreateWindowSurface。

0 投票
2 回答
9337 浏览

android - openSSL 使用 Android 的 NDK 问题

我有以下情况,我正在移植一个使用 OpenSSL 进行 AES 加密的应用程序,我已经编译了所有内容,但是链接器失败了。情况如下: 1. 我写了一个简单的 JNI 包装器:

接下来我有一个我调用的 c++ 文件,它具有适当的 JNI sintax,它将 jstring 转换为 char * 和所有其他需要的转换,并调用另一个 cpp 文件,该文件实际上导入 openssl 标头(存在和占)并调用 openssl 方法用于加密和解密。

因此,当我调用 ndk-build 时,它会构建所有拇指,因此编译器会正确编译它们。接下来我需要为 android 移植 openssl,我使用了这个用于 Android 的 OpenSSL, 它就像一个带有简单 ndk-build 的字符(当然在项目的根目录中)并构建 libssl.so 和 libcrypto.so

所以我需要将两者连接起来。我发现连接构建脚本是一个挑战,因此一个 ndk-build 编译并链接所有内容(如果有人有时间,我将不胜感激一个简单的示例项目)

所以我在 jni/includes/prebuilt 中复制了已编译的 libssl 和 libcrypto .so 文件,并希望将它们包含在项目中,以便链接器能够最终创建我将在最后使用的 lib。

我有以下 Android.mk 文件

当调用 ndk-build 时,我感到很失望

正如您已经猜到的那样,路径是完全错误的,让我感到困惑的是 ${LOCAL_PATH} 为第一批包含返回正确的路径,而为 .so 文件返回完全错误的路径......任何帮助将不胜感激!

0 投票
2 回答
1348 浏览

android - 对导入的 makefile 的更改不会触发 android-ndk 中的重建

我有一个想要编译的 Android JNI 项目ndk-build。该项目包含多个第三方子项目。

现在的想法是在 中包含/导入所有子项目的 makefile Android.mk,如下所示:

other-proj构建为静态库。my-proj.mk依赖other-proj并构建为共享库。

构建这个项目有效。但是,修改my-proj.mk或修改other-proj.mk不会触发相应项目的重建。有没有办法做到这一点?

我虽然可以将makefile列为依赖项,Android.mk但我想不出办法。(在下面列出它们LOCAL_SRC_FILES是行不通的。)

我还读到了$(call import-module,foo/bar)which 似乎完全符合我的要求。但是,在这种情况下,我必须将 makefile 放在与项目目录相邻的目录中(例如jni/makefiles/other-proj/Android.mk),但我不知道如何指定LOCAL_SRC_FILES. 他们似乎不喜欢用绝对路径或..路径内部来指定。(我不能将 makefile 直接放在子项目目录中,因为它们是第三方项目。)

0 投票
1 回答
1782 浏览

android - android_app->activity->internalDataPath 在 2.3.8 NDK r8 中仍然为 NULL

为了说明我在哪里测试,HTC Desire S、Android 2.3.5 和 ndk-r8。

我在 ndk-r7b 和 ndk-r8 中使用 android_app->activity->internalDataPath 或 externalDataPath 访问本地读写目录时遇到问题,因为它们都是 NULL。我看到这已在以前的版本中发布,并且根据这篇文章更新将解决此问题:-

如何使用 NativeActivity 写入内部存储文件系统?

现在也许这在 Ice Cream Sandwich 中得到了修复,但这远非理想,因为我的工具链完美地支持向后兼容性以捕捉那些不更新的人。所以我的问题是有一个已知的修复还是我必须手动添加像“/data/data/com.example.mytest/files/somefile.dat”这样的目录结构,直到它修复?

0 投票
2 回答
18301 浏览

android - adb shell ping 主机不起作用

现在,我想检查android设备是否可以通过网络连接到另一台设备。我可以使用浏览器登录互联网。但是当我使用adb shell连接android模拟器并使用ping命令连接主机时,它失败了。

(192.168.145.136是主机的ip!)

但是当我 ping 127.0.0.1 时,它可以工作。所以,我确信该设备支持 ping 命令。我只是很困惑为什么它不能在我可以在浏览器中登录互联网时 ping 主机。更重要的是,任何人都可以展示任何其他方法来检查android中的网络能力?

谢谢