どのようにすべてのビルドエラーを修正するには、ネイティブ(Android固有)反応します.


私が最初に反応するネイティブアプリでAndroidアプリを構築し始めたとき、私はフレームワークに不満を持っていて、ほとんどそれをあきらめました.これはいつでも私はアプリをコンパイルしようとしたためですnpx react-native run-android 私はたくさんの間違いを犯した.Googleの検索とスタックオーバーフロースレッドを読んで日後に1つのエラーを修正すると、その後、解決するために別の数日間かかるとプロセスが繰り返されるまで、最終的にあきらめるか、アプリが奇跡的にコンパイルされるまで繰り返します.それは悪夢だった.
この記事では、私はどのように私は遭遇しているすべてのエラーを避けるために、どのようにそれらを避けるために、またはそれらを修正しながら、それらを横切って実行中にあなたのアプリケーションを開発中に反応するネイティブ表示されます.
パッケージを正しくインストールするには、パッケージやNPMリポジトリページのドキュメントを常に読んでください.
これは、ネイティブの反応でアプリケーションを構築するときにエラーの一般的なソースです.場合によっては、パッケージをインストールしたり、アプリケーションを操作するためにパッケージを設定することに関連した段階的なプロセスを読む時間がないので、インストールガイドを突っ込んで、パッケージをプラットフォームと統合するために必要な重要なステップが見つからなくなります.
ネイティブのプラットフォームにネイティブコードをコンパイルします.これは、いつかAndroidのプラットフォームで動作するようにパッケージを作成するために、ネイティブコードとビルドツールに変更を加える必要があることを意味します.
あなたはFontaWamy、ionicon、Materialicon、AntDesignなどを含む1つの場所で別のベクトルアイコンToolKitsのすべてからベクトルアイコンを使用することができますライブラリの場合は、ネイティブのベクトルのアイコンを、例えば、ネイティブのベクトルのアイコンを取ることができます.このパッケージをインストールします
npm install react-native-vector-icons
その後、ライブラリを使用して起動できますか?まあ...かなり.これがすべてであるならば、次に、若干の不快なエラーと欲求不満の準備ができていてください.ご覧の通りhttps://www.npmjs.com/package/react-native-vector-icons あなたがIOSのために構築している場合は、Xcodeでいくつかの変更を行う必要がありますし、また、このパッケージをAndroidプラットフォームで動作する場合は、Androidフォルダ内のファイルにいくつかの変更を行う必要があります.具体的にはAndroid用に変更しなければなりません.
android/app/build.gradle 
android/app/src/main/assets/fonts 
android/settings.gradle 
android/app/src/main/java/<your_android_app_package_name>/MainApplication.java
上記のリンクで指定されるように.
セットアップはかなり退屈かもしれないが、厳密に手順を慎重にあなたの行を下に多くの頭痛を保存します.
他のパッケージを正しくインストールする必要があるパッケージもあります.例えば、@反応ナビゲーション/ネイティブライブラリを取るhttps://reactnavigation.org/docs/getting-started/ , あなたが反応ネイティブ画面をインストールし、ネイティブの安全な地域のコンテキストに対応する必要があります.しかし、Androidデバイスでは、ネイティブ画面の反応を設定する必要がありますandroid/app/src/main/java/<your_android_app_package_name>/MainActivity.java , メインアクティビティクラスへの次の追加
@Override
protected void onCreate(Bundle savedInstanceState) {
  super.onCreate(null);
}
このファイルの先頭にimport文を追加する必要があります.
import android.os.Bundle;
プロジェクトでライブラリを使用する前に.
基本的には、任意のライブラリをインストールする
npm install <package-name>
そのパッケージのインストール命令を見つけてフォローしてください.
また、最終的にはパッケージを更新する必要がある場合、またはパッケージの新しいバージョンを使用することを決定する新しい反応ネイティブアプリを作成している場合は、変更を破るのチェックを確認し、新しいバージョンを動作させるために追加の手順が必要かどうかを確認してください.
2 .推奨されていないGradleの機能は、Gradle 7.3(または他のGradleバージョンと同様のエラー)と互換性がないように、このビルドで使用されました
基本的に、このエラーがあなたに伝えようとしていることは、この特定のパッケージがあなたのAndroidビルド用のGradleバージョンをサポートしていないことです.あなたが利用したならば、誰でも、1ポイントでこの誤りに対処しましたnpx react-native init <Project-name> 新しい反応ネイティブアプリケーションを生成する.
なぜこのエラーが起こるのか?
これが起こるreact-native init Gradleの最新版を常にAndroidプロジェクトに出荷しています.サードパーティ製のライブラリはGradleのバージョンをサポートしていないかもしれません.
あなたがする必要があるのは、Gradleの以前のバージョンをプロジェクトにインストールしてから、アプリケーションを再構築することです.
ステップ1:以前のバージョンの
Gradleのバージョンを参照するには、プロジェクトのAndroidフォルダに移動してgradlew -v :
cd android
gradlew -v
移動するhttps://developer.android.com/studio/releases/gradle-plugin . 更新Gradleセクションにスクロールします.ここでは、Gradleのバージョンとプラグインのバージョンが表示されます.

ご覧のように、この文書の執筆中に、最新のGradleバージョンは7.3 +です.
原則として、私が通常することは、最新版から3つのステップを離れて前のGradleバージョンを選ぶことです.この場合、Gradleバージョンは6.7.1 +です.あなたが最も適しているGradleのバージョンを選ぶことができます.

さて、オープンandroid/build.gradle テキストエディタで.次のようになります.
buildscript {
...
dependencies {
classpath("com.android.tools.build:gradle:7.2.0")
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
CLASSPATH ("COM . android . tools . build : gradle : 7.2.0 ")は、フォームパスパス("com . android . tools . build : gradle :")にあります.
したがって、上記のテーブルから選択したバージョンにプラグインバージョンを変更します.この行は次のようになります.
classpath("com.android.tools.build:gradle:4.2.0")
オープンandroid/gradle/warpper/gradle-wrapper.properties テキストエディタで.次のようになります.
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.0-all.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
我々は、ラインに興味がありますdistributionUrl=https\://services.gradle.org/distributions/gradle-7.3.0-all.zipこの行は形式通りです
distributionUrl=https\://services.gradle.org/distributions/gradle-<gradle-version>-all.zip
選択したプラグインのバージョンに合わせてGradleのバージョンを変更します.この行は次のようにします.
distributionUrl=https\://services.gradle.org/distributions/gradle-6.7.1-all.zip
ステップ2:再ビルドは、アプリ
プロジェクトフォルダから次のコマンドを実行します.
rm -r android/build ; rm -r android/app/src/release/res ; rm -r android/app/build/intermediates
すべてのこのコマンドは、それらを含むフォルダを削除することにより、アプリケーションの以前のビルドを削除します.次のように手動でフォルダを削除できます.android/build, android/app/src/release/res, android/app/build/intermediates .
終了したら、AndroidフォルダとGradleを使ってください.
cd android
gradlew clean
指定したGradleのバージョンを確認してください.
gradlew -v
ルートプロジェクトフォルダに戻り、アプリケーションを構築します
cd..
npx react-native run-android
あなたのアプリケーションは、現在すべての“推奨されないGradleの機能は、このビルドで使用された”エラーをすぐに行ってスムーズに構築する必要があります.エラーが続けば、以前のgradleバージョンを試してください.しかし、あまり遠く戻ってはいけません.
3 . Java入出力IOException :パスを削除できませんでした
このようにエラーが発生する場合があります.
* What went wrong:
Execution failed for task ':@myApp/react-native-spinkit:mergeReleaseResources'.
> java.io.IOException: Could not delete path 'C:\Users\My\Desktop\App\node_modules\@myApp
\react-native-spinkit\android\build\intermediates\res\merged\release\drawable-xhdpi-v4'.
Gradleのバージョンを変更したり、私のサポートしているAndroidバージョンの範囲を変更したりするときにGradleに変更を加えたときにこれらのタイプのエラーを得ることに気がつきますandroid/build.gradle ファイル.現在のAndroidビルドに影響を与える変更が行われると、Gradleは古いビルドからファイルを削除し、新しいファイルを作成します.このエラーは、いくつかの他のプログラムが現在これらのファイルにアクセスして、それらが削除されるのを防いでいることを示します.ほとんどの時間は削除されてからこれらのファイルを防止しているメトロバンドルです.だから、地下鉄を実行せずに再構築する必要があります.次の2つの方法があります.
  • 方法1:クリーングレード
  • このコードを実行します.
    cd android
    gradlew clean
    

  • 方法2 :手動で停止地下鉄
  • あなたのアプリケーションを使用してビルド:
    npx react-native run-android
    
    地下鉄ターミナルが来るとき、それを閉じてください.
    アプリがバンドルされた後、実行npx react-native run-android 再び.今度は、メトロが走るのを許してください.
    あなたのアプリケーションをインストールする必要があります実行する必要があります.
    4 . JVM ( Java Virtual Machine )ヒープ空間が消耗しているのでデーモンを追い出す.
    あなたの反応ネイティブAndroidアプリを構築するときは、エラーに遭遇する可能性があります:ヒープ制限の割り当てに失敗しました.これは、ライブラリの多くを持っているときにあなたのアプリが大きくなる場合に発生します.
    Googleのプレイストアでアップロードするには、リリースキーで署名した後、あなたのAndroidアプリのリリースAabを生成しているとき、このエラーはほとんどが表示されます.
    これを修正するには、ヒープメモリの割り当てを増やす必要があります.
    ファイルを開くにはandroid/gradle.properties テキストエディタで次の行を最後まで追加します.
    org.gradle.daemon=true
    org.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=2048m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8
    
    次にファイルを開くandroid/app/build.gradle テキストエディタで.Androidタスクの下に次を追加します.
    android {
    ...
      dexOptions {
        javaMaxHeapSize "4g"
      }
    ...
    }
    
    あなたのアプリケーションがスムーズにエラーなしで構築する必要があります.
    これらのエラーは、ネイティブのAndroidビルドの失敗におけるエラーの根源です.それは断片的な解決からの作物の多くのエラーから保存されます修正.
    あなたがまだ私がしたようにこれらのエラーでトラブルを抱えているか、または反応ネイティブでAndroidアプリ開発を始めることを望んでいるならば、私はこれがあなたに多くの時間、ストレスとエネルギーをより生産的な仕事をすることに費やされることを望みます.