当前位置: 首页 > 知识库问答 >
问题:

Android用于使用NDK,我得到Android NDK:中止错误

庄经国
2023-03-14

在我当前的项目中,我尝试使用用C语言编写的简单文件,在从android studio安装NDKCMakeLLDB之后,我当前的NDK路径是:

ndk.dir=/Users/mahdi/Desktop/Home/Packages/AndroidSdk/ndk-bundle

而且

gradle.properties内容

android.useDeprecatedNdk=true

Build.Gradle:

defaultConfig {
    applicationId "ir.pishguy.myapp"
    minSdkVersion 17
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    multiDexEnabled true
    vectorDrawables.useSupportLibrary = true

    ndk{
        moduleName "web_service_encryption"
        ldLibs "log", "z", "m"
        abiFilters "armeabi", "armeabi-v7a", "x86"
    }
}

现在,当我尝试制作和安装应用程序时,我得到了这个错误:

错误:(115)***Android NDK:正在中止。停下来。错误:任务“:app:compiledebugndk”执行失败。ProcessException:使用参数执行进程/users/mahdi/desktop/home/packages/androidsdk/ndk-bundle/ndk-build时出错{ndk_project_path=null app_build_script=/users/mahdi/desktop/home/projects/android/myapp/app/build/intermediates/ndk/debug/android.mk app_platform=android-25

JNI文件夹中的C文件:

#include<string.h>
#include<jni.h>
#include<android/log.h>

//  LOGI("hello") ?? LOGI("money %d",15)
#define LOGI(...) ((void)__android_log_print(ANDROID_LOG_INFO, "native", __VA_ARGS__))
#define LOGW(...) ((void)__android_log_print(ANDROID_LOG_WARN, "native", __VA_ARGS__))

const char key[] = "~yfj(e^m1)o@2pc!"; //16???
int len = 0;


unsigned char getByteNumber(unsigned char first, unsigned char end) {
    int firstPosition = 0, endPosition = 0;
    int position = 0;
    for (; position < 16; position++) {
        if (key[position] == first) {
            firstPosition = position;
        }
        if (key[position] == end) {
            endPosition = position;
        }
    }
    return (firstPosition << 4) | (endPosition);
}


void encrypt(unsigned char p[], unsigned char res[]) {
    int i = 0;
    for (; i < len; i++) {
        res[2 * i] = key[p[i] / 16];
        res[2 * i + 1] = key[p[i] % 16];
    }
}


void decrypt(unsigned char p[], char res[]) {
    int i;
    for (i = 0; i < len; i++) {
        res[i] = getByteNumber(p[i * 2], p[i * 2 + 1]);
    }
}

jstring Java_ir_pishguy_myapp_EncryptUtil_encrypt(JNIEnv *env, jclass this,
        jbyteArray src) {
    unsigned char *buff = (char*) (*env)->GetByteArrayElements(env, src, NULL);
    len = (*env)->GetArrayLength(env, src);
    unsigned char res[len * 2];
    encrypt(buff, res);
    res[len * 2] = '\0';
    (*env)->ReleaseByteArrayElements(env, src, buff, 0);
    jstring resStr = (*env)->NewStringUTF(env, res);
    return resStr;
}

jstring Java_ir_pishguy_myapp_EncryptUtil_decrypt(JNIEnv *env, jclass this,
        jbyteArray src) {
    unsigned char *buff = (char*) (*env)->GetByteArrayElements(env, src, NULL);
    len = (*env)->GetArrayLength(env, src);
    len = len / 2;
    signed char res[len];
    decrypt(buff, res);
    res[len] = '\0';
    (*env)->ReleaseByteArrayElements(env, src, buff, 0);
    jstring resStr = (*env)->NewStringUTF(env, res);
    return resStr;
}

共有1个答案

凌博实
2023-03-14

App_Platform=Android-25

看起来usedeprecatedndk路径是错误的。25是您的targetsdkversion,而不是您的minsdkversion(NDK目标需要与您的最小目标匹配)。从不推荐的东西切换到使用externalnativebuild

您所看到的构建问题是因为NDK中没有android-25这样的东西(我们只有那些实际上有新的原生API以节省大小的平台)。

 类似资料:
  • null 但是,当我使用ndk-build运行Android.mk时,会出现以下错误: 这是Android.mk的内容: 我在建图书馆,有什么帮助吗? 向jni添加application.mk文件 APP_ABI:=armeabi APP_PLATFORM:=android-9 将Android.mk文件添加到jni(更改LOCAL_SRC_FILES和LOCAL_MODULE值) 将此代码添加到

  • 我正在尝试使用随ndk提供的ndk-stack命令。 不幸的是,当我运行它时,脚本崩溃了。 我在windows上运行的命令是... ndk-stack . cmd-sym build/intermediates/cmake/debug/obj/armea bi-v7a-dump stack . txt stack.txt文件包含来自logcat的逻辑删除。 我收到的错误是.... 回溯(最后一次调

  • 我想用jQuery DataTable进行多列筛选,但我得到一个错误,不知道如何解决。 错误:$(...)DataTable不是函数类型错误:$(...)。DataTable不是函数未捕获的类型错误:无法读取未定义的属性“column” 你能帮我解决这个错误吗? 我的HTML代码,

  • 问题内容: 每当我尝试打开文件时, 问题答案: 这个错误很简单, EISDIR 表示该操作的目标实际上是目录,但目标的预期文件类型是目录以外的 其他 文件。

  • 我用的是reactjs。我正在使用material表获取可编辑表中的数据。但是我得到了一个像图片一样的错误,我怎样才能修复这个错误呢? 我使用useState进行表格的编辑设置。你能帮我纠正一下错误吗? 我在接收数据时没有收到任何错误。我只是在表格上使用活动/非活动编辑。但是 为行提供错误。 下面是错误截图和我的源代码

  • 我在visual Studio2017中使用android NDK13B,我得到了android NDK15C的更新,其中增加了一个错误。我也在使用新的Clang5.0(之前是3.8)。这是错误: /usr/local/google/buildbot/src/android/ndk-r15-release/ndk/sources/android/support/src/stdio/vfprintf