【问题标题】:Android NDK mangles relative path on windowsAndroid NDK 破坏 Windows 上的相对路径
【发布时间】:2015-01-25 02:09:39
【问题描述】:

我正在尝试围绕 C 代码创建 Android Studio 包装器,但遇到了 NDK 的问题。因为 C 代码来自第 3 方项目,所以我试图不移动代码位置并将项目放在存储库的子目录中,因此不必使用内置调用 NDK 及其自动生成的 make 文件。 NDK 调用正常,但出现以下错误:

make.exe: *** No rule to make target `C:/some_relative_path/jni/../../../../core.c', needed by `C:/some_relative_path/obj/local/armeabi/objs/my_module/C_/some_relative_path/jni/__/__/__/__/core.o'.  Stop.

如您所见,对象路径已被破坏,: 和 .. 已变成下划线。

我必须在我的项目中添加一个 jni 文件夹并将 Android.mk 和 Application.mk 文件放入其中以满足 NDK Gradle 插件的路径附加。因此,jni 文件夹中没有源文件。由于我在 google 上找到了几个关于需要多个源文件的链接,因此我在 jni 目录中添加了两个虚拟源文件。

除其他外,我的Android.mk 文件包含以下内容:

LOCAL_SRC_FILES := \
$(LOCAL_PATH)/NDKBug1.c \
$(LOCAL_PATH)/NDKBug2.c \
$(LOCAL_PATH)/../../../../core.c \

我正在寻找是否有人可以直接帮助我解决此路径问题,或者建议另一种设置方式。

【问题讨论】:

  • 您是否尝试过浏览 NDK 中的示例?如果您这样做并观察 android.mk 中的表达式并查看使用的文件夹,它可能会更好地了解 NDK 的内部工作,因此您可以构建您的项目。 NDK 让你在 windows 上进入 cygwin。

标签: android android-studio android-ndk android-gradle-plugin


【解决方案1】:

LOCAL_SRC_FILES 中的文件名应该是相对于本地目录的,因此您需要删除 $(LOCAL_PATH)/ 前缀 - 然后它应该可以工作。

我还没有听说过需要在本地目录中有源文件的错误,所以我认为你可以摆脱它们。

【讨论】:

    猜你喜欢
    • 2013-08-19
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 2018-06-06
    • 2014-11-21
    • 2016-01-07
    • 2013-11-09
    相关资源
    最近更新 更多