草庐IT

ndk-bundle

全部标签

Android ndk 8b 无法加载库

升级到ndk8b我收到了一些崩溃报告(其中大部分是GalaxySIIwithAndroid4.03)java.lang.UnsatisfiedLinkError:Cannotloadlibrary:reloc_library[1286]:1836cannotlocate'__gnu_thumb1_case_uqi'...atjava.lang.Runtime.loadLibrary(Runtime.java:370)atjava.lang.System.loadLibrary(System.java:535)atcom.iuculano.fplayer.SDLActivity.void

android - Android NDK 中的 C++11 std::async 不起作用

我试图让以下示例代码起作用,以了解异步编程是否在AndroidNDK中起作用。虽然NDK有STL被识别为标题,std::asyncisnotgettingrecognition没有得到认可。我尝试使用的代码如下:#include#includestructFoo{Foo():data(0){}voidsum(inti){data+=i;}intdata;};intmain(){Foofoo;autof=std::async(&Foo::sum,&foo,42);f.get();std::cout同时所有的包含路径都已设置到属性->路径和符号下的指定文件夹ErrorsDescriptio

android - NDK 如何在发布时删除 Log Debug 语句

我知道使用混淆器可以从发布版本中删除javaLog.d调试语句https://stackoverflow.com/a/13327603/1527440但是有没有办法从NDKC/C++代码中删除日志调试语句。我正在使用定义语句在NDK中调用它们#defineLOGD(...)__android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__) 最佳答案 使用NDEBUG宏。或者你真的可以在任何事情上#ifdef。#ifdefNDEBUG#defineLOGD(...)#else#defi

android ndk没有制定目标的规则

我意识到之前有人问过这个问题,但没有答案能够解决我的问题。我正在尝试构建一个随NDK提供的示例Android应用程序,它具有以下Android.mk文件:LOCAL_PATH:=$(callmy-dir)MY_PATH:=$(LOCAL_PATH)include$(callall-subdir-makefiles)include$(CLEAR_VARS)LOCAL_PATH:=$(MY_PATH)LOCAL_MODULE:=native-activityLOCAL_SRC_FILES:=main.cLOCAL_LDLIBS:=-llog-landroid-lEGL-lGLESv1_CM

Android Bundle 简单单元测试不起作用

我是android的新手,正在尝试了解bundle的工作原理。我被下面的单元测试阻塞了。有人可以解释为什么失败吗?@TestpublicvoidtestBundle()throwsException{Bundlebundle=newBundle();Stringkey="hello";Stringvalue="world";bundle.putString(key,value);Assert.assertEquals(value,bundle.getString(key));}junit.framework.ComparisonFailure:Expected:worldActual:

android - 在 Android 应用程序中使用 NDK 构建的库时如何捕获 UnsatifiedLinkError?

我有一个Android项目,其中包含一个使用JNI从C函数中提取值的类。使用NDK将C函数内置到库中。当第一次加载类时,从C函数返回的值又用于初始化类中的变量。这很好用。但是,我还希望它通过提供默认值在缺少库时工作。所以我使用这样的东西:staticnativeStringgetstring();static{try{System.loadLibrary("library");NAME=getstring();}catch(Exceptione){NAME="Default";}}尽管有问题,当我尝试在缺少库的情况下运行此代码时,我仍然收到UnsatisfiedLinkError。为什

android - 在 ndk 应用程序中访问 android 上下文

有什么方法可以在我的ndk应用程序中传递/获取android上下文的对象。我想通过jni接口(interface)在我的ndk应用程序中使用SharedPreferences。要获取SharedPreferences对象的实例,我需要在Context对象上调用getSharedPreferences()。但是我无权访问上下文对象。或如何从NDK读取和写入xml文件?任何指针将不胜感激。 最佳答案 您不需要做任何特别的事情,就像常规的JNI机制一样。您需要获取指向上下文对象的指针,然后检索要调用的方法ID,然后使用所需的参数调用它。当

android - 如何为 NDK 静态库编写/调试 Android.mk?

我正在尝试使用最新的AndroidNDK(r5)构建静态库,但我没有任何运气。我已经能够毫无问题地构建和运行示例(例如,HelloJni),但是从“零”开始一个新项目是另一回事。对于这个实验,我正在尝试构建libpng。我的文件夹结构如下所示:root|+---jni|+----Android.mk(oneline:"include$(callall-subdir-makefiles)")|+----png|+----Android.mk(seebelow)|+----{abunchof.cand.hfiles)所以我有两个Android.mks。一个用于构建所有子项目,一个用于lib

android - 如何在 ANDROID NDK 中从 C 文件调用 CPP 文件中的函数,反之亦然?

我无法从c文件调用cpp文件中的函数,也无法从ndk本身的cpp文件调用c文件中的函数。我也尝试过使用extern"C"{}。粘贴我试过的代码以供引用。CFileCallingCpp.c:#include"CFileCallingCpp.h"//#include"custom_debug.h"#include"CppFile.h"voidtempFunc(){}voidprintTheLogs(){//ItsnotpossibletomakeuseoftheCPPclassincfile//CCustomDebugcls;//cls.printErrorLog("Thisistheer

android - Android和NDK下无法用gdb调试,启动Gdb导致App崩溃

我在尝试使用AndroidNDK调试native代码时遇到问题。当应用程序运行时,我启动了ndk-gdb,结果是gdb失去了与设备的连接,设备上的应用程序崩溃了。设备(SamsungGalaxy10.1)和模拟器都会发生同样的事情。主机运行的是MacOSX。应用程序的native部分由多个.so库组成,使用ndk-buildcleanallNDK_DEBUG=1构建我在下面附上了gdb输出。如有任何帮助,我们将不胜感激。编辑:也许问题出在“cp”命令失败?还有空的“Usinggdbsetupinit:”行?$NDK/ndk-gdb--verboseAndroidNDKinstallat