build.gradleとAndroidManifest.xml – 【Android Java】

build.gradleとAndroidManifest.xml – 【Android Java】

namespace – 【build.gradle】

AGP7(Android Gradle Plugin)以降、Androidコードが属するJavaパッケージ名を指定する設定です。

android {
  namespace 'jp.co.confrage.xxx.yyy'
}

RやBuildConfig.javaなどは、このnamespaceに作成されます。

一般的にはnamespaceの設定とapplicationIdの値は同じにします。

applicationId – 【build.gradle】

applicationIdはAPKの識別IDになります。一般的にはnamespaceの設定とapplicationIdの値は同じにします。

android {
  defaultConfig {
    applicationId "jp.co.confrage.xxx.yyy"
  }
}

minSdkVersion,targetSdkVersion – 【build.gradle】

minSdkVersionは動作を保証するAndroid OSの最低バージョンを指定します。このバージョンより低いOSの端末では、アプリをインストールする事が出来ません。

targetSdkVersionは、どのバージョンのAndroid OSを基準に開発しているか(想定Android)を指定します。

android {
  defaultConfig {
    minSdkVersion 21
    targetSdkVersion 24
  }
}

AGP7.0以降は、minSdk,targetSdkと記述する事が推奨されています。

compileSdkVersion – 【build.gradle】

compileSdkVersionは、どのバージョンのAndroid OSを基準に開発しているか(想定Android)を指定します。

android {
  compileSdkVersion 24
  defaultConfig {
    minSdkVersion 21
    targetSdkVersion 24
  }
}

AGP7.0以降は、compileSdkと記述する事が推奨されています。

sourceCompatibility,targetCompatibility – 【build.gradle】

sourceCompatibility・・・Javaの文法のバージョンは何にするか

targetCompatibility・・・生成するJavaバイトコードのバージョンは何にするか

以下のように記述します。必須ではないようですが、明示する方が良いです。

android{
  compileOptions {
    sourceCompatibility JavaVersion.VERSION_17
    targetCompatibility JavaVersion.VERSION_17
  }
}

buildFeatures – 【build.gradle】

buildFeaturesでAGPの機能の使用するかどうかを設定します。

viewBinding

viewBinding=trueにすることで、レイアウトXMLファイルに対応するクラスを自動生成するようになり、findViewByIdの記述を不要にすることが出来るようになります。

android {
  viewBinding = true
}

dataBinding

dataBinding=trueにすることで、データとUIを直接結び付けることが出来るようになります。

android {
  dataBinding = true
}

compose

compose=trueにすることで、Jetpack Composeが使えるようになります。

android {
  compose = true
}

buildConfig

buildConfig=trueにすることで、BuildConfig.javaが自動生成されます。

AGP8以降、デフォルト値はfalseです。

android {
  buildConfig = true
}

aidl

aidl=trueにすることで、.aidlファイルから通信用クラス(スタブ)を自動生成します。

android {
  aidl = true
}

lintOptions【build.gradle】

lintOptionsでAndroid Lint(コード解析)の設定が出来ます。

abortOnError

abortOnErrorをfasleにすると、重大なエラーが見つかってもビルドを続行します。

通常はtrueにします。

android {
  lintOptions {
    abortOnError false
  }
}

buildTypes – 【build.gradle】

buildTypesで、アプリをどの目的でビルドするかを設定します。

debug用と、release用に分ける例です。

android {
  buildTypes {
    debug {
      applicationIdSuffix ".debug" // インストール時に別アプリとして扱える
      versionNameSuffix "-debug"
    }
    release {
      minifyEnabled true // コードを難読化してサイズを減らす
      proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
    }
  }
}

minifyEnabled

minifyEnabled trueを設定することで、ビルドプロセスでR8(ProGuard)ツールが動作し、アプリの最適化を行います。

  1. コード圧縮
  2. 難読化
  3. 最適化(最適化なしの場合、proguard-android-optimize.txt⇒proguard-android.txt)

通常、本番用APKのみtrueにします。

proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'の記述がある事で、 R8(圧縮・難読化ツール)が間違って削除しないように、削除してほしくないコード等のルールを記述します。

package – 【AndroidManifest.xml】

manifestタグのpackage属性は、相対パスでしか使用されないので削除する事が推奨されています。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="jp.co.confrage.xxx.yyy" >

  <application
    <provider
      android:name=".HogeProvider"
↓
<manifest xmlns:android="http://schemas.android.com/apk/res/android">

  <application
    <provider
      android:name=".HogeProvider"

このようにpackage属性削除し、相対パスはnamespace指定されていればそのまま相対パスで書くことが可能になっています。

リソース参照 – 【AndroidManifest.xml】

よく使われるリソース参照です。

@string/xxx

@string/xxx・・・res/values/配下のファイル内のresourcesタグ内のstringタグのname属性=xxxの値

res/values/strings.xml

<resources>
  <string name="app_name">マイアプリ</string>
  <string name="welcome_message">ようこそ!</string>
</resources>

@string/app_name・・・マイアプリ
@string/welcome_message・・・ようこそ!

@drawale/xxx

@drawalbe/xxx・・・res/drawable/配下の.png,.jpg,.xmlファイル。

<users-sdk>タグ – 【AndroidManifest.xml】

<uses-sdk>タグは以下などを指定します。

<uses-sdk
  android:minSdkVersion="21"
  android:targetSdkVersion="24" />

最近はこの記述はせずにbuild.gradleの方にminSdkVersion,targetSdkVersionを記述するのが一般的です。

<provider>タグ – 【AndroidManifest.xml】

<provider>タグは、ContentProviderをAndroidシステムに登録する設定です。

他アプリや自アプリからContentResolver経由でデータアクセスできるようにします。

<provider
  android:name=".HogeProvider"
  android:authorities="${applicationId}.hogeprovider"
  android:enabled="true"
  android:exported="true" />

android:name

ContentProviderの実装クラスであるHogeProviderを指定します。

${applicationId}は、build.gradleのapplicationIdを参照しています。

android:authorities

ContentProviderの識別子(同一端末でユニーク)を指定します。

ContentResolverからアクセスする際にこの識別子が必要になります。

Uri uri = Uri.parse("content://jp.co.confrage.xxx.yyy.hogeprovider");

android:enabled

ContentProviderを有効にする場合、trueにします。通常trueです。

android:exported

他アプリ(他APK)からアクセス可能にする場合、trueにします。不可の場合、falseにします。

Android12以降は明示が必須です。

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました