[Android] 029. Android Libraryプロジェクト

他の項目で流用する機能をAndroid LibraryにしてGitHubにあげてみました
その流れの覚書です

Android Libraryプロジェクト作成

まずNew ProjectでEmpty Activityを作成します

Android StudioのメニューのFile – New – New ModuleでAndroid Libraryを選択してAndroid Libraryプロジェクトを作成します

Empty Activityは不要なので(project)/appフォルダを削除します

settings.gradle.ktsからappを削除します(※コメントアウトではなく削除してください)

//include(":app")

不要な依存関係があったら削除します
ここではcom.android.applicationを削除しました(※コメントアウトではなく削除してください)
またマテリアル系も使わないのであれば削除してよいでしょう

plugins {
    //alias(libs.plugins.com.android.application) apply false
}

バージョン設定

Android LibraryではBuildConfigでversionName/versionCodeの指定ができません
バージョン管理上設定したいので以下のように対応してみました

正しい方法かは不明ですがこれでProject Structureからでも指定できるようになります

private var versionName: String = ""
private var versionCode: Int = 0

android {
    defaultConfig {
        versionName = "1.0.0"
        versionCode = 1
    }
}

.aar出力

Build VariantsでActive Build Variantをreleaseにしてリビルドしてください
(Project)/(Module)/build/outputs/aarに(Module)-release.aarが出力されます

.aarは(Project)/(Module)/libsに置いて使用します
個別に指定してもよいですがフォルダ全体を読み込む指定が楽です
.aarを置き換えても反映されない場合は一旦プロジェクトを閉じて.gradleと.ideaフォルダを削除してからプロジェクトを開き直してリビルドで解決すると思います

dependencies {
    implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
}

他の.aarを使用する場合

libsフォルダに.aar置いてimplementation(fileTree(mapOf(“dir” to“libs”, “include” to listOf(“*.jar”, “*.aar”))))を指定した場合以下のエラーとなります

Direct local .aar file dependencies are not supported when building an AAR. The resulting AAR would be broken because the classes and Android resources from any local .aar file dependencies would not be packaged in the resulting AAR. Previous versions of the Android Gradle Plugin produce broken AARs in this case too (despite not throwing this error). The following direct local .aar file dependencies of the :PokeApi project caused this error: ....aar

調べてみると色々対応方法があるっぽいですが以下のようにimplementationをcompileOnlyに変えてコンパイル時のみにするだけで良いです

dependencies {
    compileOnly(fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
}

Android Studio Giraffe 2022.3.1 Patch 1 built on August 17, 2023