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
}
}
signingConfigs
にoffline
署名構成が追加され、releaseパケットの構成と同様にすることができる.そこで喜んでこの文章を参考にgradle
バージョン番号の自動構築構成を行い、アンドロイドgradle自動構築総括but...gradlew assembleOffline
を使ってバッグを出した後、ずっとウェルカムインタフェースに詰まっていて、原因の分析を始めました.gradlew assembleRelease
の使用が正しいことが最終的に分かったため、この可能性を排除した.release
パケットを用いて検証したが,これも正しいことが分かった.バージョン番号には関係ありません.stackoverFlow
で関連情報を検索してみると、一つのポイントがありました.maybe the jsbundle not packing in your source file.
私たちがこのコマンドを使用してパッケージ化したとき、
jsbundle
ファイルがパッケージ化されていなかった可能性が高いと悟った.そこでapk
パケットを開いて検証したところ、assetsディレクトリの下にはやはりindex.androud.bundle
ファイルが存在しないことがわかり、再び正道に戻った.では、この問題をどう解決すればいいのでしょうか.初歩的な分析によると、RN
はdebug
とrelease
の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の下のoffline
をofflineRelease
に変更するだけです.