Articles of Android的NDK

在Android.mk中使用Make的’通配符’function

我在Android.mk构建文件中使用Make的wildcard函数时遇到问题。 我的其他makefile使用类似这样的行来指定“此文件夹中的所有.c文件”: CFILES := $(wildcard *.c) 在我的Android.mk文件中,我试过这个: LOCAL_SRC_FILES := $(wildcard *.c) 但是,这与不包括任何文件具有相同的效果。 如果我手动包含文件,那么构建就像我期望的那样工作。 我想知道在评估此语句时,当前工作目录是否不是我的项目路径? 如果是这样,我可以使用$(call my-dir)和通配符函数的组合来获取我想要的列表吗?

Gradle Android Build System NDK问题

我会第一个承认我对Gradle和新的Android构建系统并不是非常专业,但不幸的是,由于问题21479( https://code.google ),我不得不转移到它(来自ant) .com / p / android / issues / detail?id = 21479 )和评论“这将不会修复。我们正专注于完成将取代Ant的基于Gradle的构建系统。” 不幸的是,在我添加Millenium Media广告库之后,我无法再次构建这些内容。 这是除了Android OpenCV库,Chilkat的加密库和支持v4库之外,但MMedia库是破坏它的一个。 因此,我认为,这是一个很好的理由,可以迁移到新的基于Gradle的构建系统。 不幸的是,尽管留下了破坏的ant构建系统,新系统似乎还没有完成; 特别是ndk的支持。 我正在使用的应用程序使用OpenCV进行一些image processing,并且一些操作运行速度太慢,除非它们被编译为本机(很多内存移动并比较在JNI边界上的速度太慢)。 因此,我不是试图在VM和本机代码之间来回传递数据,而是将所有这些内容留在本机端,只需从VM调用一次即可获得结果。 第一个问题是编译ndk的东西。 我无法让ndk闭包中的设置工作,所以我不得不求助于使用ndk-build命令并将其作为任务执行: task ndkBuild(type: Exec) { String MainDirectory = System.getProperty(“user.dir”) + ‘/app/src/main’ println “Main app directory for NDK build ” + MainDirectory if (Os.isFamily(Os.FAMILY_WINDOWS)) { commandLine ‘gradle-ndk-build.cmd’, MainDirectory, ‘-j’ } […]

无法find头文件 – Android NDK

我正在通过NDK将原生API包装到Android。 但是在构建它时却找不到头文件。 我有以下结构。 项目/ JNI Android.mk LOCAL_PATH := $(call my-dir) include $(call all-subdir-makefiles) LOCAL_PATH :=/home/marcos/dev/workspace/rmsdk.native.wraper/jni include $(CLEAR_VARS) LOCAL_LDLIBS := -llog LOCAL_MODULE := ndk1 LOCAL_SRC_FILES := native.c DelegateDRMProcessorClient.cpp LOCAL_STATIC_LIBRARY := adept cryptopenssl dp expat fonts hobbes jpeg mschema png t3 xml zlib include $(BUILD_SHARED_LIBRARY) 项目/ JNI / prereqs / Android.mk(用于调用所有子目录Android.mk文件) LOCAL_PATH := $(call my-dir) include $(call […]

Android软件NDK本机c代码在实际Android手机上进行分析

我正在使用日志本机代码在Android上开发一个相当大的软件,它现在正在运行,但有一些性能问题。 我希望我可以在几个真正的Android手机上分析软件的每个模块(函数调用)的CPU周期,内存使用情况等。 是否有一个简单的c库来做到这一点? 我看到人们使用oprofile,因为它是一个系统野外探测器,它似乎对我的情况来说太过分了,它需要重建内核和系统映像。 由于我有我的应用程序的完整源代码,我真正需要的是一个简单的c库,我可以嵌入我的代码中进行一些分析,同时应用程序运行多个测试用例。 顺便说一下,Linux的做法是什么?

如何使用c ++ 11支持为android作为共享库构建boost

我正在尝试使用c ++ 11支持为android构建boost_1.60.0(作为共享库)。 我正在使用最新的ndk(目前是android-ndk-r10e)。 构建主机是Windows-10。 这适用于非开源项目。 所以据我所知,我不能使用gnustl_shared,我需要使用c ++ _ shared作为android c ++运行时。 我的project-config.jam看起来像这样: androidNDKRoot = c:/android-ndk-r10e ; using gcc : android : $(androidNDKRoot)/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/bin/arm-linux-androideabi-g++ : $(androidNDKRoot)/toolchains/arm-linux-androideabi-4.8/prebuilt/windows-x86_64/ -MMD -MP -MF -fpic -ffunction-sections -funwind-tables -fstack-protector -no-canonical-prefixes -march=armv5te -mtune=xscale -msoft-float -fno-rtti -mthumb -Os -g -DNDEBUG -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64 -IC:/android-ndk-r10e/sources/cxx-stl/llvm-libc++/libcxx/include -IC:/android-ndk-r10e/sources/cxx-stl/llvm-libc++/../llvm-libc++abi/libcxxabi/include -IC:/android-ndk-r10e/sources/cxx-stl/llvm-libc++/../../android/support/include -IC:/android-ndk-r10e/platforms/android-9/arch-arm/usr/include -Wa,–noexecstack -Wformat -Werror=format-security -DUNIX -DANDROID -Wl,–no-undefined -fexceptions […]

注意! 找不到符号目录 – 请检查您的本机调试配置

我使用Android studio 2.2和Android.mk文件 https://developer.android.com/studio/debug/index.html c ++文件位于Android模块内,而不是在调用应用程序中。 我在模块中添加了以下内容: externalNativeBuild { ndkBuild { path ‘jni/Android.mk’ } } 我构建项目时没有错误,我可以在我的java文件中添加断点,但是当我尝试连接本机调试器时,我不断find没有符号目录。 当我没有得到错误时,调试器永远不会在c ++模块文件中的任何断点处停止。 我使用buildToolsVersion“25.0.0”,我看到这个https://code.google.com/p/android/issues/detail?id=202611仍然是同样的错误 任何想法如何克服这个?

如何使用OpenCV获得像Cam Scanner一样的Magic Color效果

这是原始图像。 Cam Scanner魔幻色彩效果。 我在图像上的filter。 我正在改变图像的对比度。 dst.convertTo(dst, -1, 2, 0); 然后使用高斯模糊进行平滑。 cv::GaussianBlur(dst,result,cv::Size(0,0),3); cv::addWeighted(dst, 1.5, result, -0.5, 0, result); 我应该怎么做才能对我的形象产生这种影响? UPDATE 直方图均衡后 – vector channels; Mat img_hist_equalized; cvtColor(dst, img_hist_equalized, CV_BGR2YCrCb); split(img_hist_equalized,channels); equalizeHist(channels[0], channels[0]); merge(channels,img_hist_equalized); cvtColor(img_hist_equalized, img_hist_equalized, CV_YCrCb2BGR);

无法运行程序“\ ndk-build.cmd”:启动失败

我从未参与过ndk。 但是我有一个使用ndk的项目。 它给了我java.lang.UnsatisfiedLinkError: Native method not found: 我试图在Google上搜索。 我有很多链接但是所有都与jni.cpp文件有关但我的错误是在java文件中。 所以我无法find如何纠正它。 “java.lang.UnsatisfiedLinkError: Native method not found: il.co.telavivapp2u.onceapponatime.SharedResources.ocvBitmapPreMultAlpha:(Landroi‌​‌​d/graphics/Bitmap;Landroid/graphics/Bitmap;) 我在此链接后集成了NDK。 这个项目由另一个开发人员完成我们正在添加更多function。 这部分由前面的开发人员完成。 我刚添加了Google Search API活动和图库图片活动,它将在网格上显示图片。 之前的开发人员已将一些图像放在可绘制文件夹中并将其显示在图库视图中。 无论他在最后做什么,它都能完美地运行。 即使现在也。 但是我添加了同样的事情并没有发生 单击应用程序可绘制图库视图上的图像后,它将进入相机活动,该活动将以所选图像作为背景捕获图像。 然后我们可以编辑并保存该图像。 但是在移动图库和谷歌搜索图像捕获应用程序后的情况下,ANR。 我已经将NDK路径和variables设置为eclipse,我也安装了c c ++插件 控制台也显示出来 Cannot run program “\ndk-build.cmd”: Launching failed . 我无法理解我犯错误的地方。 请帮帮我。 JNI文件 ANR发生在第207行。 这是我的代码: package il.co.telavivapp2u.onceapponatime; import java.io.File; import java.io.FileOutputStream; import java.text.SimpleDateFormat; import java.util.Date; […]

将预先录制的音频播放到语音通话中

之前已经问过这个问题( 如何在Android上的语音通话中播放音频文件,在语音通话中 播放音频文件等),但无论如何我都会问:是否可以将音频文件播放为正在进行的语音呼叫。 我知道简短的回答是“不”,但我还没弄清楚为什么会这样。 我知道SDK没有任何支持,但是它有可能通过某种方式编写自己的代码来处理这个问题,可能是在C / C ++代码的帮助下(使用NDK)。 有没有人对如何解决这个问题有任何想法? 或者答案是严格的“不,你不能将预先录制的音频播放到语音通话中”? 我真的不在乎解决方案是否在所有设备上都不起作用,因为我find了一些支持该解决方案的设备,并且如果需要,我可以考虑获取root权限。

尝试在我的Android应用程序中调试某些C代码时获取“未知应用程序ABI”

我正在尝试按照此处给出的说明在我的Android应用程序中调试C代码,但是当我执行“Debug as / Native application”时,我得到了Unknown Application ABI 。 我检查了我的NDK路径是否按照此处的建议正确设置,并按照此处的建议将DUMP_APP_ABI选项添加到ndk-build 。 有人可以帮忙吗? [2013-08-15 11:16:14 – MyProject] Unknown Application ABI: [2013-08-15 11:16:14 – MyProject] Android [2013-08-15 11:16:14 – MyProject] Unknown Application ABI: [2013-08-15 11:16:14 – MyProject] NDK: [2013-08-15 11:16:14 – MyProject] Unknown Application ABI: [2013-08-15 11:16:14 – MyProject] WARNING: [2013-08-15 11:16:14 – MyProject] Unknown Application ABI: [2013-08-15 […]