Android本机库中的奇怪错误

Android本机库中的奇怪错误,android,android-ndk,Android,Android Ndk,Android

Android<4.3上的执行版本本机代码似乎存在错误

如何复制:在Android NDK
samples/hello jni
中获取样本,并将
hello jni.c
中的代码替换为以下内容:

#include <string.h>
#include <jni.h>
#include <time.h>

static double g_now;

jstring
Java_com_example_hellojni_HelloJni_stringFromJNI( JNIEnv* env,
                                                  jobject thiz )
{
    struct timespec ts;
    ts.tv_sec = (unsigned int)3;
    ts.tv_nsec = 0;
    nanosleep(&ts, NULL);

    double now = 12839123.0;
    g_now = now;

    while (1) {
        struct timespec ts;
        ts.tv_sec = (unsigned int)0;
        ts.tv_nsec = 20000000;
        nanosleep(&ts, NULL);

        if (now != g_now)
            return (*env)->NewStringUTF(env, "Shit happened");
    }
return (*env)->NewStringUTF(env, "Hello from JNI");
并在释放中

cd jni
ndk-build NDK_DEBUG=0
cd ../
ant debug && adb install -r bin/HelloJni-debug.apk
我在Nexus5(Android4.4.4)上测试了它——在运行无限循环时,发布版和调试版都显示为黑屏

但在三星SII(安卓4.1.2)发布版上,突然出现了“狗屎发生”的字串。这意味着变量没有被修改就被更改了。这反过来意味着CPU上的一些寄存器被覆盖

是否有任何解决方法,或者是否存在已知的错误

我的运行配置:SDK 23.0.2(构建工具20)和ndk-r10-64,Mac OS 10.9.4


UPD1:看起来三星安卓4.1版左右的设备属于风险群体

你试过了吗?我找不到任何类似我的问题。显然,这个错误在安卓4.4+中已经修复。
cd jni
ndk-build NDK_DEBUG=0
cd ../
ant debug && adb install -r bin/HelloJni-debug.apk