【问题标题】:Latest NDK can't find module libz最新的 NDK 找不到模块 libz
【发布时间】:2019-11-07 19:52:23
【问题描述】:

我之前使用的是 NDK 13.1,但是在我将它更新到 16.1(似乎是最新的)之后,我的 Android 项目不能再libz

```

错误:(693) Android NDK:模块 pngt 依赖于未定义的模块:z

Error:(706) *** Android NDK: Aborting (set APP_ALLOW_MISSING_DEPS=true >allow missing dependencies)。停下来。

错误:配置项目 ':app' 时出现问题。

无法解析配置“:app:_debugApk”的所有依赖项。 配置项目 ':xxx' 时出现问题。 为 ndkBuild xxx/jni/Android.mk 执行外部原生构建 ```

我没有改变任何其他东西,而且我可以找到libz正确地留在我的android NDK目录中。

有什么建议吗?

【问题讨论】:

    标签: android android-ndk


    【解决方案1】:

    如果您遇到该错误,只需从您的 LOCAL_SHARED_LIRBARIES 中删除 libz。它以前没有被使用过。该警告是告诉您它被忽略了。

    【讨论】:

    • 没有Module pngt depends on undefined modules: z 显示我需要libz
    • 不,这表明您的 LOCAL_SHARED_LIBRARIES 中有 libz,并且它被忽略了。它一直被忽视。新版本的 NDK 只是告诉你。
    • 我不是很明白,但是我试过把这个依赖去掉,结果我编译无法完成,pngt其实需要它的一些方法。
    • 如果 pngt 与 png 有任何关系,我很确定它需要 libz,更糟糕的是,只需将 zlib 从 aosp (android.googlesource.com/platform/external/zlib.git/+/master) 克隆到您的源代码中名为 zlib 的目录中。然后在 pngt 之前作为一个模块添加到你的 Android.mk 文件中,例如我相信这就足够了hastebin.com/zudageyavi.swift
    • 如果我的回答和@Surge1223 的回答都没有帮助,那么我们三个人中至少有一个人没有正确理解您的构建。如果您可以分享您的 Android.mk 和您遇到的特定链接错误,这将更容易诊断。
    【解决方案2】:

    尝试将此添加到您的 Android.mk 中:

    LOCAL_LDLIBS := -lz

    如果这不起作用,请使用 LDFLAGS 指定 libz.so 的路径

    对我来说是前任。

    LOCAL_LDFLAGS := -L/opt/sdk/ndk-bundle/platforms/android-24/arch-arm64/usr/lib

    当然,这是假设您最初拥有以下内容,但现在失败了。

    LOCAL_SHARED_LIBRARIES := libz

    【讨论】:

      【解决方案3】:

      我遇到了完全相同的问题,我不知道这是否可以帮助您解决问题,但由于这个问题是我在搜索中解决这个问题的第一个问题,所以我决定为其他有做错了,就像我做的那样:

      我这样做给了我错误: find_library(zlib libz) # 错误的方式 这是错误的,我不得不像这样省略 libz 的 lib 部分:

      find_library(zlib z) # right way
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-10-12
        • 2015-07-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-12-15
        • 2014-11-15
        相关资源
        最近更新 更多