8. 遇到不可抗力的自然災(zāi)害

如下圖,不解釋

自然災(zāi)害

遂怒改用GitHub API,一系列改動如下:

  • 換名字改用RNGitHub心好累
  • 升級react-native到最新版本(這世界變化真快
  • 新版本ActivityIndicator兼容Android,遂棄用react-native-spinkit,重寫Loading組件
改名#####

之前提到過盡量不要改名,涉及到的改動比較大,會遇到各種不知名錯誤,趁著本次改動詳細(xì)記錄一下:

  • 最靠譜的做法是修改package.json文件中的name,然后react-native upgrade,根據(jù)需要覆蓋各種配置文件
  • 其中有一個屬性不會被修改,需要將AndroidManifest.xml中的package屬性修改成對應(yīng)的包名比如com.rngithub,包名一般是項(xiàng)目名稱小寫,這也是為什么不要給項(xiàng)目取諸如RN-GitHub短杠連接字符這樣的名字的原因
  • 修改/index.android.js主啟動文件主視圖名字AppRegistry.registerComponent('RNGitHub', () => App);

順利的話到此結(jié)束,如果已有rnpm link的組件需要重新link,第一次react-native run-android可能出錯是因?yàn)橐郧?code>link的組件和新生成的有沖突,重新運(yùn)行一遍即可,如果報java編譯類錯誤,嘗試cd android && ./gradlew clean修復(fù),其他問題未遇到,在此不做說明,自行g(shù)oogle。

升級react-native0.31.0#####

react-native畢竟新生,迭代速度那叫一個快,提醒使用的童鞋對于每一個release都要重視,至少要看一下release note,我是從0.27.2升級的,跨度比較大,遇到的問題也很多,在此記錄以免掉坑。

  1. 首先一個大的改動在29版本,分離了啟動程序,從以前的MainActivity.java變成現(xiàn)在的MainActivity.javaMainApplication.java,猜測目的是將主啟動程序與啟動視圖分離,將抽象類接口化,更好的解耦(我沒分析過源碼,只限個人猜測),官方說明在這里,我是一個搬運(yùn)工,大致翻譯如下
  • MainActivity.javaMainApplication.java修改如連接所示樣式,MainActivity,MainApplication如果你已經(jīng)運(yùn)行react-native upgrade則無需改動
  • 添加name屬性,在AndroidManifest.xml文件中添加如下
<application
    android:name=".MainApplication" 
...
>
  1. 如果出現(xiàn)諸如如下錯誤:
Warning: You are manually calling a React.PropTypes validation function for the fontSize
 prop on StyleSheet welcome
. This is deprecated and will not work in the next major version. You may be seeing this warning due to a third-party PropTypes library. See[https://facebook.github.io/react/warnings/dont-call-proptypes.html](https://facebook.github.io/react/warnings/dont-call-proptypes.html) for details

需要同時升級react,配套版本是15.2.1,npm --save remove react && npm --save install react@15.2.1

棄用react-native-spinkit并重寫Loading#####

并不是說這個組件不好,只是一個簡單的loading我覺得沒必要使用怎么好的組件而已:
修改app/components/loading.js:

'use strict';

import React, { Component } from 'react';

import {
  StyleSheet,
  View,
  ActivityIndicator,
} from 'react-native';

class Loading extends Component {
  render() {
    return (
      <View style={styles.container}>
        <ActivityIndicator size='large' color='#30A9DE'/>
      </View>
    );
  }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        alignItems: 'center',
        justifyContent: 'center',
    }
});


export default Loading;

下篇文章將具體修改界面使用GitHub API,目前還沒有想好如何設(shè)計,敬請期待。(.
最新代碼地址,之前代碼已tag,可以查看之前的RELEASE

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容