文 / Google Android NDK 技術(shù)負(fù)責(zé)人 Dan Albert https://developer.android.google.cn/ndk/downloads/index.html 也可以通過 Android Studio 在 SDK 管理器中獲取此版本。 https://android./platform/ndk/+/ndk-release-r16/CHANGELOG.md libc++ 和 libandroid_support NDK 有一個(gè)名為 libandroid_support 的庫(kù),這個(gè)庫(kù)可以向后移植 libc++ 依賴、但舊版本不支持的 libc API。我們至今無法認(rèn)可 libc++(在 NDK 中實(shí)現(xiàn))的原因仍然是對(duì)這個(gè)庫(kù)缺乏信心。r16 的焦點(diǎn)是重新編寫了這個(gè)庫(kù),以獲得更高的穩(wěn)定性。 在新版本的 libandroid_support 中,我們已將替代實(shí)現(xiàn)移除,因此您在較舊的設(shè)備上將無法使用某些功能(幾乎是一些沒人使用的功能,例如格式字符串中的 %a 支持),不過由于沒有這些功能,您使用 libc++ 的應(yīng)用將變得更小、更可靠。 轉(zhuǎn)到 libc++ 所以,為什么您應(yīng)轉(zhuǎn)到 libc++ 呢?首先,其他 STL 今后將不再受支持。我們一直將 libc++ 用于自 Lollipop 以來的 Android 平臺(tái),有一項(xiàng)變化讓我們的工程師感到非常興奮。我們?cè)谄脚_(tái)中比在 NDK 中更早地完成了這種過渡,因?yàn)槲覀儾恍枰?libandroid_support,并且可以僅更新 libc。 ndk-build 將以下內(nèi)容添加至您的 Application.mk 文件中: APP_STL := c++_shared CMake 調(diào)用 CMake 時(shí)請(qǐng)粘貼以下內(nèi)容: -DANDROID_STL=c++_shared 如果您正在通過 Gradle 使用 CMake,請(qǐng)將以下內(nèi)容添加至您的 build.gradle 中: externalNativeBuild { cmake { arguments '-DANDROID_STL=c++_shared' }} 獨(dú)立工具鏈 libandroid_support 的未來 如果您已經(jīng)閱讀我們的路線圖: https://android./platform/ndk/+/master/docs/Roadmap.md 想必了解我們計(jì)劃擴(kuò)展 libandroid_support 以向后移植盡可能多的 libc/libm。每次跟大家說到這個(gè)問題,我們最多只是收到冷淡的回應(yīng)??紤]到大家看起來不感興趣,而且這樣做也會(huì)讓庫(kù)增大(進(jìn)而導(dǎo)致 APK 增大,這是每個(gè)人都非常感興趣的話題),我們不再打算擴(kuò)展。 https://github.com/android-ndk/ndk/issues/456 _FILE_OFFSET_BITS=64 tl;dr:如果您想要保留舊 NDK 中的行為,請(qǐng)不要設(shè)置 _FILE_OFFSET_BITS=64。 https://android./platform/bionic/+/master/docs/32-bit-abi.md |
|