4
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?

More than 5 years have passed since last update.

[Android]ビルドタイプとフレーバーをバージョン情報に含める

Last updated at Posted at 2019-10-31

はじめに

Androidアプリ開発の中ではビルドタイプ(Build Type)やフレーバー(Flavor)を
定義して利用用途ごとにAPKファイルを生成することがあります。
そういった時にバージョン情報にビルドタイプ(Build Type)やフレーバー(Flavor)の
情報を埋め込む方法を調べたのでまとめたいと思います。

0. 作成するものの確認

こんな感じでビルドタイプとフレーバーの情報を含めたバージョン情報を作成して

{バージョン名称}-{フレーバー(ディメンション1)}-{フレーバー(ディメンション2)-{ビルドタイプ}}

作成したバージョン情報をアプリケーションで表示してみようかと思います。

1. ビルドタイプを定義する

まずバージョン情報に含めるビルドタイプを宣言します。
今回はビルドタイプとしてRelese、Debug、Stagingの3つを用意します。

build.gradle(app)
android {
    ︙
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }

        debug {
            debuggable true
        }

        staging {
            initWith debug
        }
    }
}

問題なく定義できていれば「View」->「Tool Windows」->「Build Variants」->「Active Build Variant」に
次のような感じでRelease、Debug、Stagingが追加されビルドできるようになっているはずです。

image.png

2. プロダクトフレーバーを定義する

バージョン情報に含めるディメンションとしてversionとadvertisementの2つを定義します。
そしてversionにdemoとfull、advertisementにadoffとadonのフレーバーを定義しておきます。

build.gradle(app)
android {
        
    buildTypes {
        
    }

    flavorDimensions "version", "advertisement"
    productFlavors {
        demo {
            dimension "version"
        }

        full {
            dimension "version"
        }

        adon {
            dimension "advertisement"
        }

        adoff {
            dimension "advertisement"
        }
    }
}

問題なく定義できていれば「View」->「Tool Windows」->「Build Variants」->「Active Build Variant」に
次のような感じで全通りのフレーバーとビルドタイプの組み合わせが表示されビルドできるようになっているはずです。

image.png

3. バージョン名称を編集する

これで下準備は整ったので実際にバージョン情報を追加していきます。
初めに基本となるバージョン名称を編集します、今回はシンプルに1.0.0とします。

build.gradle(app)
    defaultConfig {
        applicationId "kaleidot725.myapplication"
        minSdkVersion 23
        targetSdkVersion 29
        versionCode 1
        versionName "1.0.0" // ここに記載されるバージョン名称を編集する
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

4. ビルドタイプをバージョン情報に追加する

次にビルドタイプをバージョン情報に追加していきたいと思います。
各ビルドタイプにversionNameSuffixを定義して名前付けしていきます。

build.gradle(app)
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
            applicationIdSuffix "-release" // このビルドタイプの名称を記述する
        }

        debug {
            debuggable true
            applicationIdSuffix "-debug" // このビルドタイプの名称を記述する
        }

        staging {
            initWith debug
            applicationIdSuffix "-staging" // このビルドタイプの名称を記述する
        }
    }

5. フレーバーをバージョン情報に追加する

次にフレーバーにバージョン情報に追加していきたいと思います。
これも同じく各フレーバーにversionNameSuffixを定義して名前付けしていきます。
これにてバージョン情報を追加していく作業は終わりになります。

build.gradle(app)
    flavorDimensions "version", "advertisement"
    productFlavors {
        demo {
            dimension "version"
            versionNameSuffix "-demo" // このビルドタイプの名称を記述する
        }

        full {
            dimension "version"
            versionNameSuffix "-full" // このビルドタイプの名称を記述する
        }

        adon {
            dimension "advertisement"
            versionNameSuffix "-adon" // このビルドタイプの名称を記述する
        }

        adoff {
            dimension "advertisement"
            versionNameSuffix "-adoff" // このビルドタイプの名称を記述する
        }
    }

6. バージョン情報をアプリに表示する

確認のためバージョン情報をMainActivityに表示したいと思います。
バージョン情報を表示できればよいので、次のようなTextViewだけを持つレイアウトを作成します。

activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">

<TextView
    android:id="@+id/version_text"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textSize="32dp"
    app:layout_constraintBottom_toBottomOf="parent"
    app:layout_constraintLeft_toLeftOf="parent"
    app:layout_constraintRight_toRightOf="parent"
    app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

そしてbuild.gradle(app)で作成したバージョン情報を
取得してTextViewにセットするようにします。

MainActivity.kt
class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val packageInfo = packageManager.getPackageInfo(packageName, 0);
        val version = packageInfo.versionName

        val versionView = findViewById<TextView>(R.id.version_text)
        versionView.text = version
    }
}

そして最後にアプリケーションを起動して終わりです。
次のように作成したバージョン情報が表示されています。

試しにBuild Variantを変更して起動してみてください。
次のようにBuild Variantの設定に応じてバージョン情報が変わります。

おわりに

gradle.build(app)にversionNameSuffixを追加していくだけで、
ビルドタイプとフレーバーをバージョン情報に埋め込むことができます。
この記事で作成したアプリケーションは次に置いてありますので参考にしてください。

image.png Kaleidot725 => android-mylab => VersionGenerator

参考

4
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
4
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?