首页 > TAG信息列表 > android-ndk

android-以一种聪明的方式排除基于风味的JNI库

我有一个Android项目,该项目使用了一些很大的本机库. 我在这个项目中有几种口味,其中有些没有使用这些库,因此我想将它们从APK中排除. 我知道几种实现此目的的方法,但我想在build.gradle文件中使用一些不错的代码来减少可能的错误并学习常规. 我不得不提到,有一个布尔的buildConfig

Android的新64位要求是否意味着具有本地代码的应用程序的新最低API级别为21?

考虑以下: >通常,开发人员会将minSdkVersion设置为16,因为它覆盖了99%以上的设备(1). >但是,从2019年8月1日起,Android将要求所有应用程序都提供64位版本(2).>此外,NDK API级别(用-D__ANDROID_API__设置)必须等于minSdkVersion(3).>最后,在arm64-v8a上运行的Android设备不支持低于API

android-在apk中包含具有不同前缀的文件

我有一个要使用本机库的项目,文件格式为:lib< name> .so确实包含在apk中.但是< name> .so格式的文件却没有. 有没有一种方法可以将更高版本的类型包含到lib目录的apk中? 如果没有,是否有办法将文件包含到apk内的目录中,我可以从本机代码中加载该文件?解决方法:最简洁的答案是不”.如果

将C/C++程序移植到Android

我试图将C程序放到Android手机上,但是库链接遇到了一些问题.似乎我通过google找到的关于该主题的大多数有用信息都已过时(motz),或者根本无法说明我程序的复杂性.我已经能够运行简单的C程序,但是尝试使用Android的Bionic / libc之外的库时失败. 所以我的问题是: >是否可以将预先存在

android-本机类型的二进制表示形式是否在所有目标上都保证相同?

我打算将数据以二进制格式存储为资源,将其读取到int缓冲区中,然后基本上直接将其传递给本机C函数,该函数可能将其转换为struct / class并使用它.没有指针,显然,只是整数和浮点数. 问题是-我需要做哪种修复?我想我需要检查ByteOrder.nativeOrder(),找出它是大字节序还是小字节序,并在

Java-Android NDK捕获关键事件

我有一个Android NDK游戏(NDK 4).几乎所有代码都在C中(它是端口),因此在Java中,我仅有的是一个Activity和一个带有onTouchEvents覆盖的GLSurfaceView.我试图弄清楚如何接收按键事件,以便将它们转发到要处理的本机代码. 我尝试过使用View实现OnKeyListener,但是从未调用过onKey().还

java-OpenGLES在其他线程中预加载纹理

我需要在OpenGLES应用程序的非主线程中预加载一些纹理.我读到的是:Can’t call glGenTextures on multithreaded android app,但更多的是我需要的Java版本.如何告诉加载线程将纹理上传/创建到主循环中?我读了一些有关创建上下文的信息,并以某种方式与主要上下文共享.怎么样?解决方法:

Android:本机方法在哪个线程中运行?

从单独的Java线程调用本机函数是否有意义,或者Dalvik VM已在单独的线程中运行它?解决方法:本机方法与其他方法一样运行(除非在方法描述中另有指定).您应该处理需要运行缓慢的代码以防止UI阻塞的情况.有多种方法,请检查以下内容: http://developer.android.com/resources/articles/pai

何时在NDK中为全局变量调用C析构函数?

我最近在使用NDK编译Android控制台程序时遇到了一个奇怪的问题. 该类的声明如下: class ClassP { public: ~ClassP() int number; } ClassP::~ClassP() { printf("number=%d", number); } 主要功能如下: // global variable ClassP p_instance; int main() { pri

调用驻留在Android库项目中的本机函数时,Android NDK UnsatisfiedLinkError

我构建了一个Android应用,该应用使用Android NDK制作了一个共享的本机库(.so)来计算sha1,并且在一个独立项目中运行时效果很好.最近,尽管我将该项目变成了Android共享项目,并在其中保存了jni代码..然后我创建了一个引用共享项目的新项目,该项目似乎正常工作,除了在调用本机函数时收

Android:如何将ndk-gdb与纯本机可执行文件一起使用?

我已经将ndk-gdb用于在JNI上下文中加载的共享库.是否可以使用它来调试由Android.mk中的BUILD_EXECUTABLE目标构建的纯本机可执行文件?解决方法:您可以使用gdbserver启动或附加到进程. // Start debugger and attach to a running process adb forward tcp:5039 tcp:5039 adb shell

在cocos2d-x Android中的单例

我正在尝试编写一个用于维护游戏数据的单例类,即GameManager,就像这本书《 Learning cocos2d》一样. 这是我的.h文件: #ifndef GameManager_h #define GameManager_h #include "cocos2d.h" class GameManager { private: //Constructor GameManager(); //Instance o

Android C和NOT C

我试图确定使用C创建Android应用程序是否明智.我尝试将Java用于所需的功能,但是它根本没有我需要的语言功能. 我看到很多东西都是用C/C++编写的,但实际上每个人都是“ C”示例. 我想构建一个简单的C应用程序(不是’C’)以更好地了解如何在Android中执行此操作.我已经阅读了一些有关

Android中的本机库加载断点

如何在Android中为本地库加载事件设置断点? 我认为在dlopen()上设置断点将是一个很好的起点,但是,即使加载了libc.so和/ system / bin / linker的符号,gdb也无法找到dlopen函数. 看起来Android也正在使用.so文件的某些特殊格式,因为nm工具也不报告dlopen()位置. 是否有解决此问题的

Android NDK是否可以在Windows 7中使用?

过去几天,我一直在学习Android NDK,但我只是在浏览他们的网站,它说,唯一受支持的Windows操作系统是Vista和XP.有没有人知道这是不是真的?我认为他们可能还没有更新它.谢谢 编辑: Link to NDK System Requirements解决方法:是的,它确实适用于Windows 7. 看这个教程:Android NDK on Wind

使用NDK进行交叉编译,对le32toh和be32toh的未定义引用

我试图建立一个共享库,最终交叉编译一段使用对be32toh和le32toh的引用的代码.如果我构建这段代码并从中创建可执行文件,则不会出错: include $(CLEAR_VARS) LOCAL_SRC_FILES:= ubertooth.c ubertooth_helper.c LOCAL_MODULE := ubertooth LOCAL_C_INCLUDES += j

重用代码Android NDK

我找到了很多教程,展示了如何开始使用NDK开发Android应用程序. 但是我有一个相当“容易/愚蠢”的问题: 请考虑以下两个教程: > http://mobile.tutsplus.com/tutorials/android/ndk-tutorial/ > http://www.indiedb.com/tutorials/creating-compiling-and-deploying-native-projects-f

无法在Android上编译avahi

我是交叉编译的新手,我被分配了使用Android补丁http://avahi.org/ticket/354将avahi核心编译为android的任务. ndk-build avahi-configure V = 1成功,但是当我运行时:ndk-build V = 1 NDK_LOG = 2 APP_ABI =“ armeabi armeabi-v7a”,它发出大量警告,并且在socket.o上也会出错. 任何

Android OpenGL Surface在设备方向更改时崩溃

我的Android OpenGL应用程序出现问题.我有一个GLSurfaceView,它依次调用了一些用OpenGL绘制的本机NDK代码.相同的代码在iOS上运行良好,但是在Android上,当我旋转设备时,该应用通常会崩溃(有时不会崩溃). 崩溃时的日志如下所示: 04-30 14:30:20.365: I/visualizer_native(4326): Dra

Nexus 7中Skskivas :: drawPosText-> AutoDrawLooper :: next(SkDrawFilter :: Type)附近的libskia上的Android

我最近开始在我们的应用程序中获取此SIGSEGV,并试图找出原因或解决方法.我们的应用程序仅是Java,我们不使用NDK,因此我们不会破坏内存. 这是运行4.2.2的普通Nexus 7. 该错误是间歇性的,但始终在堆栈中包含SkCanvas :: drawPosText(以下是几个完整的堆栈转储): backtrace: #00 p

硬浮动要求在GCC中的某些功能

这是针对Android NDK项目的,但我想它通常适用于ARM的GCC. 我知道Android NDK使用软浮动来保持与ARMv5的兼容性,但是在我看来,当为我们的项目编译ARMv7库时,库内部的所有调用都可以使用硬浮动,而仅对其他对象使用软浮动.库,但我不确定是否可以告诉编译器执行此操作.我的感觉不是,但

将OpenCV项目从Desktop C移植到Android NDK

我的目的是测试对OpenCV算法的一些修改,尤其是ORB特征检测器和描述符.因此,我开始使用C进行桌面开发,并从OpenCV源复制了一些.cpp文件,尤其是orb.ccp,fast.cpp,precomp.cpp,fast_score.cpp.第一个是算法的主文件,第二个是ORB使用的特征检测器,第三个和第四个是必需的,在fast.cpp中

从本机代码检测Android上的CPU内核数

我正在使用sysconf(_SC_NPROCESSORS_ONLN)(我认为这是推荐的方式)来获取CPU内核数.它可以在Mac和Linux上正常运行,但是在我的4核Android平板电脑上返回2.如何从本机代码获取Android上的实际核数(不使用JNI调用Java Android API)?解决方法:sysconf(_SC_NPROCESSORS_ONLN)和sysconf(_S

Windows 7 x64上带有NDK r9b的android-cmake

我正在尝试编译使用CMake构建系统进行编译的第三方库. 我有Windows 7 x64和Android NDK R9b.我从https://github.com/taka-no-me/android-cmake下载了cmake-android,并设置环境变量(ANDROID_NDK)指向android NDK的根目录. 然后我尝试使用cmake-gui编译内容,在向导中询问时选择andro

Linux Pam创建静态库而不是共享库

我正在尝试通过以下方式为Android交叉编译Linux PAM `#!/bin/sh # Linux-PAM/build.sh INSTALL_DIR="`pwd`/out" export PATH="android/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.6/bin:$PATH" export CROSS_COMPILER="$PATH:android/prebuilts/gcc/l