Androidアプリをリリースする前にログを削除する方法など、備忘録

公開日: 2021年02月28日最終更新日: 2021年10月17日

thumb

Androidの機能を確認するために簡単なアプリを作ることがあります。 そして、作ったアプリをそのままplay storeでリリースしてみたりもします。 ちゃんとリリース作業はできていないのですが、自分が最低限しておきたいことで忘れがちなことをメモしておきます。以下の項目です。

  • ログの削除、圧縮、難読化、最適化を有効にする。
  • 対応していない機能を宣言する
  • アプリのversionCode更新

ログの削除

デバッグ時には便利なログですが、リリース版のアプリで余分なログを出すのは望ましくないと考えます。

  • アプリを利用するにあたって余計な負荷となる
  • 攻撃するためのヒントを与える可能性がありセキュリティ上好ましくない
  • 他のログが流れて読みにくくなる

といった理由があるためです。 そのため、リリース時にはログが出ないようにしておきたいです。

これはproguard-rules.proにルールを記載することで実現できます。

まず、appのbuild.gradleでminifyEnabled trueでproguardを有効にすることで、アプリの圧縮、難読化、最適化を有効にします。

android {
    ...
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
    ...

そして、proguard-rules.proに以下を追記することでログを削除できます。

-assumenosideeffects public class android.util.Log {
    public static *** v(...);
    public static *** d(...);
    public static *** i(...);
    public static *** w(...);
    public static *** e(...);
    public static *** wtf(...);
}

対応していない機能を宣言する

AndroidStudioでアプリを作るとAndroidManifest.xmlなど必要なファイルが自動生成されます。 そして、デフォルトではマルチウィンドウ、ピクチャーインピクチャーモード、画面の回転(横画面)をサポートするようになっています。 これらについて、アプリとして未サポートの場合はそれをAndroidManifest.xmlで定義しておくことで、Androidのフレームワーク側に教えることができます。

それぞれ以下をAndroidManifest.xmlに記載します(参考:マルチウィンドウのサポート)。

  • マルチウィンドウに対応していない場合はandroid:resizeableActivity="false"
  • ピクチャーインピクチャーモードに対応していない場合はandroid:supportsPictureInPicture="false"
  • 縦画面(ポートレート)に固定する場合はandroid:screenOrientation="portrait"
    <application
        android:resizeableActivity="false"
        android:supportsPictureInPicture="false"
        ...
        <activity
            ...
             android:screenOrientation="portrait"
            ...
        />
        ...
    />

バージョンコードを上げる

play consoleにアップロードするタイミングで指摘されて気付くことがあります。 適当にリリースしていてすみません。

バージョンアップしてリリースする場合は、appのbuild.gradleでアプリのversionCodeを上げるのを忘れないようにします。

android {
    ...
    defaultConfig {
        ...
        versionCode 8
        ...
    }