web-dev-qa-db-ja.com

反応ネイティブのgradlew AssembleReleaseコマンドAndroidがapp-release.apkを生成していません

私は、react-packagerサーバーなしで署名のないapp-release.apkを生成したいと思います。そのために次のコマンドを実行しています。

cd反応ネイティブプロジェクトディレクトリ

反応ネイティブバンドル-プラットフォームAndroid --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android。バンドル--assets-dest Android/app/src/main/res /

次のコマンドの後、次のようなコマンドプロンプトでエラーが発生します。

cd Android && gradlew assemblyrelease

app:processReleaseManifestessReleaseManifest

:app:processReleaseResources D:\ ReactNativeProject\Android\app\build\intermediates\res\merged\release\drawable-mdpi-v4\image_background_unique_2.jpg:エラー:ファイルが重複しています。 D:\ ReactNativeProject\Android\app\build\intermediates\res\merged\release\drawable-mdpi\image_background_unique_2.jpg:オリジナルはこちらです。バージョン修飾子が暗示される場合があります。 :app:processReleaseResourcesが失敗しました

失敗:ビルドは例外で失敗しました。

  • 問題の原因:タスク ':app:processReleaseResources'の実行に失敗しました。 com.Android.ide.common.process.ProcessException:aaptの実行に失敗しました

また、app-release.apkを生成できず、image_background_unique_2.jpgファイルが異なるフォルダーに2回追加される理由がわかりません。

9
Mayuri Birajdar

https://facebook.github.io/react-native/docs/signed-apk-Android.html の手順に従って署名済みAPKを生成し、署名済みAPKを生成しようとしました。

同じ問題がありました。 error: Duplicate fileを実行すると、一部の画像で./gradlew assembleReleaseが表示されました。 assembleReleasedrawable-フォルダでいくつかの問題を引き起こすようです。 drawable-からすべての/Android/app/src/main/res/フォルダを削除しました。次に、。/ gradlew AssembleReleaseを再度実行しました。最後に、/Android/app/build/outputs/apk/で署名済みAPKを生成しました。

8

問題は、新しいバージョンのreact-nativeがapp/src/main/resではなく/ app/build/intermediates/res/merged/releaseにアセットをバンドルすることです。

それを解決するために、これは私がやったことです

rm -rf Android/app/src/main/res/drawable-*

次のコマンドを使用してアセットをバンドルします。

react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/build/intermediates/res/merged/release/

更新された--assets-dest上記のコマンドで。 APKの組み立てはその後正常に機能しました!

react-native run-Android --variant=release

19
Indivision Dev

アプリをバンドルし、assembleDebugを使用してスマートフォンにインストールしたようです。 assembleReleaseに移動することを決定したら、drawable-フォルダーを削除する必要があります。 .apkファイルを作成する場合、問題が発生します。

1
milkersarac

反応ネイティブクリーンビルドを試しましたか?キャッシュをリセットしてからバンドルしてみてください。多分それはこの問題を解決します。

0
Y_J

これは私のために働いた

次のコードをファイルnode_modules/react-native/react.gradleに追加します。

doLast {
    def moveFunc = { resSuffix ->
        File originalDir = file("${resourcesDir}/drawable-${resSuffix}")
        if (originalDir.exists()) {
            File destDir = file("${resourcesDir}/drawable-${resSuffix}-v4")
            ant.move(file: originalDir, tofile: destDir)
        }
    }
    moveFunc.curry("ldpi").call()
    moveFunc.curry("mdpi").call()
    moveFunc.curry("hdpi").call()
    moveFunc.curry("xhdpi").call()
    moveFunc.curry("xxhdpi").call()
    moveFunc.curry("xxxhdpi").call()
}

内部def currentBundleTask = tasks.create(...

ここでこの解決策を見つけました https://github.com/facebook/react-native/issues/5787

0

ネイティブの/Android/app/build/intermediates/res/merged/release/drawable-mdpiでフォルダーの重複を削除することで、この問題を解決することができました

0

最初に、次のように入力して、このエラーの原因となる可能性のあるすべてのフォルダを削除します。

rm -rf ./Android/app/build/intermediates/res/merged/release/drawable-*

次に、mdpiをmdpi-v4に変更します。

./node_modules/react-native/local-cli/bundle/assetPathUtils.js

function getAndroidAssetSuffix(scale) {
  switch (scale) {
    case 0.75: return 'ldpi';
    case 1: return 'mdpi-v4';
    case 1.5: return 'hdpi';
    case 2: return 'xhdpi';
    case 3: return 'xxhdpi';
    case 4: return 'xxxhdpi';
  }
}

次に、オフラインインクルードをバンドルします。

react-native bundle --platform Android --dev false --entry-file index.Android.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/build/intermediates/res/merged/release/

最後に、アプリのリリースバージョンをビルドします。

cd ./Android && ./gradlew assembleRelease
0
Nicky Kouffeld

コマンドの下でネイティブバンドルを実行するようにデバッグするために1つのことを行うことができます

react-native bundle --assets-dest ./Android/app/src/main/res/ --entry-file ./index.js --bundle-output ./Android/app/src/main/assets/index.Android.bundle --platform Android --dev true

リリースの場合:

react-native bundle --platform Android --dev false --entry-file ./index.js --bundle-output Android/app/src/main/assets/index.Android.bundle --assets-dest Android/app/build/intermediates/res/merged/release/
0
user3136137