问题标签 [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.
android - 无法在 4.2 4.3 上加载本机库,但在最新版本上加载
我有一个本机 android 应用程序(NativeActivity
没有 java 代码,只有libMyApp.so
本机库)
该应用程序在 Android 5.0.1 和 5.1.1 上完美运行,但在 android 4.3 和 4.2.2 上崩溃
对于 5.0.1 和 5.1.1 版本,.so
从
/data/data/com.example.myapp/lib/libMyApp.so
4.3 和 4.2.2 版本尝试从以下位置之一加载
/data/app-lib/com.example.myapp-1/libMyApp.so
/data/app-lib/com.example.myapp-2/libMyApp.so
错误信息是
我的应用程序有一个共享库,即不依赖第三方库。
并且模块名称在清单文件中指定,如下所示
libMyApp.so
与库链接-llog -lGLESv3 -lGLESv2 -lGLESv1_CM -lEGL -landroid -lz
。
为什么无法加载库,我缺少什么?
为什么旧的 android 版本不从加载/data/data/com.example.myapp/lib/
?!
较旧的 android 版本是否有另一个模块命名约定?
android - APP_CMD_WINDOW_RESIZED 未被调用,但本机窗口已调整大小
我有本机应用程序,该应用程序配置为不会破坏设备方向更改的活动。
当设备方向发生变化时,仅触发本机生命周期命令。
在命令处理程序中,我可以看到窗口大小已随ANativeWindow_getHeight
函数更改。
(我知道该ANativeWindow_getHeight
函数不是在配置更改处理程序中使用来获取窗口大小的最佳方法,我只需要检查窗口是否已调整大小。)
如果调整本机窗口的大小,我想应该触发以下本机命令?
为什么被屏蔽了?
android - 使用 NativeActivity “未找到实现”
我有一个正在处理的项目,它使用 NativeActivity 以及 android_native_app_glue 文件来连接到 Java 端。我需要通过 Java 访问一些非 NDK 类,并且已经弄清楚如何从 C 调用 Java,但是我遇到了相反的问题。当从 Java 调用 CI 得到“没有找到等的实现”时,我已经检查了这种调用的大部分陷阱,并相信一切都是正确的。这是活动类。
由于这是使用胶水代码的 NativeActivity,因此没有调用 JNI_OnLoad,入口点是 android_main(胶水代码已设置为在其自己的线程中运行)。
来自日志猫
任何东西都运行的事实意味着库已加载,它也在日志中
我已经用 javah 验证了它的名字
我还检查了库 externs 并且功能在那里
我在另一个项目中遇到了这个问题并创建了一个测试应用程序(上面的代码来自)所以它不是一些随机的独特配置问题。我对此有点不知所措,我假设它与 NativeActivity 和胶水代码(可能是线程)有一些问题,但不确定如何解决它。任何帮助,将不胜感激。
android-ndk - NDK NativeAvtivity 读/写 .txt 文件
如何在不使用上下文获取目录的情况下读取/写入 txt 文件。是否有任何“硬编码”通用路径。/data/data/com.project.name/file.mp3( .mp3 -防止压缩)不起作用(因内存故障而崩溃)。是否可以在 NativeActivity 中使用简单的标准 C 或 C++ 流?互联网上的所有事情都是关于使用 JNI/JAVA 或 android_app 结构(我无法达到)。
我使用的代码部分。对不起我的语言能力。
android - 如何防止我的 android jni 调用中的代码停滞?
我正在移植一个已经用 C++ 编写的应用程序,以便在 Linux 上运行,该应用程序现在需要在 Android 设备上运行。它是一个 GPU 密集型应用程序,可以进行 OpenCL 调用,运行一组测试。这些可能需要几个小时或几天才能完成运行。
我有一个 Java Activity,它读取一些基本输入,然后将其传递给 JNI。
它对于较短的操作运行良好,但超过几秒钟就会暂停;我可以取消它的暂停,它会继续运行,但是每隔一百左右的操作它就会严重挂起(需要一分钟而不是一秒钟)。
我在Android知识方面缺乏什么,我忽略了一些可能导致这种情况的严重谬误吗?将所有代码移至 NativeActivity 是否更有意义?或者我是否只需要不时调用 Java 来显示某些内容以防止操作系统将我关闭?
感谢任何有耐心回答我问题的人
android - Android NDK 设置屏幕方向
我想仅使用 Native 以编程方式设置屏幕方向。我知道我可以使用 android:screenOrientation="landscape" 在 AndroidManifest.xml 文件中设置/锁定方向,但这意味着每次我想要特定应用程序的不同方向时都必须重新构建。
我更喜欢的是,从像 AndroidManifest 这样的文件中读取设置并在 EGL 和 OpenGL 初始化之前设置方向,所以我不需要重建 APK。如果想要其他方向,只需编辑文件并运行应用程序。
如果可能的话,我还想避免使用任何 Java 代码,因为我的应用程序仅用 C++ 编写。
我查看了 NDK 源代码,发现 AConfiguration_setOrientation 函数,但它不起作用。
谢谢
java - 在非Activity Java 类中实现 onActivityResult
我正在努力通过 Intent 调用捕获图像功能。
我已经成功地从非 Activity 类实现 startActivityforResult 。我在那里得到活动上下文。
现在,我想在同一个 java 类中接收 onActivityResult。据我所知,必须有 Activity 类才能接收此方法。
有可能吗?
我尝试使用Java Proxy、 InvocationHandler 链接进行调用,但没有成功。
代码:
编辑:
OnActivityResultListener 是 Android Preference 类的接口。所以,我做这个到 InvocationHanlder 链接的工作。
android - 尝试通过 JNI 制作 Java UI
我有一个基于 NativeInterface 的应用程序,因此主要是用 C++ 编写的。不过,我希望在屏幕上有一些标准的 UI 元素,所以我编写了一个小型 java 类,其中包含在调用时应将 UI 放在屏幕上的方法。这样,当我想在屏幕上显示内容时,我可以通过 JNI 触发它。
这是功能:
但是,当我从 JNI 触发它时,屏幕上什么也没有显示。很让人心疼。如果我在函数中包含 Log 语句,它们会很好地打印到控制台,所以我知道它正在被调用。但它不会在设备的屏幕上放置任何东西。
奇怪的是,如果我将此代码剪切并粘贴到一个随机的空白项目中,它会做我想要的。出现文本框。很明显,这段代码能够在屏幕上创建文本字段。
如果我转到我的 C++ 代码,并用此方法中所有内容的 JNI 等效项替换我的 JNI 调用(调用此方法),那么它也可以工作。
我已经验证正在调用 java 方法。并且文本字段显然正在制作并持续存在 - 我可以检查和操作它的文本,从代码的角度来看,一切看起来都很好。它只是没有出现在屏幕上。
有人知道为什么吗?
android - 使用 ndk-build 构建 NativeActivity
我试图在从 java 正常启动后启动本机活动(我需要加载另一个库,这就是我从 java 启动 NativeActivity 的原因)。
我将如何使用 Android.mk 构建示例?原始示例使用 gradle。我尝试构建它,但在启动时库无法加载。
以下是代码片段。
Android.mk 遵循http://brian.io/android-ndk-r10c-docs/Programmers_Guide/html/md_2__samples_sample--nativeactivity.html
Java 活动
安卓清单
构建.gradle
谢谢
java - 状态栏下显示的 NativeActivity
我有一个 Android 游戏,里面有 NativeActivity 和一些 Java 代码。我的应用全屏显示,但现在我需要显示状态栏并使我的应用正确显示。
我知道如何显示状态栏,我尝试了两种方法:
- Android.xml:在应用程序中使用 Theme.Holo 而不是 Theme.Holo.Fullscreen:应用程序的主题
- 在 onCreate() 为应用程序窗口设置 FLAG_FORCE_NOT_FULLSCREEN
两种方法都给出了相同的结果。显示状态栏,但在其下方显示 EGL 视图。表示绘制 EGL 视图,然后在其上绘制状态栏,部分 EGL 视图被剪裁且不可见。
有没有办法让它只在可见区域而不是状态栏下绘制 EGL 视图?
我试图修复它,但发现 ANativeWindow 是预定义的(?),当我创建 EGL 视图时,它的大小与 ANativeWindow 相同。所以我不能改变 EGL 视图的大小(没有这样的 API)。也许我们有办法改变 ANativeWindow 的大小?或者一些活动设置/标志的技巧可以让它很好地工作?