
問題發現時間:2018年12月11日上午. 當準備執行React Native專案的android版本時, 報出一個錯誤. Could not find any matches for com.android.tools.build:gradle:2.2.+ as no versions of com.android.tools.build:gradle are available.
完整錯誤資訊如下:
Could not find any matches for com.android.tools.build:gradle:2.2.+
as no versions of com.android.tools.build:gradle are available.
Searched in the following locations:
https://jcenter.bintray.com/com/android/tools/build/gradle/maven-metadata.xml
https://jcenter.bintray.com/com/android/tools/build/gradle/
Required by: project: react-native-image-picker
複製程式碼

此時需要儘快更新線上版本, 於是就開始尋找問題所在. 因為開發人員比較多, 所以最開始的時候懷疑是因為某個開發人員不小心升級了某個東西不相容導致的. 於是開始檢查 git 程式碼日誌. 看了一下果然是有人提交了東西, 但是貌似和專案沒有太大關係.

於是只能換一個方向繼續尋找答案.

突然一想, 這個問題既然出現在 react-native-image-picker 包中, 應該在 github 上就有相關的問題說明吧, 試試看咯.

classpath 'com.android.tools.build:gradle:2.2.+'
複製程式碼
改成
classpath 'com.android.tools.build:gradle:2.2.3'
複製程式碼
然後試了一下, 發現, 對, 是可以, 但是, 我特麼要跟其他人解釋我為什麼要改這個裡面的玩意, 而且特麼的萬一有人不聽, 或者看不到, 到時候還要找我怎麼辦. 而且, 每次更新程式碼, 刪除了 node_modules 或者來了新人我是不是還要再說一遍? 不行, 這麼蠢的事情絕對不能做.


目前最新的解決方案如下, 在專案的 android 目錄下的 build.gradle 中, 文末新增如下程式碼
subprojects { project ->
def name = project.name
if (name.contains('react-native-image-picker')) {
buildscript {
repositories {
maven { url "https://dl.bintray.com/android/android-tools/" }
}
}
}
}
複製程式碼
這個解決方案解決了團隊開發中, 其他人需要修改檔案的弊端, 目前也能完美的解決這個問題. 當然了, 目前我遇到的問題出現在 react-native-image-picker 包中, 其他人的專案可能就在別的包中, 相類似的修改判斷或者新增更多的判斷都可以.

為了寫這篇文章, 我錯過了雙 12 的 22:00 搶購, 1 元秒殺辣醬的機會.....心痛啊.

為了安慰我, 點個贊再走唄.

個人部落格地址: React Native Android 啟動異常