问题标签 [native-activity]

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 回答
422 浏览

android - 什么决定了 Android Native Activity 中 (un)blankDisplay 的长度?

目前我在 Logcat 中得到以下输出:

开启屏幕时 unblankDisplay() 延迟过长:237ms

这似乎会触发操作系统破坏我的窗口并尝试重新创建它,但我的帧时间似乎并没有那么长。还有什么我需要触发的东西来表明我已经正确地取消了显示器的消隐吗?

0 投票
1 回答
175 浏览

android - 如何推迟 nativeactivity 调用直到 java 对象被初始化?

我正在尝试在 java 中初始化一些变量,然后将它们发送到我的本机代码。我需要延迟 nativeactivity 调用,以便 java 变量有时间进行初始化,然后可以将它们传递给本地活动。

我的主要问题是,当我从 NativeActivity 扩展我的课程(这是强制性的)时,一旦我的活动开始,本机活动就会一直被调用。在 super 之后调用 onCreate() 后,我的本机活动将自动启动,并且我的 java 变量尚未初始化。

0 投票
2 回答
8273 浏览

android - java.lang.IllegalArgumentException:无法加载本机库

我在我的项目(原生活动)中使用纯原生 NDK。当我在 Android.mk 文件中添加带有我的 .so 的预构建静态库时,它工作正常。但是当我尝试链接 Prebuilt 共享库时,它显示以下异常:

这是我的 Android.mk 文件:

在我的 AndroidManifest.xml 中:

最后在 Application.mk 中:

我也尝试将最后一行替换为,

我还应该怎么做才能将预构建的共享库与我的本机库链接?我在这里想念什么?任何帮助将不胜感激。

编辑:

0 投票
1 回答
330 浏览

android - 另一个不满意的链接器错误。找不到“主要”

我尝试按照那里的许多指南创建一个 Android 原生活动,但我无法让我的应用程序运行。相反,我看到了来自 LogCat 的以下内容:

我已阅读以下问题12,但这些都没有帮助我。我贴在我徒劳的努力下,希望有人能看到我看不到的东西。

AndroidManifest.xml:

MainAcitivy.java:

安卓.mk:

应用程序.mk:

最后,main.cpp:

在这一点上,我确信我正盯着解决方案,甚至没有意识到。

0 投票
2 回答
1386 浏览

android - 从 NativeActivity 中移除 contentView

删除已使用 setContentView 设置的视图的正确(或任何)方法是什么。该应用程序基本上是一个使用 openGL 的 NativeActivity 应用程序,因此没有定义布局/视图。我很早就需要添加一个启动画面,所以从 java 创建一个派生自 SurfaceView 的类来显示资源图像。这一切都很好,我设置 SurfaceView 使用

问题是我似乎无法删除此视图以查看我的 openGl 应用程序。我可以听到音频,它似乎正在运行,但这个启动画面是最上面的。我尝试设置可见性,使用 setContnetView(null),设置一个基本的空白文本视图,但似乎没有任何效果。

任何想法都会很棒。

谢谢

0 投票
1 回答
669 浏览

android - 需要 Android NDK NativeActivity 内存管理?

我正在使用NativeActivtynative_app_glueOpenGL为 Android 编写游戏。很难确定何时是删除堆分配对象和由OpenGL.

在 NDK 的NativeActivity示例中,他们似乎不会在使用完对象后删除它们。现在我用两个删除函数删除我的对象:一个用于OpenGL对象,一个用于常规。我将它们分开是因为似乎只有事件处理线程才能删除OpenGL对象。我分配的常规对象被正常的删除功能删除。

当用户按下后退按钮并返回应用程序时,OpenGL资源被删除并且应用程序崩溃(尽管我认为它们应该被重新分配APP_CMD_INIT_WINDOW)。这让我想知道我是否应该删除对象,因为看起来我不应该删除OpenGL对象。

我们是否应该使用 NDK 删除堆分配的对象。我知道 NDK 应用程序仍然是沙盒并且有一个JVM进程,这需要内存管理吗?

编辑:我的应用程序崩溃的另一个实例是在游戏状态完成时删除对象。例如从实际游戏到菜单。回到游戏后,即使对象被重新分配,应用程序也会崩溃。它似乎只工作一次。

0 投票
1 回答
1285 浏览

c++ - android ndk 上 OpenGLES 1.1 中具有 GLSurfaceView 模式的 FrameBuffers

在 Android NDK 中,是否可以使 OpenGL ES 1.1 与典型的 java 端 GLSurfaceView 模式(覆盖 GLSurfaceView.Renderer onDrawFrame、onSurfaceCreated 等的方法)一起工作,同时在 C++ 端使用帧、颜色和深度缓冲区,以及伊布?

我正在尝试使用以下方法创建它们:

但是,这似乎没有适当地获得上下文,我认为这是在初始化 GLSurfaceView 和渲染器时创建的(java 端)。

我不是 NDK 和 OpenGLES 方面的专家,但我必须移植一个使用 OpenGL ES 1.1 的 iOS 应用程序,并且我的目标是尽可能多地重用代码。由于该应用程序还利用了特定于平台的 UI 组件(按钮、列表等),在绘制 GL 图形时,我认为这将是最好的方法。但是,我现在正在考虑使用本机活动,尽管我不确定与其他 java 组件的关系是什么。

0 投票
0 回答
432 浏览

android - 使用 C/C++ 中的 Binder 实现 IPC

我有一个完全用 C 编写的 Android 应用程序。我希望能够在本地实现 IPC,即 - 如果可能,不要通过 JNI 回到 Java。

我已经读过,因为 Binder API 不是 NDK API 的一部分,所以我不应该直接从我的 C 代码中使用它,而是依赖使用 JNI 的 Java API。由于不受支持,API 可能会发生变化,并且可能在过去的几个版本中都有。

我的问题是 - 我可以直接从 C/C++ 使用 Binder,它仍然被认为是好的做法吗?而且,我这样做会遇到任何安全问题吗?

0 投票
0 回答
632 浏览

android - 使用 NativeActivity 优于 JNICALL 回调的优势?

为开发一个跨平台的OpenGL游戏引擎,

  1. 使用是否有性能优势:

    • NativeActivity 或 android_native_app_glue

      超过:

    • 定义一个Activity,创建一个GLSurfaceView,设置渲染器调用native方法;自己实现 JNI 调用?

  2. 如果使用 NativeActivity,是否有任何缺点:例如,您仍然可以使用 Google Play 游戏服务吗?

0 投票
1 回答
2558 浏览

android - 仅通过本机代码检查目录(文件夹)是否存在于 apk 中

我需要检查 apk 中是否存在某个目录。

android/asset_manager.hapi 似乎不一致 - 当无法打开文件时返回 NULL ,AAsset* AAssetManager_open(AAssetManager* mgr, const char* filename, int mode);但对于目录AAssetDir* AAssetManager_openDir(AAssetManager* mgr, const char* dirName);的实现总是返回 a new AAssetDir(...),即使在内部它无法在 apk 中打开/找到目录。

前向声明并且它的实现隐藏在 .cpp 文件中是非常令人恼火AAssetDir的,否则(可能?)可能检查内部AssetDir对象的有效性。

我现在正在探索另一种选择 - 调用 java 并执行以下操作:

但这对我来说似乎“肮脏”,而且肯定会很慢(这在我的特定代码中不是一个重要因素,但仍然 - 避免不必要的悲观是一种很好的编码习惯)。

我错过了什么吗?是否可以仅通过本机代码检查 apk 中是否存在目录?如果没有 - 如何最好地使用 jni?