在rn開發中,若是遇到了比較特殊的功能,若是沒有現成的輪子的話,一般咱們須要去連接原生庫,而且封裝成RN組件提供給js調用,做爲前端開發者,一般咱們對原生端的報錯處理不太懂,在處理和原生功能相關問題時,推薦直接使用android-studio進行開發(項目名->android->app->build.gradle),它能夠輔助咱們方便的下載第三方庫,而且閃退等問題咱們能夠在log中查看的很清晰.javascript
下面列出了咱們在連接原生庫中經常遇到的一些問題前端
1.java
這個錯誤經常出如今第一次封裝高版本react-native的library或者引用老版本的庫的時候容易出現,緣由是 node
在安卓中 @Override是複寫父類的方法,而它的父類沒有這個方法,因此不能複寫。由於你報錯的這個方法在老版本的RN中是存在的,估計這個三方是之前用的老版本,新版本沒有這個方法了,註釋掉就能夠了。react
若是你喜歡手動link第三方庫(非react-native link),那麼這個問題你可能會遇到,緣由很簡單,引入庫的時候,須要在setting.gradle裏面指明庫的位置,直接編譯是找不到的 以下圖android
這個步驟通常引入庫都會有說明implementation(name: '×××××××aar包', ext: 'aar') {
exclude module: 'gson'
}
複製代碼
可是在咱們項目中嘗試多種方式過濾不掉, 這時候咱們採用第二種方案, 咱們將aar解壓,拷貝里面的java文件出來, 而且採用provided的方式引入alipay,這樣咱們在編譯的時候使用最新的alipay 編譯,可是它最終是不會打包到咱們的項目裏,咱們項目裏面仍是使用的之前的alipay,後續如果咱們想用aar中的alipay,咱們就能夠直接將provided改爲compiledwindows
compile "com.facebook.react:react-native:+"
compile files('libs/volley.jar')
provided files('libs/alipaySdk-20180403.jar')
compile files('libs/wechat-sdk-android-without-mta-5.1.6.jar')
複製代碼
java.io.IOException: Could not delete path 'F:\xxxx\android\app\build\intermediates\transforms\dex\debug\folders\1000'.
複製代碼
解決:(權限問題致使)以管理員身份運行控制檯再運行react-native run-android,若是還報錯手動刪除'F:\xxxx\android\app'目錄下的build文件夾。react-native
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':react-native-device-info:prepareComAndroidSupportAppcompatV72301Library'.
> Could not expand ZIP 'D:\SDK\extras\android\m2repository\com\android\support\appcompat-v7\23.0.1\appcompat-v7-23.0.1.aar'.
複製代碼
解決:此問題還1相似仍是權限問題 ,手動刪除「F:\xxxxx\node_modules\react-native-device-info\android」目錄下的build文件夾。(注意:以上是以react-native-device-info組件爲例,若是是其它組件報相似問題 目錄爲: \node_modules\組件名\android )android-studio
在windows上常常會遇到刪除文件夾須要管理員權限,可是給了管理員權限仍是刪不掉,這時候咱們能夠利用下壓縮工具,壓縮對應的文件,而且在壓縮時選擇壓縮後刪除源文件則就能夠刪除 or 重啓電腦再刪除bash
The SDK Build Tools revision (23.0.1) is too low for project ‘:react-native-vector-icons’. Minimum
複製代碼
這個錯誤在引入第三方庫也會常常遇到,改法也很簡單, 進入對應庫的build.gradle 文件夾 修改buildToolsVersion 爲對應版本
在rn中,若是咱們只改動了js代碼,只須要reload,可是隻要咱們改動了原生代碼,包括Manifest以及一些資源文件,咱們都須要從新編譯打包才能生效,若是是添加庫等操做,建議先clear build, 而後再build
最後若是你發現你代碼確實沒問題,路徑等都沒錯,能夠嘗試刪除掉android目錄和app目錄下面的build文件夾(打包自動生成文件), 最後
,再打開項目實在仍是不行能夠嘗試重啓,多是有端口被佔用的緣由