Tech Sketch Bucket of Technical Chips by TIS Inc.

Android リリースビルド時にプロパティファイルを差し替える

Pocket

Androidアプリをデバッグする時とリリースする時で、呼び出すAPIのURLやキーなどの設定値を変えたいことがあります。
解決方法のひとつとしてBuildConfig.DEBUGを見て読み込むプロパティファイルを切り替えるという方法があります。


課題

Androidアプリをデバッグする時とリリースする時で、呼び出すAPIのURLやキーなどの設定値を変えたいことがあります。
解決方法のひとつとしてBuildConfig.DEBUGを見て読み込むプロパティファイルを切り替えるという方法があります。

しかしこの方法だとデバッグ時に使うプロパティファイルが、公開用のバイナリ(APK)に含まれてしまい、APKファイルを解凍すればデバッグ環境の情報が見えてしまいます。

デバッグ用のAPIのURLなどは、なるべくなら隠しておきたいものです。

解決方法

コマンドラインによるビルドをカスタマイズすることで、プロパティファイルを差し替える事ができます。

リリースビルド用のプロパティファイル

srcの下の「my.properties」が置き換えたいファイルです。
差し替えるためのプロパティファイルを別のディレクトリ「prop-release」に置いておきます。

android-switch-properties.png

build.xmlの生成

コマンドラインでビルドするには、antが参照するbuild.xmlが必要です。
プロジェクトのルートディレクトリで次のコマンドを実行することで生成できます。

ビルドプロセスのカスタマイズ

ビルドプロセスをカスタマイズするために「custom_rules.xml」をプロジェクトのルートディレクトリに作成します。

custom_rules.xml

リリースビルド時に生成される署名前のファイル「[アプリ名]-release-unsigned.apk」の内部の「my.properties」を差し替えたzipファイルを生成し、元のファイル名にリネームしています。

ハマったところ

最初は次のようにzipタスクでAPK内のプロパティファイルを直接updateしようとしていましたが、置き換えができたりできなかったりという現象が発生していました。

原因はzipタスクが最終更新日時をみて置き換えるファイルの方が新しければ置換するという仕様だからでした。

エンジニア採用中!私たちと一緒に働いてみませんか?