这个问题是延续到我应该select在Android Android的Boost的Asio或Aysnc套接字线程? 问: Boost库旨在广泛使用,并可用于各种应用程序,但尚未提供针对Android和iOS的官方支持 有没有像embedded式设备不优化背后的任何特定原因? 或者其他原因? 任何机构是否知道在Android或iOS上使用Boost构build的任何应用程序? build议使用boost库来进行networking密集型应用程序,这种应用程序会产生multithreading通信? FYI ..我一直使用下面的链接来创build一个示例Android应用程序,但不成功:( https://github.com/MysticTreeGames/Boost-for-Android http://www.codexperiments.com/android/2011/05/tips-tricks-building-boost-with-ndk-r5/ 在Android中包含Boost C ++库 如何在Android NDK和STLport中使用boost库(包括shared_ptr) https://sites.google.com/site/fourdollars/android/android-mk https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/4lxhsKFe7Ho http://www.crystax.net/trac/ndk/ticket/6 Android NDK R5和C ++exception的支持 提前致谢。
我已经在Eclipse(MAC OSX)中运行了一段时间的Android SDK。 我已经下载了NDK,并在Eclipse中安装了C / C ++工具,但任何人都可以指导我使用NDK? 例如,我是否像正常一样创build一个Android项目,然后用NDK来构build它? 真的可以做一个体面的教程,如果有人知道任何。 编辑:好,所以我现在安装NDK(我认为),但没有任何人有任何想法如何使用它? 我得到了这个(从这里拿走): 运行terminal cd〜/ android-ndk-1.5_r1 使APP = hello-jni 为了运行hello-jni示例应用程序,但是在terminal中出现错误: Android NDK:定义为未知应用程序的APPvariables:hellojni Android NDK:您可能想要使用以下任一项: build / core / main.mk:81:*** Android NDK:正在中止。 停止。 任何想法为什么?
在你的Android JNI应用程序中有上述错误? 继续阅读… 在前面,我会说我已经用我自己的方式解决了这个问题,但是我感觉Android构build系统中的某些东西(可能是关于Eclipse)已经崩溃了,我希望能够节省一些时间。 也许其他人已经遇到了这个问题,并可以评论什么对他们有效。 有一段时间,我有一个Android项目,有一些使用NDK开发的JNI代码。 然后,今天,我改变了Java代码中的东西,然后poof,我不能再加载我的JNI库。 它失败了,例如: E / AndroidRuntime(999):java.lang.UnsatisfiedLinkError:无法加载mylibrary:findLibrary返回null 我Googlesearch并尝试了一切(重build,closures和重新启动Eclipse等等) 什么最终解决了我的问题? 在尝试另一次运行之前,我从设备上物理卸载了我的应用程序。 而已。 之后,它的工作。 什么对你有用?
这不仅仅是一个答案,而是一个问题,因为我已经弄明白了,至less就整个库的编译而言。 主要的问题是让shared_ptr工作。 配料: Boost v。1.45.0 STLport的版本在http://www.anddev.org/viewtopic.php?p=29939 。 NDK的版本r4b。 路线: 在你的Android.mk文件中添加: LOCAL_CFLAGS += -DBOOST_EXCEPTION_DISABLE -D_STLP_NO_EXCEPTIONS -DOS_ANDROID -D_STLP_USE_SIMPLE_NODE_ALLOC 在stlport / stl / _string.h的第613行删除对__stl_throw_length_error的调用。 如果你喜欢,你可以使用_STLP_NO_EXCEPTIONS。 在第261行后面编辑boost / boost / smart_ptr / shared_ptr.hpp,以免在shared_ptr构造函数中调用boost :: throw_exception。 我在方法的整个主体周围使用了#ifndef BOOST_EXCEPTION_DISABLE。 (但请参阅下面的答案。) 接下来,你需要提供一些缺失的部分。 使用以下命令创build一个头文件: #ifdef OS_ANDROID #include <exception> namespace std { struct bad_alloc : public exception { bad_alloc operator()(){}}; } #endif 和一个带有精简exception类的源文件来支持bad_alloc: #ifdef […]
运行ndk-build命令时出现以下错误: Android NDK: Could not find application project directory ! Android NDK: Please define the NDK_PROJECT_PATH variable to point to it. 我的Android.mk文件的内容: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := FRE LOCAL_SRC_FILES := FlashRuntimeExtensions.so include $(PREBUILT_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := NativeQCAR LOCAL_SRC_FILES := main.c LOCAL_SHARED_LIBRARIES := FRE include $(BUILD_SHARED_LIBRARY) 添加下面的行不起作用: NDK_PROJECT_PATH = C:/Users/Wessel/Dropbox/workspace/eclipse/NativeQ
Androidshell没有cp命令。 Androidshell也没有sed或grep或vi 。 我没有可用的adb守护进程。 有mv命令,但如果源位于只读设备上,则拒绝工作。 如果我必须recursion地从只读设备复制一些目录,该怎么办? 如何更改文本文件中的一行(例如“PATH = / cache”为“PATH = / mnt / asec”)?
我使用NDK和GCC将一些C ++代码移植到Android。 代码基本上运行。 有一点,在Eclipse中debugging时,调用 Dabbler::Android::Factory* pFactory = new Dabbler::Android::Factory; 导致这个错误: Thread [1] (Suspended: Signal 'SIGILL' received. Description: Illegal instruction.) 1 <symbol is not available> 0x812feb44 那是什么意思? 由于某种原因,编译器是否生成了非法代码? 我在构造函数中有一个断点(它什么都不做),并没有被打中。 我已经完成了重build。 我能做什么错误导致这个问题?
更新3:我与另一位开发人员合作,我们似乎find了一个能够为此花费大笔金钱的人。 他们给我们一个testingapk,它似乎工作。 我们将继续购买源代码。 我希望我们不会被骗。 一旦我发现,我会更新 更新2:仍然在努力。 经过更多痛苦的日子,我现在认为没有什么奇特的事情,但他们只是在本机端使用AudioFlinger( 请参阅链接 )来调用AudioFlinger :: setParameters 我现在正在寻找如何编写一个简单的JNI来调用AudioFlinger :: setParameters with audio_io_handle_t ioHandle,const String8&keyValuePair 我知道什么keyValuePairs可以但不是关于audio_io_handle_t的线索 更新:我现在相信其他应用程序可能正在使用与CAF的QCOMaudio。 请参阅链接 audio_extn_utils_send_audio_calibration 相同 和voice_get_incall_rec_snd_device在链接相同 我没有C / ++的知识。 我怎样才能知道是否可以从本地调用这些方法? 由于其他应用程序可以,一定有办法。 我一直在这个40多天的时间里挣扎,每天至less有5-6个小时。 我不确定这是否被允许,但我也乐意为正确的答案捐款。 我有一个使用VOICE_CALLaudio源的通话录音应用程序。 尽pipeASOP没有实施/强制执行,但大多数制造商已经实施了VOICE_CALL,使用VOICE_CALLaudio源的应用程序在许多设备上运行良好。 这是直到Android 6。 Google使用Android 6更改了此行为。现在打开VOICE_CALLaudio源需要android.permission.CAPTURE_AUDIO_OUTPUT,它只被授予系统应用程序。 这基本上停止了通话logging,或者它应该有。 那么,除了3个已经find解决这个限制的方法之外,它对我和其他200多个通话录音应用程序都有效。 我一直在用Android 6在许多不同的手机上试用这些应用程序,并发现了它们logging的某些特征。 他们都使用Android AudioRecord类并打开MICaudio源。 我也做; 但在我的应用程序中,我只从MIC获取audio,而不是另一方。 我发现,在开始录制之前或之后,他们正在发出某种系统调用。 查看下面的日志表单,即使使用MIClogging,也能成功loggingVOICE_CALL的应用程序之一。 它看起来像应用程序是如何pipe理混合/路由/stream/合并VOICE_CALLaudio源到MIC。 – D/audio_hw_primary: in_set_parameters: enter: kvpairs=input_source=1;routing=-2147483644 – D/PermissionCache: […]
我已经在3天之前将我的Android Studio更新至1.3.0版本。 在此之前,我可以使用NDK,现在我得到错误, 错误:(50,0)错误:NDK集成在当前插件中已弃用。 考虑尝试新的实验插件。 有关详细信息,请参阅http://tools.android.com/tech-docs/new-build-system/gradle-experimental 。 在gradle.properties中设置“android.useDeprecatedNdk = true”,继续使用当前的NDK集成。 我在项目级找不到文件gradle.property。 我怎样才能解决这个错误?
有谁知道我在哪里可以find旧版本的Android NDK? 我们的代码不能用r6编译。 当然,必须在某个地方存档。