Articles of android ndk

Android上的本地自修改代码

我正在尝试在Android上进行一些自我修改的本地代码,并在模拟器中运行它。 我的示例是基于android-ndk的HelloJNI示例。 它看起来像这样: #define NOPE_LENGTH 4 typedef void (*FUNC) (void); // 00000be4 <nope>: // be4: 46c0 nop (mov r8, r8) // be6: 4770 bx lr void nope(void) { __asm__ __volatile__ ("nop"); } void execute(void){ void *code = mmap(NULL, NOPE_LENGTH, PROT_WRITE | PROT_EXEC, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0); if (code != MAP_FAILED) { memcpy(code, nope, NOPE_LENGTH); […]

Android中最重要的POSIXfunction是什么?

我即将把一个大的C ++项目(某种库项目,它绝对不包含GUI)移植到Android上。 它实际上是一个Visual C ++项目,但它将作为中间步骤移植到Linux。 我知道Android不是一个“完整的”Linux,并不是说要提供所有的POSIXfunction,但是我也知道使用NDK在Android上有很多“POSIXishfunction”。 现在我的实际问题是: 与完整的POSIX集相比,Android上最大/最重要的function是哪些? 所以在从Visual C ++移植到Linux GCC时,我可以牢记这一点。 我试图findGoogle上的东西,但没有发现真正有用的东西,只是在这里和那里有一些东西,提到有Android上的一些POSIXfunction…

如何使用su命令通过adb shell?

我需要做一个脚本,在Android设备上执行很多东西,我的设备是扎根的,当我进入shell,我可以给su命令,它的工作原理,但我需要通过这个命令,如: adb shell " su; mv /sdcard/Download/app_test /data/local; cd /data/local; ./app_test; exit; exit; " 当我在su之前写了一些命令的时候,根据我读的su创build了一个立即返回的新shell,但是我需要在su shell上发出命令,我该怎么做?

使用Android NDK编译libpcap

我一直在做很多尝试,以获得Android的libpcap编译,我没有看到任何模式或任何值得写下来的进展。 我有一个非常简单的嗅探器(在MIPS linux中工作正常),使用libpcap,所以我想我自己哦,好的…没有biggie …我只是编译Android的libpcap(到最后,Android是只是一个Linux)…这里是问题开始的地方。 我不知道如何使用ndk-build和Android.mk以及所有的基础结构来编译libpcap。 我有一个目录中的Android NDK。 NDK有工具链(我在~/Documents/Projects/Android_NDK/toolchains/下有很多目录),但是没有一个工具链可以使用libpcap 。 我已经尝试了两个不同的libpcap版本或…分支机构: Android的一个,这是我想要使用的, https://android.googlesource.com/platform/external/libpcap/ 和常规的: http : //www.tcpdump.org/release/libpcap-1.5.3.tar.gz 我所做的所有尝试都是非常不成功的。 我已经看到了Android NDK的问题:链接使用预编译的静态库是相似的,但我仍然收到各种错误。 我已经将这些pcap库下载到他们自己的目录中。 也许是这个问题? 我是否需要将Android libpcap放在NDK根目录下的某个目录中并重新创build工具链? 我在MacOSX 10.9.2 64bit上使用NDK-r9。

如何在Android shell中复制和编辑文件?

Androidshell没有cp命令。 Androidshell也没有sed或grep或vi 。 我没有可用的adb守护进程。 有mv命令,但如果源位于只读设备上,则拒绝工作。 如果我必须recursion地从只读设备复制一些目录,该怎么办? 如何更改文本文件中的一行(例如“PATH = / cache”为“PATH = / mnt / asec”)?

如何展开堆栈以获取指定堆栈指针(SP)的回溯?

我正在为Android编写(仅限ARM),但我相信通用Linux的原理也是一样的。 我试图从信号处理程序捕获堆栈跟踪,以便我的应用程序崩溃时可以logging它。 这就是我使用<unwind.h> 。 初始化: struct sigaction signalhandlerDescriptor; memset(&signalhandlerDescriptor, 0, sizeof(signalhandlerDescriptor)); signalhandlerDescriptor.sa_flags = SA_SIGINFO; signalhandlerDescriptor._u._sa_sigaction = signalHandler; sigaction(SIGSEGV, &signalhandlerDescriptor, 0); 代码本身: struct BacktraceState { void** current; void** end; void* pc; }; inline _Unwind_Reason_Code unwindCallback(struct _Unwind_Context* context, void* arg) { BacktraceState* state = static_cast<BacktraceState*>(arg); state->pc = (void*)_Unwind_GetIP(context); if (state->pc) { if (state->current == state->end) return _URC_END_OF_STACK; […]

定位独立可执行文件和Android棒棒糖

我写了一个.c源代码(在ecllipse中),它使用libcap库来获取有关networkingstream量的信息。 现在我已经通过在ecllipse中使用ndk-build创build了一个可执行的二进制文件。 我把libs / armeabi文件夹中创build的二进制文件推送到了我的android(rooted nexus 5,Lollypop)的/ data / local /文件夹,并试图执行二进制文件。 但android会抛出这个错误 错误:仅支持与位置无关的可执行文件(PIE) 我不知道PIE,请告诉我如何创build一个位置独立的可执行文件。

如何用cygwin和android ndk r9c在windows上编译ffmpeg-2.2.2

有人成功编译 在Windows与cygwin和Android ndkr9c的ffmpeg-2.2.2? 或者可以点我一个最新的教程? ( http://www.roman10.net/how-to-build-ffmpeg-with-ndk-r9/不为我工作我得到的Makefile:2:config.mak:没有这样的文件… cygwinpipe理员devel GNOME是完全安装并使-v可以) 我需要将video转换为图像(对于实时壁纸)…你知道一个更好的方法或ffmpeg最好的吗? 谢谢

Ndk-build:CreateProcess:make(e = 87):参数不正确

在Windows平台上使用NDK构build静态库时出现错误: process_begin: CreateProcess( "PATH"\android-ndk-r8b\toolchains\arm-linux-androideabi-4.6\prebuilt\windows\bin\arm-linux-androideabi-ar.exe, "some other commands" ) failed. make (e=87): The parameter is incorrect. make: *** [obj/local/armeabi-v7a/staticlib.a] Error 87 make: *** Waiting for unfinished jobs…. 所有源文件都可以成功构build,并且在编写目标文件时发生此错误。 在Ubuntu中构build这个项目时,我不会得到这个错误,它只发生在Windows上。 我想我发现了这个问题 : CreateProcess Win API函数的第二个参数lpCommandLine最大长度为32,768个字符。 但在我的情况下,它是超过32,768个字符。 我如何解决这个问题?

在Windows中Tesseract OCR Android

我已阅读所有关于它的问题论坛和博客,但我仍然有一个问题。 首先,我把tess-two作为一个图书馆,我的项目也使用tess-two作为一个图书馆。 我下载了Android-NDK,并从我的项目属性中单击了构build器,然后新build – >程序,然后selectndk的ndk-build文件。 顺便说一下,我的项目是Gautam Gupta的项目。 他给了项目。 链接: https : //github.com/GautamGupta/Simple-Android-OCR 。 当我在手机中运行该项目,应用程序启动并捕获照片,但是当我按下保存然后应用程序给出下面的错误。 http://img.zgserver.com/android&usg=ALkJrhiyVHNyOx5UHzilFjaENe0g_PsdZA/qg0rl.png