0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Androidリリースビルドが「成功したのにAPKがない」

Posted at

Androidリリースビルドが「成功したのにAPKがない」場合の真相と対処ガイド

対象:Cordova、Gradle素のAndroid、React Native、Flutterなど、Gradleを使うAndroidプロジェクト。

典型症状:コンソールにBUILD SUCCESSFULと出るのに、期待していたapp/build/outputs/apk/release/app-release.apkが見当たらない。

1 問題の現象

cordova build android --release # または gradlew bundleRelease
  • ビルドは成功
  • ログにはこんな行が出る。
    Built the following bundle(s):
        app/build/outputs/bundle/release/app-release.aab
    
  • 一方で後処理スクリプトがエラー
    ENOENT: no such file or directory, rename '.../apk/release/app-release.apk' ...
    
  • つまりAABはあるがAPKがない

2 ね本原因:デフォルト出力がAPK➡️AABに変わった

年月 出来事 影響
2021-8 Google Playで新規アプリはAAB必須 配布パイプラインにAAB対応が必須
2021-9 Gradle7/AGP7: リリースビルドのデフォルト成果物をAABに切り替え assembleReleaseを呼ばない限りAPKを作らない
2021-10 cordova-Android10:cordova build --releasebundleReleaseを実行 引数なしだとAABのみ生成

その結果、debug=APK、release=AABが"新しい常識"になった。旧来の「リリースでもAPKを拾う」スクリプトはファイルを見つけられずエラーになる。

3 クイック修復策

3-1 APKがほしい場合

cordova build android --release --packageType=apk

あるいは

cd platforms/android
gradlew assembleRelease

頻繁に使うなら、packageType=apkを固定すると楽。

4 システマティックな調査手順

Step チェックポイント コマンド・方法 典型結果
①ビルドタスク bundleReleaseかassembleReleaseか ./gradlew task --all grep Release
②成果物フォルダ outputs/bundle/release/ vs outputs/apk/release ls app/build/outputs/**/release/ どちらにファイルがあるか
後処理スクリプト APKパスをハードコードしていないか grep -R ".apk" scripts/
④CLI引数 --packageType=が指定されているか CI ログ/package.jsonを確認 省略時はデフォルト継承
⑤Gradle設定 android.bundle.enable...などのフラグ build.gradleを検索 trueならAABだけ

まとめ

「ビルド成功なのに APK がない」はバグではなく エコシステムの進化。
タスク→成果物→スクリプト のチェックリストを持っておけば、
同じ罠にハマっても 2 分で原因を突き止められます。
皆さんのリリースがスムーズに進みますように!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?