问题标签 [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 投票
5 回答
23838 浏览

memory - 当内核使用过度使用内存时,是否需要在分配内存后检查 NULL

通常的做法是在 malloc() 之后检查 NULL(内存是否已成功分配),例如

在内核中启用内存过量使用后,是否有机会获得 NULL?我应该遵循虔诚地检查每个分配的 NULL 的做法吗?尽管存在积极的过度使用机制(我猜值为 1),malloc 会返回 NULL 吗?

事实上,Android内核使用内存过度使用(不确定该值,很想知道它(过度使用值)及其意义)。Android(可能是第 3 方)中的一些框架源代码(C/C++)代码在分配后不会检查 NULL 也不会捕获 bad_alloc。我错过了什么吗?

SO中有一些关于过度使用内存的线程,但没有一个能解决我的困惑。

编辑:如果正在使用积极的过度使用,则不会返回 NULL(假设 1)。当没有可用的物理内存并且尝试访问分配的内存(写入分配的内存)时,OOM 将终止一些进程并为应用程序分配内存,直到它被依次终止(假设 2)。在任何一种情况下,我都认为不需要检查 NULL(内存被分配或进程被杀死)。我的假设是否正确?
便携性不是这个问题的关注点。

0 投票
1 回答
3690 浏览

c++ - gdb Input/Output error remote debugging to Android

I'm trying to debug an android app that call native code to do some GL rendering. The native code is existing code that I'm trying to port (and that I don't really know that well). I've got the existing code compiling, linking, and installing correctly, and I've got some native functions that call in to that code that are being correctly called from my Java code. I'm getting a segfault that I'm trying to track down, and having some problems getting gdb to set a breakpoint in the program. This is on windows XP with Cygwin - and I should probably mention I'm still learning gdb.

I started with the directions at http://honeypod.blogspot.com/2008/01/debug-native-application-for-android.html; here's what I'm currently doing.

Start the app in the emulator.

In a cmd prompt:

In a cygwin shell:

So it looks like the breakpoint gets set ok, and that the symbols are ok, but maybe the address is wrong when it tries to insert the breakpoint. I've tried several variations of different commands from the webpage referenced above, but so far, no luck.

Any ideas what's going on?

Thanks

0 投票
2 回答
15864 浏览

android - Android:如何使用 ndk 从 C++ 代码中读取游戏资产文件

我正在使用 irrlicht c++ 3D 图形引擎端口创建一个游戏到 android 平台。图形引擎是用 C++ 编写的。我需要能够从 C++ 代码加载网格和纹理等。我目前的计划是将所有游戏资产文件放在 res/raw 目录或 assets 目录中,然后在启动时将这些文件复制到 sdcard,以便可以从 irrlicht c++ 代码访问它们。这是使游戏媒体文件可从 C++ 访问的最佳方式吗?

0 投票
1 回答
617 浏览

java - JNI 应用程序状态

通过 JNI 访问方法时如何保持状态?在下面的示例中,我的 Java 代码正在调用本机方法 drawFromJni,我的本机类 _nc 会在调用之间保持不变吗?

如果 NDK 有更好的本机调试工具,这将很容易找到,但我确实遇到了 NDK 和 C++ 的问题。

0 投票
5 回答
5662 浏览

android - 如何找出我的 Android 应用程序的内存占用?

嗯,标题说了算。

知道还有多少内存可用也很方便。我正在编写一个内存不足的应用程序,它往往会随机崩溃(在本机代码中),我怀疑它内存不足。

0 投票
2 回答
3180 浏览

c++ - Android 从 C++ 端播放原始音频

我需要能够从 Android 系统的 C++ 端的自定义文件格式流式传输音频。我正在移植自定义媒体播放器,需要能够打开自定义文件并从中流式传输音频。这一点很重要,因为从性能的角度来看,我认为将整个播放器移植到 JAVA 是不可行的,并且我认为通过 JNI 接口移动音频缓冲区会太慢而无法保持良好的帧速率。我可以通过 OpenGL ES 处理 NDK 端的视频,但音频我不知道如何实现这一点。

0 投票
3 回答
7535 浏览

c++ - 从调用堆栈中获取函数名

我正在开发一个调用本机代码的 Android 程序。该本机代码存在段错误,并且由于通过 android NDK 进行调试并不是真正可行的,所以我留下了一个如下所示的调用堆栈(从 ddms 捕获)。我的问题是我是否可以在事后手动运行一些东西来将调用堆栈中的内存地址转换为函数名称,以便我可以看到这是段错误的位置。

谢谢

0 投票
2 回答
6237 浏览

android - Android NDK - 它支持直接 ARM 代码还是只支持 Thumb

我被要求为我们的产品评估 Android 平台,我正在寻找各种选项,我只是刚刚触及表面,困扰我的一件事是我看不到如何将代码编译为直接 ARM 代码(没有 Thumb),我知道 Thumb 运行速度较慢,我们需要代码关键部分的性能。

认为它应该只是在文件中设置-march标志,但我无法让它工作......LOCAL_CFLAGSAndroid.mk

任何人都可以帮忙吗?

0 投票
13 回答
29760 浏览

java - Objective-C 和 Android

我刚刚完成了一个相对较大的 Android 项目,但我知道它永远不会在太阳系这一侧最普遍的手机之一上运行(那个果味小俱乐部)。

因此,对于我的下一个项目,我想以一种使大多数组件在 iPhone 和 Android 平台之间轻松传输的方式编写它。我正在考虑这样做的方式是在 Objective-C 中编码大部分内容,然后分别在更多 Objective-C 和 Java 中添加特定于平台的部分。在 Android 端,这将需要使用 NDK。

我的C知识不错,但是Objective-C的知识接近于零,没有学习C++的欲望。上面的方法有多健全,还有更好的方法吗?有什么方法可以让我用 Java 编写代码并且仍然可以进入未破解的 iPhone 市场?我认识的人(iPhone 用户)在明年之前拥有 Android 手机的可能性有多大?

0 投票
2 回答
2032 浏览

android - Cygwin 和 NDK 的“错误:找不到有效的 GNU Make 可执行文件”

我是 NDK 的新手。(使用 Windows)。我已经下载了cygwin和NDK。我已将 NDK 解压缩到C:\. 当我运行 cygwin 时,我切换到 NDK 目录并运行命令

但我得到:

我已经下载了 GNU make 3.81 但仍然没有运气。

我与 GNU Make 有什么关系?我必须把它放在一个特殊的目录中还是将它添加到 PATH 中?