问题标签 [android-native-library]

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 投票
0 回答
253 浏览

android - Android Java 与 Native C 未定义的对 `__android_log_print' 的引用

我知道这个问题已经被问了一百万次,但是我已经尝试了列出所有类型配置的所有方法,但无法让它工作。我真的需要从我的 C 代码中获取日志信息。如果有人可以提供帮助,我将分享相关文件,这将是非常棒的。

在 C 文件中,我在所有包含项下添加:

在 C 代码中,我的日志记录行被添加为:

构建梯度:

Android.mk 文件:

库不使用 C 文件中的日志记录行构建。只是对 `__android_log_print' 的未定义引用列表,这真的很令人沮丧。我已经尝试了所有问题中提到的所有配置,因此向我指出另一个问题可能对我不起作用。

我现在产生了这个新错误:

继续现在在我的调试窗口中得到这个不知道这是否相关或有帮助我的本机代码是 C 而不是 C++:

这是控制台输出:

0 投票
1 回答
3337 浏览

java - Flutter:MainActivity 在 Java Native 代码中无法转换为 FlutterEngine

我正在尝试用 Java 为 Flutter 创建一个插件。我正在尝试Android activity在我的主Java类中传递参数。

这是我的本机代码:

当我尝试调试我的应用程序时,我收到以下错误:

这是出现在我的GeneratedPluginRegistrant.java文件中的代码。

在制作插件时,我尝试删除 GeneratedPluginRegistrant.java 文件,但每次生成时都使用相同的配置。

0 投票
0 回答
144 浏览

java - 使用JNA将布尔值从Java传递到Android中的本机C

我在这里看到了这个问题的一个很好的答案,但是我对我的确切实现以及在结构内部和外部传递布尔值之间的区别有点不确定。我正在解决一个我已经问过很多问题的问题,但是此时我正在解决可能的错误。在我的结构中,我当前将布尔值简单地作为布尔值传递,而在外部,我正在使用 IntByReference 传递指向我的布尔值的指针。在阅读了其他问题和文档后,我开始意识到这可能不是那么直截了当,而且这很可能是错误的。我的结构是 Matlab 结构 emxArray_char_T,它包含一个布尔值 canFreeData。官方结构定义:

文档:https ://uk.mathworks.com/help/coder/ug/use-c-arrays-in-the-generated-function-interfaces.html#mw_0cae9a4a-b74d-43f9-aae0-ed192db73d22

我的班级/结构

在此范围内,布尔值作为我不确定是否正确的值被传递,并希望对此提出建议?

我有另一个问题,因为我通过与传入该结构的初始化函数相同的初始化函数在结构外部传递了一个布尔值:

通过这种方法给我带来了问题,我需要把它做好。当我映射到这个函数时,我这样做:

如前所述,下面链接了一个非常好的问题/答案,但是我很难理解这是否是我需要实现的东西,如果是的话,我将如何处理我的功能。我是 JNA 的新手,正在努力快速学习。我感谢所有的帮助。

JNA 将 Java 布尔值映射到 -1 整数?

0 投票
0 回答
268 浏览

android - 在 Google Play Console 中报告 libminikin.so 崩溃

我在 Google Play 商店中有一个应用程序,每隔几周,我就会在 Google Play 控制台中看到带有本机堆栈的崩溃报告:

  • 到目前为止,我还无法重现此错误/问题/崩溃
  • 类似的报告来自各种设备,主要是 Android 9(尽管这可能只是巧合)
  • “sk.mimac.slideshow”是我的应用程序包
  • “libminikin” 显然是一些 Android 库,虽然我不知道它的作用

有什么方法可以找出导致这次崩溃的原因吗?

0 投票
0 回答
176 浏览

android - CppSharp 是否支持为 Google Oboe Android 库生成包装器?

我不是 C++ 程序员,但想使用 Google 的 Oboe 库来实现低延迟音频。目前我正在使用 AudioTrack,但速度不够快。

我正在尝试使用 CppSharp 生成 P/Inoke 包装器。这甚至支持 libOboe.so 文件吗?我为 .Net Framework v4.7.2 编写了一个控制台应用程序。必须将 Platform 目标设置为 x64,否则它不会加载 CppSharp.Parser 库(格式无效)。

它做了一些事情,但只会产生错误。尝试将 ParseSourceFile 更改为 ParseLibrary 仅导致 NotFound。

除了 GitHub 上的内容之外,还有其他文档吗?

好的,这是我从 CppSharp 项目的 GitHub 上的示例目录中复制的代码

这是输出的一部分。它看起来好像将库视为名称 ParseSourceFile() 所暗示的文本文件。将其更改为 ParseLibrary() 只会导致 NotFound 错误。

0 投票
1 回答
156 浏览

android - _itoa_s 函数在 Android Studio 本机 C++ 上显示错误

在此处输入图像描述

我的代码:

我正在尝试在 Android Studio Native-NDK 上运行我的 c++ 程序。但是编译器向我显示了这个错误。使用未声明的标识符“_itoa_s”

有没有人有任何解决方案?

0 投票
2 回答
2284 浏览

android - 将 min SDK 从 21 增加到 24 时,APK 大小增加了 35mb

最近,我们将最小支持的 SDK 从 API 21 提高到了 24。

显然,这种变化导致我们的 APK 大小从 65mb 增加到 103mb。从 Android studio 中的 APK 分析可以看出,基本上都是 .so 文件的大小翻了一番。

但为什么会这样呢?gradle 属性没有改变,只有 min sdk。

关于如何再次减小 APK 大小的任何想法?

0 投票
2 回答
76 浏览

android - 远程二进制共享 nativeLibrary 未提取

因此,我提供二进制文件作为打包为aar. android 库libMyLibrary.so在目录中有文件src/main/jniLibs/<abi>/,因此在构建和部署时它们位于 aar 的 jni 目录中。该库唯一的另一件事是一个清单文件,其中只包含包名称package.name.A

package.name.A作为对不同项目的依赖项导入different.package.B,会导致在构建中正确打包所有内容,并且共享库包含在调试/发布 apk 的lib/<abi>/libMyLibrary.so. 但是,它们不会在安装时被提取到应用程序的本机目录中。

实际安装的 apk 显示.so文件存在于 apkZipFile(context.applicationInfo.sourceDir).getEntry("lib/${Build.SUPPORTED_ABIS[0]}/libMyLibrary.so")作品中,我可以通过这种方式提取它(只是不能提取到应用程序的 nativeDir,安全异常)。并System.mapLibraryName("MyLibrary")返回“libMyLibrary.so”...

在我将它们作为远程依赖项提供之前,它们src/main/jniLibs/<abi>/被提取,并包含在应用程序的目录中。现在,我可以在通过 an 将它们作为远程依赖项提供时提取它的唯一方法aar是包含在 Manifest 中android:extractNativeLibs="true"

我如何才能正确提取东西而无需在我的清单中声明?

我需要在远程库的清单中声明什么,以便在合并时,Android 知道共享的本机库并且它会正确提取?我需要一个 Android.mk 文件吗?

指导/帮助将不胜感激!

0 投票
0 回答
1111 浏览

android - 调试 espresso 测试在“实例化测试...”处挂起并出现 Object.wait 错误

很抱歉这个超长的问题,我有点迷路了。

我可以很好地运行测试,但是在调试时它会卡在“实例化测试......”阶段。在我的控制台中,我看到以下日志输出。主要错误似乎是:

A/xxxx.xxxx.debu: instrumentation.cc:267] Check failed: m == frame.method_ (m=0x72c770c558, frame.method_=0x6feec140) Expected void java.lang.Object.wait(long, int), Found void java.lang.Object.wait(long, int)

我在代码或谷歌中找不到对 instrumentation.cc:267 的引用

这是成功运行测试的日志。具体来说,调试时失败的日志部分。

由此看来,添加这 3 个侦听器时似乎失败了

测试本身并不重要,因为它甚至没有到达测试的第一行。

它似乎失败的点很重要。我试图didStart()在我的类中模拟以下调用,App该调用是在创建我的 android Application 类时调用的。这是模拟对我的本机 android 库的调用的更大任务的一部分。

为此,我对我的应用程序进行了子类化并添加了一些自定义 koin 加载以允许didStart()成功调用调用,然后我才有机会在测试本身中模拟事物。

这是我的构建信息:

Android工作室信息如果有用吗?

由于缺少有用的错误消息,我主要是在努力调试它。欢迎任何建议!

0 投票
0 回答
81 浏览

android - 将 C++ 库从 Windows 上的 C++ 源代码移植到 android

我编写了一个 C++ 库及其 cmake。我正在尝试将该库移植到 Android 上,以便我可以在那里使用该库。我正在尝试生成 .so 文件,以便可以在 JNI 中链接它。

我收到以下错误

CMake 错误:无法创建命名生成器 Android

在 Windows 上,我执行以下操作将其配置为 MSVC:

那么我如何从 Windows 上的相同 C++ 源代码构建本机库以及正确的 CMake 命令是什么。即使配置到android studio也很好。