- build.gradleとAndroidManifest.xml – 【Android Java】
- namespace – 【build.gradle】
- applicationId – 【build.gradle】
- minSdkVersion,targetSdkVersion – 【build.gradle】
- compileSdkVersion – 【build.gradle】
- sourceCompatibility,targetCompatibility – 【build.gradle】
- buildFeatures – 【build.gradle】
- lintOptions【build.gradle】
- buildTypes – 【build.gradle】
- package – 【AndroidManifest.xml】
- リソース参照 – 【AndroidManifest.xml】
- <users-sdk>タグ – 【AndroidManifest.xml】
- <provider>タグ – 【AndroidManifest.xml】
- 関連
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)ツールが動作し、アプリの最適化を行います。
- コード圧縮
- 難読化
- 最適化(最適化なしの場合、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以降は明示が必須です。

KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES20xx),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^

