Tag: android

设置CMAKE_PREFIX_PATH不能使用Android工具链

我正在使用Android CMake工具链将CMake C和C ++游戏移植到Android。 项目的库依赖项存储在PROJECTDIR/android_dependencies ,我已将以下代码添加到CMake文件中以使用它们(我检查了目录和文件是否存在)。 set(CMAKE_PREFIX_PATH “${PROJECT_SOURCE_DIR}/android_dependencies/${ANDROID_ABI}”) 但我的项目仍然说它无法找到像OpenAL这样的依赖项(所有的库都被复制了)。 如果我将库复制到$NDK/platforms/android-9/usr/lib并将文件包含到$NDK/platforms/android-9/usr/include ,项目将正确编译。 我能做错什么? 我正在使用64位的Ubuntu 16.04

使用Android Studio 2.2版的C / C ++

借助Android Studio 2.2,他们添加了新的C ++支持; 我现在可以在android studio中编写和编译,还是需要单独编译和导入我的库

_vscprintf相当于Android?

_vscprintf在Android上不可用。 另外vsprintf(NULL, fmt, ap)不起作用(产生seg错误),所以似乎无法计算vsnprintf成功所需的缓冲区大小? Android 源代码表明__android_log_print函数只是使用vsnprintf将字符串截断为1024 … 你如何处理这种情况?

是否可以直接从本机代码记录Android systrace事件,而不使用JNI?

Android systrace日志记录系统非常棒,但它只能在代码的Java部分工作,通过Trace.beginSection()和Trace.endSection() 。 在代码的C / C ++ NDK(本机)部分中,它只能通过JNI使用,JNI在没有Java环境的线程中很慢或不可用… 是否有任何方法可以将事件添加到主systrace跟踪缓冲区,甚至从本机C代码生成单独的日志? 这个较老的问题提到atrace / ftrace是Android的systrace使用的内部系统。 这可以(轻松)进入吗? BONUS TWIST:由于跟踪调用通常位于性能关键部分,理想情况下应该可以在实际事件时间之后运行调用。 即我一个人宁愿能够指定记录的时间,而不是自己轮询的呼叫。 但那只会锦上添花。

使用NDK在Android中进行实时图像处理

使用Android(2.3.3)手机,我可以使用相机通过onPreviewFrame(byte[] data, Camera camera)方法检索预览,以获取YUV图像。 对于某些图像处理,我需要将此数据转换为RGB图像并在设备上显示。 使用基本的java / android方法,运行速度低于5 fps …… 现在,使用NDK,我想加快速度。 问题是:如何将YUV数组转换为C中的RGB数组? 有没有办法在本机代码中显示它(也许使用OpenGL?)? 实时应该是可能的(Qualcomm AR演示向我们展示了这一点)。 我无法使用setTargetDisplay并在其上添加叠加层! 我知道Java,最近开始使用Android SDK并且没有C的经验

我可以在NDK应用程序中使用本机库(安装在Android堆栈中)吗?

从这篇文章 http://marakana.com/forums/android/examples/49.html 我已经看到在NDK的帮助下构建应用程序会做以下事情 1>它编译所有c代码(在jni文件夹中)并使库保留在libs文件夹中 2>在.apk包里面,该库也保留在lib文件夹中 在java文件中,我可以使用以下代码加载该库 static { System.loadLibrary(“ndk_demo”); } 问题1:所以现在有可能不是将该库保留为.apk的一部分而是可以在android系统中安装它并且我的应用程序从系统加载? 问题2:同样的方式我可以使用其他一些已经准备好安装在Android中的库,如open GL , sqLite ?

将C程序迁移到Android NDK

我是C / C ++和Android NDK的初学者,我在尝试创建本机库时遇到了问题。 我的代码在CDT上使用MinGW进行编译,但是当我在JNI文件上编写相同的代码时,会出现错误。 我的代码是: int n = 7; int positions[n]; int final_order[n]; memcpy(positions, final_order,sizeof(final_order)); 插件告诉我: Invalid arguments ‘Candidates are: void * memcpy(void *, const void *, ?)’ 这是CDT上MinGW的标题: _CRTIMP void* __cdecl __MINGW_NOTHROW memcpy (void*, const void*, size_t); 这是来自Android NDK的标题: extern void* memcpy(void *, const void *, size_t);

什么是android中的init.rc语言?

我需要了解init.rc的格式 在init.rc中有如此manny的服务。 其中之一是 service bootanim /system/bin/bootanimation user graphics group graphics disabled oneshot 这里有什么目的, disabled意思是什么? 我已经参考了这篇文章,但没有得到这么多。

在Android上运行NDK可执行文件时出现Magic 7F45错误

我创建了一个简单的Hello World C程序,使用ndk-build编译它,并通过adb传输它。 基本上我遵循了http://d34th4ck3r.wordpress.com/2011/06/18/how-to-run-c-cpp-code-in-android/中的步骤,除了GNUmake步骤(它似乎没有必要)因为我仍然得到我的二进制文件)。 但是,当我运行它时,我首先得到一个“无法执行:权限被拒绝”的错误。 使用chmod 777后,我收到了“不可执行:magic 7F45”错误。 请帮忙。 谢谢。

将C代码(netcat)编译为本机Android可执行文件

我正在编写一个使用Netcat通过网络连接提供帧缓冲的bash脚本,但首先我需要将其编译为本机可执行文件。 我甚至让这个脚本在Ubuntu机器上工作,默认安装netcat。 我发现这个https://github.com/android/platform_external_netcat但根本没有NDK经验。 这显然不会使用JNI或Java,因此制作Android应用程序的默认方法不会让我随处可见。 所以问题是。 如何从此源代码获取可执行文件?