Android Studio 中某些 C++ 代码的 NDK 构建错误

问题描述 投票:0回答:3

我是 NDK 的新手,所以在构建以下项目时出现错误:

Error:Execution failed for task ':app:transformNativeLibsWithStripDebugSymbolForDebug'.
java.io.IOException: Failed to delete E:\startUpCode\OpenCvDemo\NDKTest\app\build\intermediates\transforms\stripDebugSymbol\debug\folders\2000\1f\main\lib\mips

这是我的 C++ 代码:

#include <com_nickworld_ndktest_NativeClass.h>

JNIEXPORT jstring JNICALL Java_com_nickworld_ndktest_NativeClass_getMessageFromJNI
    (JNIEnv *env, jclass obj){
return env->NewStringUTF("This is the message from JNI");

文件android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_SRC_FILES := com_nickworld_ndktest_NativeClass.cpp

LOCAL_LDLIBS += -llog
LOCAL_MODULE := MyLib


include $(BUILD_SHARED_LIBRARY)

文件Application.mk

APP_STL := gnustl_static
APP_CPPFLAGS := -frtti -fexceptions
APP_ABI := armeabi-v7a
APP_PLATFORM := android-16

文件MainActivity.java

public class MainActivity extends AppCompatActivity {

    static {
        System.loadLibrary("MyLibs");
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        ((TextView) findViewById(R.id.txtView)).setText(NativeClass.getMessageFromJNI());
    }
}

我该如何解决这个错误?我哪里做错了?

android android-ndk
3个回答
4
投票

尝试手动删除

E:\startUpCode\OpenCvDemo\NDKTest\app\build\intermediates
。然后再次尝试构建。


1
投票

我已经遇到过这个问题,您的代码没有任何问题,所以请检查以下几点:

  1. 转到您的项目并检查它是否创建了 jnilibs 或您在 Gradle 中为其命名的任何名称NDK_LIBS_OUT

  2. 检查应用程序 Gradle 文件中的 task ndkBuild 及其位置

  3. 清理你的项目并重新构建它,如果它还没有创建它


0
投票

我在我的项目中也遇到了关于 NDK 的相同问题,因为我导入了下载的项目。

卡了一个星期才解决问题。然后我创建了一个新项目并将库和所有文件添加到这个新项目并构建项目。

我成功地构建了我的项目。

© www.soinside.com 2019 - 2024. All rights reserved.