m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

react-nativeで依存パッケージにパッチを当てたい

react-nativeのバージョンあげたら古いキーワードがエラーになるようになった

  • What went wrong: A problem occurred evaluating project ':react-native-gps-state'. Could not find method compile() for arguments [com.facebook.react:react-native:+] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

compileが使えないみたい

node_modulesから確認

node_modules/react-native-gps-state/android/build.gradle

確かに・・・ でもnode_modulesを修正したら再取り込みごとに修正しないといけないからメンドイ

パッチを作成して修正する

試す

パッチ適用準備

パッケージインストール

yarn add --dev patch-package postinstall-postinstall

※npmでもあるみたいだが、react-nativeでは基本、yarnを使いたいのでyarnのみ記載

package.json追加

  "scripts": {
    "android": "react-native run-android",
    "ios": "react-native run-ios",
    "start": "react-native start",
    "test": "jest",
    "lint": "eslint . --ext .js,.jsx,.ts,.tsx",
    "postinstall": "patch-package"
  },

node_moduleのコードを修正

一部のみ抜粋

node_modules/react-native-gps-state配下

/android/build.gradle

dependencies {
    //compile "com.facebook.react:react-native:+"  // From node_modules
    //compile 'com.android.support:appcompat-v7:26.1.0'
    implementation "com.facebook.react:react-native:+"  // From node_modules
    implementation 'com.android.support:appcompat-v7:26.1.0'

/android/src/main/java/br/com/dopaminamob/gpsstate/GPSStateModule.java

//import android.support.v4.app.ActivityCompat;
import androidx.core.app.ActivityCompat;

以下のコマンドでパッチファイルを作成

yarn patch-package react-native-gps-state

yarn patch-package [パッケージ名]

あとはyarnしたらnode_modules配下にパッチの変更が割り当てられるみたい

今後はandroidとかはバージョン対応を迅速に求められそうになっているので できるだけこういった問題解決できるようになっておきたい

今回はここまで

参考

React Nativeのライブラリをpatch-packageで手軽に修正する方法 – もばらぶエンジニアブログ