ReactNativeのbuild.gradleって何?
build.gradle
Gradle
Groovy
bunild.gradleの中身
- 以下がReactNativeの初期状態のbuild.gradle
- buildscriptブロック内のclasspathに外部のプラグインのjarファイルを指定することでプロジェクト内に追加することができる
classpath 'com.google.gms:google-services:3.0.0'
はGoogleのサービス(Firebase等)をAndroidアプリ内で使うために必要なプラグイン
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.3' classpath 'com.google.gms:google-services:3.0.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { mavenLocal() jcenter() maven { // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url "$rootDir/../node_modules/react-native/android" } } }
Golangでネストした構造体を初期化する方法
次のようにネストした構造体が存在する場合に、 Golangでは初期化の方法が非常に面倒くさい。
type User struct { ID int Name string Account struct { Password string AccessToken string } }
func main() { user := User{ ID: 1, Name: "Masaru", Account: struct{ Password string AccessToken string }{ Password: "hogehoge", AccessToken: "fugafuga", }, } fmt.Println(user) }
こんな感じでネストした構造体の構造と値を別々で書かないと初期化出来ない。 最初結構嵌ったので、メモ。
ReactNativeでAndroidのシミュレーターを起動する
Androidの場合は事前にAndroid Virtual Deviceを追加しておく必要がある。
AVDマネージャーを起動する
Android Studioを起動して[Tools] > [Android] > [AVD Manger]
AVDを追加して起動する
端末は色んな種類がありますが、自分はNexus 5 API23を使ってます。 追加したらActionsから起動ボタンを押します。
index.android.jsを用意する
こんな感じでAndroid用の起動ファイルを用意します。 IOSと記述は全く同じでOK
import { AppRegistry } from 'react-native'; import App from './src/app'; AppRegistry.registerComponent('sample', () => App);
React-Nativeのシミュレーターを実行する
AVDを起動した状態で react-native run-androidを実行します。 これでうまくいくはずです。
IOSでAdd the Push Notifications feature to your App IDが出る
GeneralのBundle Identifierが被っているのが問題でした。
名前を変えたら解消。
ReactNativeにReduxの環境構築をしてみる
プロジェクトの作成
$ react-native init redux_test
必要なライブラリのインストール
$ cd redux_test $ npm install $ npm install --save redux react-redux
シミュレータ起動
$ rm -rf ios/build
$ react-native run-ios
たまに前ビルドした結果が残っていてエラーになる時があるので、
ios/build
以下を消してからシミュレータを実行するようにしています。
こんな画面が出ればOKです。
Reactのコード用のディレクトリを作成
$ mkdir src $ cd src
Providerコンポーネントを作成
import reducers from './reducers'; import React, { Component } from 'react'; import { Provider } from 'react-redux'; import { createStore } from 'redux'; import { View, Text } from 'react-native'; export default class App extends Component { render() { return ( <Provider store={createStore(reducers)}> <View> <Text>Hello World</Text> </View> </Provider> ) } }
Providerコンポーネントのpropsにstoreを渡すことで、Store内に保存されたstateを子のコンポーネントに渡すことができます。
combineReducerの用意
$ mkdir src/reducers $ touch src/reducers/index.js
import { combineReducers } from 'redux'; export default combineReducers({ hoge: () => { return { name: 'hoge' } } });
Reducerが無いとcreateStoreで怒られるので、仮のReducerを用意します。
index.ios.jsとindex.android.jsを書き換え
import { AppRegistry, } from 'react-native'; import App from './src/App'; AppRegistry.registerComponent('redux_test', () => App);
元のコードを全部消して前に定義したApp.jsを読み込むように変更します。
これで上記のように画面の左上にHello Worldが表示されればReduxの最低限の環境構築は完了です。