簡體   English   中英

在最新的 NDK 更新和 gcc 棄用后無法構建 Android NDK 項目

[英]Canot build Android NDK project after latest NDK update and gcc deprecation

我已將 Android NDK 更新到可用的最新版本,現在我的項目不再編譯。 在第一次嘗試編譯項目時,我收到了一條關於gcc棄用的消息,並邀請我用clang替換它。

所以我試圖編輯

externalNativeBuild {
                cmake {
                    arguments '-DANDROID_TOOLCHAIN=gcc', '-DANDROID_STL=gnustl_static'
                }
            }

externalNativeBuild {
                cmake {
                    arguments '-DANDROID_TOOLCHAIN=clang', '-DANDROID_STL=gnustl_static'
                }
            }

但不幸的是,現在我收到錯誤:

Error while executing process C:\Android\android-sdk\cmake\3.6.4111459\bin\cmake.exe with arguments {-HD:\My Project\myApp\jni -BD:\My Project\myApp\.externalNativeBuild\cmake\release\armeabi-v7a -DANDROID_ABI=armeabi-v7a -DANDROID_PLATFORM=android-21 -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=D:\My Project\myApp\gradleBuild\intermediates\cmake\release\obj\armeabi-v7a -DCMAKE_BUILD_TYPE=Release -DANDROID_NDK=C:\Android\android-sdk\ndk-bundle -DCMAKE_TOOLCHAIN_FILE=C:\Android\android-sdk\ndk-bundle\build\cmake\android.toolchain.cmake -DCMAKE_MAKE_PROGRAM=C:\Android\android-sdk\cmake\3.6.4111459\bin\ninja.exe -GAndroid Gradle - Ninja -DANDROID_TOOLCHAIN=clang -DANDROID_STL=gnustl_static}

NDK 更新之前的項目編譯工作正常。

  1. 當源路徑包含空格時,不要嘗試構建 NDK。
  2. 最新的 NDK 也棄用了 gnustl。 嘗試使用 c++_shared 代替。
  3. 您不需要在arguments 中指定 ANDROID_TOOLCHAIN 。
  4. 確保您使用與最新 NDK 兼容的 gradle Android 插件版本,請參閱https://developer.android.com/studio/releases/gradle-plugin

此運行時與 NDK 不再支持的 GCC 緊密耦合。 因此,它尚未收到多個版本的更新。 NDK 中的版本支持大部分 C++11(參見第 82 期),並且該庫的某些部分與 Clang 不兼容。

咕嚕咕嚕

此庫已棄用,並將在 NDK r18 中刪除。 從 NDK r16 開始,您應該改用 libc++。

你應該使用"-DANDROID_STL=c++_static"而不是-DANDROID_STL=gnustl_static

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM