一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

推出Android原生開發(fā)工具包r16

 alayavijnana 2017-09-23


文 / Google Android NDK 技術(shù)負(fù)責(zé)人 Dan Albert

最新版本的 Android 原生開發(fā)工具包 (NDK) Android NDK r16 Beta 1 現(xiàn)在可以下載了:

https://developer.android.google.cn/ndk/downloads/index.html


也可以通過 Android Studio 在 SDK 管理器中獲取此版本。

NDK r16 對(duì)我們來說是一個(gè)重大的里程碑,因?yàn)樗俏覀儨?zhǔn)備建議用戶開始遷移到 libc++ 的第一個(gè)版本!我們會(huì)在后面提供更多信息。

我們還更新了 libc++ 及其相關(guān)項(xiàng)目,因此,這個(gè)版本提升了對(duì) C++1z 的支持。請(qǐng)注意,在 C++1z 成為 C++17 之前,包含的任何內(nèi)容都有可能發(fā)生變化。

您可以在此處查看該版本的版本說明:

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 現(xiàn)在是一個(gè)比較小的庫(kù),您的應(yīng)用的行為應(yīng)當(dāng)更接近系統(tǒng)的行為。例如,libandroid_support 之前包含對(duì)部分 stdio 的替代實(shí)現(xiàn)。盡管一些功能向后移植到 ICS,不過,這也意味著替代實(shí)現(xiàn)中的任何錯(cuò)誤都會(huì)出現(xiàn)在自從您的應(yīng)用引入錯(cuò)誤以來發(fā)布的 所有 OS 版本中。


在新版本的 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 中當(dāng)前可用的其他 STL 相比,libc++ 完全支持 C++11、C++14 和大多數(shù)的 C++1z!Stlport 自從 2008 年以來就沒有更新過了,gnustl(我們對(duì) GNU 的 libstdc++ 的叫法,這是為了避免與 Bionic 的 libstdc++ 混淆,后者不是一種 STL)一直以來都不是很適合 Clang,尤其是在與 和 之類的編譯器內(nèi)建函數(shù)緊密關(guān)聯(lián)的標(biāo)頭中,更是如此。

我們很有可能讓 libc++ 成為下一個(gè) NDK 版本的默認(rèn)選擇,但是現(xiàn)在,如果您還沒用過,可以按照下面的說明操作,選擇啟用這種庫(kù)。

像其他 STL 一樣,libc++ 同時(shí)提供靜態(tài)庫(kù)和共享庫(kù)。使用哪一個(gè)取決于您的具體情況,但是如果您的應(yīng)用中有且僅有一個(gè)共享庫(kù),tl;dr 將使用靜態(tài)版本,并在所有其他情況下使用共享版本。


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ú)立工具鏈
在創(chuàng)建獨(dú)立工具鏈時(shí),請(qǐng)傳遞 --stl=libc++。



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ò)展。

如果我們誤解了您的回應(yīng),或者您還沒有回應(yīng)我們,并且希望我們擴(kuò)展,請(qǐng)告訴我們:

https://github.com/android-ndk/ndk/issues/456



_FILE_OFFSET_BITS=64

tl;dr:如果您想要保留舊 NDK 中的行為,請(qǐng)不要設(shè)置 _FILE_OFFSET_BITS=64。

在 NDK 中設(shè)置 _FILE_OFFSET_BITS=64 一直都沒什么用。此功能在棄用的標(biāo)頭中已經(jīng)移除。對(duì)于統(tǒng)一標(biāo)頭,NDK 現(xiàn)在具有支持此功能的最新標(biāo)頭。

您可以在您的應(yīng)用中定義 _FILE_OFFSET_BITS=64 宏,以便在 32 位代碼中獲取對(duì) 64 位 off_t 的支持。將 off_t 設(shè)為 64 位(默認(rèn)情況下,它在 32 位代碼中為 32 位)和使用 lseek64 調(diào)用隱式替換對(duì) lseek 之類 API 的調(diào)用可以實(shí)現(xiàn)這種支持。

之前版本的 Android 沒有添加對(duì) _FILE_OFFSET_BITS=64 的支持。lseek64 這個(gè) API 一直在 bionic 中。大多數(shù) API 在 Lollipop 中添加,其他的一些 API 則到后期版本才添加。

如果您針對(duì)的版本不支持正在使用的某個(gè)函數(shù)的 64 位 off_t 變體,并且已設(shè)置 _FILE_OFFSET_BITS=64,該函數(shù)將不可用。這與 r15 和 r15b 的行為不同(但與 r15c 的行為一致),在這兩個(gè)版本中,函數(shù)使用 32 位 off_t 錯(cuò)誤公開,將被靜默截?cái)唷?br>
請(qǐng)注意,即使沒有不同名稱的 _FILE_OFFSET_BITS=64,64 位 off_t API 仍然可用。例如,請(qǐng)調(diào)用 lseek64,而不是 lseek。使用 off64_t,而不是 off_t。

最后,由于此功能對(duì)具有統(tǒng)一標(biāo)頭的 NDK 來說是一項(xiàng)新功能,如果您只想返回到統(tǒng)一前的標(biāo)頭行為,您要做的只是停止設(shè)置 _FILE_OFFSET_BITS=64。

如需了解有關(guān) bionic 中 off_t ABI 詳細(xì)信息的更多信息,請(qǐng)參閱 Bionic 32 位 ABI 錯(cuò)誤文檔:

https://android./platform/bionic/+/master/docs/32-bit-abi.md


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多

    高清亚洲精品中文字幕乱码| 熟女白浆精品一区二区| 亚洲国产成人一区二区在线观看 | 日本熟妇五十一区二区三区| 午夜福利视频偷拍91| 在线观看免费无遮挡大尺度视频| 少妇肥臀一区二区三区| 国产精品一区二区传媒蜜臀| 97精品人妻一区二区三区麻豆| 人妻亚洲一区二区三区| 欧美日韩国产精品自在自线| 欧美成人国产精品高清| 亚洲淫片一区二区三区| 欧美野外在线刺激在线观看| 日韩欧美三级视频在线| 国产免费无遮挡精品视频 | 国产专区亚洲专区久久| 老司机精品视频免费入口| 久久精品欧美一区二区三不卡| 欧美一级黄片欧美精品| 精品亚洲一区二区三区w竹菊| 免费大片黄在线观看国语| 中文字幕一区久久综合| 国产精品十八禁亚洲黄污免费观看 | 欧美精品一区二区水蜜桃| 青青久久亚洲婷婷中文网| 国产精品免费精品一区二区| 高清国产日韩欧美熟女| 亚洲欧美日本国产有色| 麻豆精品视频一二三区| 加勒比人妻精品一区二区| 欧美性猛交内射老熟妇| 欧美小黄片在线一级观看| 久久人妻人人澡人人妻| 一级片二级片欧美日韩| 午夜视频成人在线观看| 中文字日产幕码三区国产| 91亚洲熟女少妇在线观看| 日本道播放一区二区三区| 亚洲一二三四区免费视频| 日本不卡在线视频中文国产|