良心解析 | Android Studio 2.3.3 to 3.3 填坑之路(Update坑 + AVD坑 + NDK坑)
前言
去年差不多也是這個時候,補了 TensorFlow的坑 ,今年補AS的,莫名倒是有點喜感。
話說前頭,這裡強調一下, 本文所有下載載入過程都是沒有使用VPN的,也就是說不用科學上網,但!!!需要優質的網路,優質的網路!! 就是,昨天之前的話本文這些坑筆者怕是要費好大力氣才搞的定,因為昨天在學校,要麼用校園網——絕對填不了這些坑,點選AS的help選單裡面的check for updates以及SDK Manager的安裝檢測都被和諧掉了;要麼用流量或者,找一個不是校園網的網路。。。在學校這顯然也挺折騰的
廢話不多說,解釋一下標題,好多坑對吧,其實本文所有坑的 起因 ,就是我寒假要開始瞭解NDK開發了,NDK開發之前我們需要搭一個環境,
在搭環境的時候,需要更新各種SDK各種tools,於是便到SDK Manager那邊更新了一波tools,更新完之後,便開始出現各種錯誤了,
首先, No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel64el-linux-android ,這個先放下,文末詳細說;
然後 Waiting for target device to come online ,解決之後模擬器變成了 初代Android機 ?很騷;
到這裡SDK最新了,其他又沒有報錯,我暫時是沒轍了,只能走最後一條路, 更新 AS,2.3.3 到 3.3,也就是本文的大boss了 ,接著又遇到很多bug,逐一解決之後,模擬器的問題還是依舊,最後果斷刪掉重新create一個模擬器解決了這個問題。
總的來說,本文解決了三個方面的坑:
- Update坑:Android Studio 2.3.3 更新到 3.3 的普適坑;
- AVD坑:模擬器莫名程式設計初代Android機,這裡記錄了我的解決方法;
- NDK坑:No toolchains found in the NDK toolchains。。。
本文參考文章彙總
- "Waiting for target device to come online"
- Android studio2.3.3 to 3.0.1版本線上更新教程
- Android Studio 3.0 踩坑記錄
- No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel64el-linux-android
正文
1. "Waiting for target device to come online"

主要原因是Build-Tools或者SDK Platform-Tools或SDK Tools 有更新,造成版本不一致。下載並安裝新版(Status欄下面帶Update的都給更新一波):

更新完畢,執行;然後。。原來好端端的模擬器變成這樣子。。很騷吧。。

至此無可奈何背水一戰了,參考 這篇文章 ,把 AS 2.3.3更新到最新版本(文章是3.0.1,現如今最新版本已是3.3了);
更新好了之後,開啟一箇舊專案。。。

根據提示解決諸多問題之後(各種replaced),
執行起來虛擬機器還是這樣子。。。

好在更新之後 AS 3.3友好了很多,給出了提示:

覺得SDK Tools沒問題啊,都已經更新到最新版本了;SDK Tools是沒問題,可你忘了SDK Platforms(原來用的模擬器是 API 24的):

行吧那更新一波:

發現還是沒用,果斷地放下API 24了,建立新專案的時候AS已經提醒85%的裝置已經被API 25覆蓋,所以,乾脆換個模擬器得了。。
進入AVD Manager(截圖中API 24 的那個模擬器已經看不到了,因為被筆者刪了...):

Download一下新的API:

然後Next,Finish即可:

最後成功執行HelloWorld:

2. 額咳,回到剛剛的舊專案,編譯時各種報錯:

發現它完全不買賬對吧,AS2.3.3的產物根本就不想理你個AS3.3的IDE,app的build.gradle檔案都跟剛剛成功執行的Helloworld專案一模一樣,可複製到了舊專案就是不行;
當然“不行”肯定是要帶個雙引號的咯,筆者翻了翻簡書,還是有先行者將這個問題解決了,方法很簡單, Add Google Maven repository and sync project
嘛,就是在 根目錄(注意是根目錄,IDE的報錯都把你引到app目錄下了)對應的build.gradle中 加入 google()
和 mavenCentral()
即可: (參考文章 Android Studio 3.0 踩坑記錄 )

allprojects { repositories { jcenter() google() mavenCentral() } }
行了,到此便完美解決,執行一下:

3. No toolchains found in the NDK toolchains folder for ABI with prefix: mipsel64el-linux-android
這篇文章的參考價值是它給了我NDK的下載地址,然而它的解決方法並不太適合筆者的情況。文中說明這情況報錯的原因是NDK包缺失。參考這篇文章, 到 官網 上下載對應的包,切取缺失的檔案到本地ndk目錄即可。這裡官網是需要 科學上網的 ,所以其實 它適合的情況是你AS原來的NDK包是你自己去網上找來下載的,由此缺失時,可以用這種方法。但其實我們到SDK Manager這裡,只要網路質量好一些,是可以直接下載的,不用科學上網;
所以筆者是因為什麼情況報這個錯呢?筆者不是因為包的缺失,我們看報錯裡面的關鍵詞—— No toolchains ,再看一下官網對於NDK 19的描述—— “不需要獨立的工具鏈”,“Clang會自動找到它們” ,看到這裡其實可以說是水落石出了,究其原因,應該就是 “不需要獨立的工具鏈”,“Clang會自動找到它們” 這個新特性對於AS2.3.3來說,沒能Hold住,因此報錯, No toolchains ,其實人家r19都不需要 toolchains ,自然就 No toolchains 唄,只是AS2.3.3沒有Hold住Clang而已。
所以如果你的NDK是報這個錯,只要升級一下AS到最新版(如筆者AS3.3),便解決了。
