React Nativeばらばらなピットのまとめ

3652 ワード

1.android新規buildTypeパッケージ


プロジェクトは1つの需要に出会って、1種のパッケージのタイプを増加する必要があって、毎日品質部のテストパッケージに構築して、だからbuild.gradleの下で1中buildType-offlineを追加して、非オンラインで使用するパッケージを代表します.テストパッケージは、毎日構築されると、末尾のバージョン番号に自動的に1を追加できます.buildTypeというコードが追加されました

    buildTypes {
        debug {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.debug
        }
        release {
            minifyEnabled enableProguardInReleaseBuilds
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
            signingConfig signingConfigs.release
        }

        offline { // 
            initWith(buildTypes.release)
            signingConfig signingConfigs.offline
        }
    }

signingConfigsoffline署名構成が追加され、releaseパケットの構成と同様にすることができる.そこで喜んでこの文章を参考にgradleバージョン番号の自動構築構成を行い、アンドロイドgradle自動構築総括but...gradlew assembleOfflineを使ってバッグを出した後、ずっとウェルカムインタフェースに詰まっていて、原因の分析を始めました.
  • サーバ構成の問題AppはグローバルUrlアドレスを構成するため、アドレスの不一致によるものと初歩的に疑われたが、gradlew assembleReleaseの使用が正しいことが最終的に分かったため、この可能性を排除した.
  • 自動改版本号は不一致の問題を引き起こしますか?この点についても,通常のreleaseパケットを用いて検証したが,これも正しいことが分かった.バージョン番号には関係ありません.
  • anything else? このとき丈二和尚さんが頭がつかめない段階で、なぜウェルカムインタフェースに引っかかったのか、stackoverFlowで関連情報を検索してみると、一つのポイントがありました.
    maybe the jsbundle not packing in your source file.
    私たちがこのコマンドを使用してパッケージ化したとき、jsbundleファイルがパッケージ化されていなかった可能性が高いと悟った.そこでapkパケットを開いて検証したところ、assetsディレクトリの下にはやはりindex.androud.bundleファイルが存在しないことがわかり、再び正道に戻った.では、この問題をどう解決すればいいのでしょうか.初歩的な分析によると、RNdebugreleaseの2種類のbuildTypeに対して相応の処理を行うべきで、react-nativeディレクトリの下で、このファイルreact.gradleを発見して、中はjsbundleの関連配置をパッケージ化しました.
  •      // Set up dev mode
    def devEnabled = !targetName.toLowerCase().contains("release")
    if (Os.isFamily(Os.FAMILY_WINDOWS)) {
       commandLine("cmd", "/c", *nodeExecutableAndArgs, "node_modules/react-native/local-cli/cli.js", "bundle", "--platform", "android", "--dev", "${devEnabled}", "--reset-cache", "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir, *extraPackagerArgs)
     } else {
       commandLine(*nodeExecutableAndArgs, "node_modules/react-native/local-cli/cli.js", "bundle", "--platform", "android", "--dev", "${devEnabled}", "--reset-cache", "--entry-file", entryFile, "--bundle-output", jsBundleFile, "--assets-dest", resourcesDir, *extraPackagerArgs)
    }
    
    enabled config."bundleIn${targetName}" ||
    config."bundleIn${buildTypeName.capitalize()}" ?:
    targetName.toLowerCase().contains("release")        
    
    

    ここにはdevEnabledのパラメータがあり、trueであることが判明すると、devモードがオンになり、jsbundleをパケットに打ち込むことはありません.その値は、パッケージコマンドがreleaseというフィールド==...RN本当にちょっと穴があいています...

    解決策


    1.react.gradleのソースコードを修正して他のパラメータをサポートさせること、例えばoffline 、ソースコードを変更することは、RNのお父さんに知られて、今後のメンテナンスは災難です.2.修正コマンドreleaseフィールドwonderfulを追加します.buildTypeの下のofflineofflineReleaseに変更するだけです.