在我当前的项目中,我尝试使用用C
语言编写的简单文件,在从android studio安装NDK
、CMake
、LLDB
之后,我当前的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;
}
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