3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

mavenやjcenterに上がっているReactNativeは古いので気をつけよう

Last updated at Posted at 2018-03-16

はじめに

普段ReactNativeでアプリを開発する際には、react-native run-androidで自動的にAndroidのプロジェクトが生成されるので、build.gradleに指定するReactNativeのrepositoryについて意識することは少ないと思います。

ただ、今回ReactNativeのNativeUiComponentのライブラリを作るために1からAndroidプロジェクトを作成してbuild.gradleも記述したためにハマってしまったことを書き留めておきます。

問題

早速build.gradleに以下のように記述し、ReactNativeの最新版を利用するようにしていました。

build.gradle
dependencies {
    compile 'com.facebook.react:react-native:+'
}

ですが、作成したNativeUiComponentを実際に使ってみると、どうもうまく動かない。 javaのエラーであるはずのメソッドがなかったり、存在しないclassをimportしていたりと、ライブラリを作るために使っているReactNativeと、それを利用する側のアプリで利用しているReactNativeのバージョンが違うような挙動を示しました。

両方最新のバージョンを使うようにしているはずなのにおかしいなとハマってしまいました。

原因

調べてみると、今現在のReactNativeの最新バージョンが0.54.2であるのに対して、mavenやjcenterにあるReactNativeは最新バージョンが0.20.1とかなり古いことが原因であることがわかりました。

対処法

Androidプロジェクトで最新のReactNativeを利用する場合は、npm install react-nativeでインストールしておきつつ、

build.gradle
repositories {
    maven {
        url "$rootDir/../node_modules/react-native/android"
    }
}

dependencies {
    compile 'com.facebook.react:react-native:+'
}

こんな感じでnode_modules/react-native/androidにjarやaarがおいてあるのでそちらを参照するようにしましょう。

終わりに

記事にまとめている最中に見つけたissueですが、同じ問題に対して同じ対処法が示されていました。

基本的に普通にアプリを作る際には気にしなくて良いですが、NativeUiComponentのライブラリを作りたいと思っている方はお気をつけください。

3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?