本日、AndroidStudio3.6のstable版がリリースされました。
https://android-developers.googleblog.com/2020/02/android-studio-36.html
早速アップデートして、作っているアプリのgradleバージョンも上げてビルドしてみたところ、mapping.txtに関して詰まったポイントがあったので記載します。
変更点
mapping.txtの配置場所が(地味に)変わりました。
flavor/buildType→flavorBuildTypeになっています。(flavorとbuildTypeに階層が無くなった)
# 以前
app/build/outputs/mapping/flavor/buildType/mapping.txt
# AndroidStudio3.6
app/build/outputs/mapping/flavorBuildType/mapping.txt
# 例
app/build/outputs/mapping/flavor/debug/mapping.txt
↓
app/build/outputs/mapping/flavorDebug/mapping.txt
問題と解決法
問題
CIにflavorとbuildTypeを渡してビルドしていたのですが、成果物としてmapping.txtを保存する処理で、エラーになりました。
具体的にはmapping.txtを成果物フォルダにコピーしようとしており、下記のようなスクリプトを書いていました。
(CIではビルド時にFlavorとBuildType(debug/releaseなど)を指定しています)
cp app/build/outputs/mapping/${Flavor}/${BuildType}/mapping.txt Outputs/
新しいディレクトリに対応できていないので、エラーになります。
cp: cannot stat ‘app/build/outputs/mapping/flavor/debug/mapping.txt’: No such file or directory
解決法
buildTypeはdebug/releaseという形で先頭が小文字だったのでどうしようかと思っていたのですが、bashに先頭を大文字にできる機能がありました。
cp app/build/outputs/mapping/${Flavor}${BuildType^}/mapping.txt Outputs/
参照時に^
をつけると先頭だけ大文字にしてくれるようです。
(Bashのバージョンによるかもしれません)
これで無事mapping.txtの新しい階層に対応できました。