Articles of android ndk

加载依赖于其他共享库的共享库

问题: 我正在Eclipse中构建Android应用程序,它使用共享库libgstreamer-0.10.so (为Android-8平台编译的GStreamer-android NDK Bundle库) 。 我在项目根文件夹中libs/armeabi了新文件夹libs/armeabi并将其放在那里。 此外,我已将其附带的所有其他库(其中158个)放在同一个文件夹中。 如果我把它放在我的主要活动代码中: static{ System.loadLibrary(“gstreamer-0.10”); } 在Android-8模拟器上构建/安装/运行我的应用程序,它会抛出此错误: 06-15 21:54:00.835: E/AndroidRuntime(402): Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: link_image[1962]: 33 could not load needed library ‘libglib-2.0.so’ for ‘libgstreamer-0.10.so’ (load_library[1104]: Library ‘libglib-2.0.so’ not found) 现在, libglib-2.0.so与libglib-2.0.so在同一个文件夹中,为什么没有加载? 我得到链接器尝试从/system/lib和libglib-2.0.so加载它只是不存在,但为什么它不从libgstreamer-0.10.so的位置加载它? 所以我去发现libgstreamer-0.10.so依赖于这个命令的libs: arm-linux-androideabi-readelf -d libgstreamer-0.10.so 结果: Dynamic section at offset 0x118b64 contains 29 entries: Tag Type […]

如何在Android中使用Tesseract?

我在网上搜了几个小时。 我得到了许多答案,说我们需要使用NDK等来为WINDOWS的“Tesseract”。 但是我没有逐步/正确解释安装NDK时应该做什么。 如何获取.so文件? 我已经完成了NDK和Cygwin的安装。 为了检查它是否正确完成,我输入make -v并给出了预期的输出。 任何使用过“Tesseract”的人都可以告诉我他们是如何做到的吗? (我已下载“Mezzofanti”,但在那里我没有find任何“Tesseract”文件。)

使用android NDK获取硬件浮点数

我已经开始玩Android NDK了。 我刚刚学到的一件事是创建一个application.mk文件来指定armv7 abi。 我正在使用以下参数构建san-angeles示例。 APP_MODULES := sanangeles APP_PROJECT_PATH := $(call my-dir)/../ APP_OPTIM := release APP_ABI := armeabi-v7a 然而,这似乎以与之前完全相同的速度运行(即严重)。 我只是GL限制而不是CPU限制或这里有什么问题吗? 我注意到在编译时我发出了以下命令行选项: -march=armv7-a -mfloat-abi=softfp -mfpu=vfp -mthumb 令我担心的是“softfp”。 有提到v7 abi,​​VFP fpu的东西,我猜“拇指”指的是“拇指-2”指令(虽然我不知道究竟是什么)。 然而,“softfp”确实让我感到担忧。 难道不应该是“hardfp”吗? 有人对这些问题有任何想法吗? 我想我可能已准备好开始为我的HTC Desire实现一些GL ES 2.0代码,但我想确保我从中获得最佳速度:) 提前干杯!

任务执行失败’:app:compileDebugNdk’无法运行此命令ndk-build.cmd

Error:Execution failed for task ‘:app:compileDebugNdk’. com.android.ide.common.internal.LoggedErrorException:无法运行命令:C:\ Program Files \ ADT \ sdk \ android-ndk \ ndk-build.cmd NDK_PROJECT_PATH = null Error Code: 1 这是我在android studio上运行make项目时获得的输出。 我在android studio 1.0 sdk构建工具24.0但是针对API 14 这是我的Android.mk文件的样子 LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := Main LOCAL_SRC_FILES := Main.cpp LOCAL_LDLIBS := -llog -ljnigraphics -lz -landroid LOCAL_SHARED_LIBRARIES := libavformat libavcodec libswscale libavutil include […]

找不到Javah错误android.app.Activity

我正在尝试为简单的NDK项目创建一个.h头文件。 使用cygwin我浏览到myprojectDIR\jni目录,然后执行以下命令: javah -o com_myproject_MyActivity.h -classpath myprojectDIR\bin\classes com.myproject.MyActivity 然后出现此错误消息: Error: cannot access android.app.Activity class file for android.app.Activity not found 我在MyActivity类中有一个本机方法,所以我尝试创建一个名为NativeAccess的新类(不扩展android SDK中的任何类)并且它工作正常,.h文件已创建,ndk-build和测试在设备上成功了! 所以我的问题是我需要在我创建的android活动和服务中使用我的本机方法,但我不能这样做,因为Javah命令无法从android-sdk本身内部访问类。 请注意我正在使用(Windows-7 x64),我有这些环境variables: ANDROID_NDK : C:\Android\android-ndk-r7b ANDROID_SDK : C:\Android\android-sdk ANT_HOME : C:\ANT\apache-ant-1.8.3 JAVA_HOME : C:\Program Files\Java\jdk1.7.0_02 PATH : %JAVA_HOME%\bin;%ANDROID_SDK%\tools;%ANDROID_SDK%\platform-tools;%ANDROID_NDK%;%ANT_HOME%\bin; (other unrelated stuff) 提前致谢

android ndk gdb加载的sharedlibraries缺少* .oat

调试我的设备时,gdb 7.7和7.11都错过了一些共享库(oppo r7s)。 我把所有的图书馆都搬到了当地 。 以下是info shared显示的完整库列表 (gdb) info shared From To Syms Read Shared Object Library 0x40000980 0x40009640 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\linker 0x401c7940 0x401ce6e8 Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libutils.so No libstdc++.so No libm.so 0x4013bbb0 0x4017329c Yes (*) Z:\program\program\target\android_RelWithDebInfo\obj\local\armeabi-v7a\libc.so No libbinder.so No liblog.so No libhardware.so No libcutils.so No libc++.so No libLLVM.so No libbcinfo.so No libunwind.so No libz.so No […]

Android – 将HDMI CEC命令发送到电视 – minix – libCEC

我正在使用Minix NEO X8-H(Android媒体中心,4.4.2),我需要将HDMI-CEC命令发送到电视:当我的应用程序接到电话时,我想自动将电视源更改为Minix hdmi资源。 实际上,Minix提供了一些启用HDMI-CEC的选项,据报道媒体中心软件XBMC支持CEC。 但我只想在“接收模式”中:用户可以使用电视遥控器命令Android设备。 我想以相反的方式工作。 我浏览XBMC的源代码,我发现了非常有趣的代码,但不知道它是否对我有用。 我find了获得HDMI-CEC输入命令的串行设备 /dev/input/event7 内核引用放在:“/ sys / devices / virtual / input / input7 /” # cat /sys/devices/virtual/input/input7/name cec_input 这是dmesg日志的一部分: http://pastebin.com/raw.php?i=A5dE3qLu [ 0.000000@0] Kernel command line: init=/init console=ttyS0,115200n8 no_console_suspend storage=5 cvbsdrv=0 vdaccfg=0xa007 logo=osd1,loaded,0x15100000,4k2ksmpte,full hdmimode=4k2ksmpte cvbsmode=576cvbs androidboot.firstboot=0 hdmitx=cec0 [ 0.000000@0] kernel get hdmimode form uboot is 4k2ksmpte [ 0.000000@0] hdmitx: […]

Android Studio – 在现有旧项目中启用本机C ++调试(card.io Android Source)

我目前正在尝试了解card.io Android Source的原生实现是如何工作的。 为此,有可能调试本机C ++代码。 目前我的断点不受尊重。 我确实尝试了以下方法: 调整Application make文件(Application.mk): APP_ABI := armeabi-v7a APP_CFLAGS += -UNDEBUG -O0 -g -ggdb APP_OPTIM := debug APP_CPPFLAGS += -DDMZ_DEBUG=1 将buildType添加到SampleApp的build.gradle文件中 buildTypes { release { minifyEnabled true proguardFile getDefaultProguardFile(‘proguard-android.txt’) } debug { debuggable true } } 注意:我使用的是带有Ubuntu 16.04(64位)的Android Studio 3.1,如果我创建一个支持C ++的新项目,调试就完全正常了。 我们正在调试Android 7.0设备; 该项目正在使用NDK构建系统。

如何编译和链接生锈的代码到Android apk打包应用程序

我正在尝试将Rust代码添加到android NDK示例(native-activity); 每当我将Rust代码(编译为.a)链接到.so时,它都无法运行。 我从这里获取信息,以获得一个知识渊博的防锈编译器和’独立工具链’ https://github.com/mozilla/rust/wiki/Doc-building-for-android 有人在Rust IRC频道上建议我需要在某处提到“拇指”; 是否可以选择传递给rustc,或者我是否必须首先以不同的方式构建它? 我当然可以在桌面版本上调用另外的rust&c。 是否有人在.apk中使用锈蚀代码; 它必须简单..很难破解复杂项目的makefile。 (我认为通过阅读伺服源来解决这个问题非常困难) 我已经证实这个过程可以生成一个可用的包装而不会生锈; 如果我链接未经剥离的防锈代码 – 即使没有达到(即使链接没有告诉我任何错误),它也无法运行。 如果我删除对’rusty_android()’的调用,它就可以了。 如果我将对garbage_android的调用移动到未到达的点,它仍然无效。 我可以用’nm’validation’rusty_android’是否在.so …中没有被剔除。 这是我目前的构建过程:它取自android native-activity示例; 我添加了一个带有单个externfunction的锈源文件,返回一个值,并尝试从样本的C main调试打印 ANDROID_CXX = /opt/ndk_standalone/bin/arm-linux-androideabi-gcc android: $(ANDROID_CXX) -I/home/ME/android-ndk-r9b/sources/android/native_app_glue -c jni/main.c -o obj/local/armeabi/objs/native-activity/main.o rustc –target=arm-linux-androideabi hello_android.rs -C android-cross-path=/opt/ndk_standalone –crate-type=staticlib -o rusty_android.a $(ANDROID_CXX) -shared -o libs/armeabi/libnative-activity.so obj/local/armeabi/objs/native-activity/main.o obj/local/armeabi/libandroid_native_app_glue.a another.o rusty_android.a -llog -landroid -lEGL -lGLESv1_CM ant […]

如何在Android Studio 2.2 Preview 1中正确使用NDK-Build

Android Studio 2.2 Preview 1有一个新的外部ndk构建function,但是从官方博客文章中显示的app/build.gradle片段中根本不清楚如何设置Application.mk文件通常包含的其他ndk构建参数 我可以通过externalNativeBuild设置Android.mk ndk构建文件,但是如何设置所需的Application.mkvariables呢? 我的Application.mk包含: NDK_TOOLCHAIN_VERSION := clang APP_PLATFORM := android-16 APP_ABI := armeabi APP_STL := c++_static APP_CPPFLAGS += -std=c++11