如下圖,不解釋

自然災(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-native到0.31.0#####
react-native畢竟新生,迭代速度那叫一個快,提醒使用的童鞋對于每一個release都要重視,至少要看一下release note,我是從0.27.2升級的,跨度比較大,遇到的問題也很多,在此記錄以免掉坑。
- 首先一個大的改動在
29版本,分離了啟動程序,從以前的MainActivity.java變成現(xiàn)在的MainActivity.java和MainApplication.java,猜測目的是將主啟動程序與啟動視圖分離,將抽象類接口化,更好的解耦(我沒分析過源碼,只限個人猜測),官方說明在這里,我是一個搬運(yùn)工,大致翻譯如下
- 將
MainActivity.java和MainApplication.java修改如連接所示樣式,MainActivity,MainApplication如果你已經(jīng)運(yùn)行react-native upgrade則無需改動 - 添加
name屬性,在AndroidManifest.xml文件中添加如下
<application
android:name=".MainApplication"
...
>
- 如果出現(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。