・2020/10/31
Androidのアプリ開発で AAR形式のライブラリを Androidプロジェクトに組み込む方法
(Androidプロジェクトに AAR/JAR形式のライブラリを組み込む方法のバリエーション)
Tags: [Android開発]
● 2020年も終わりに近づいたので Android AARをいじります
AAR(Android Archved Raiburary)を Androidプロジェクトに組み込む方法。
※ JAR(Java Archive Raiburary)ファイルも同様に組み込めます
Android ライブラリの作成
Raiburary(笑)
● AAR形式と JAR形式のライブラリの違い
AAR形式 = Android独自のリソースも含める事ができる
JAR形式 = Javaのコードだけ
Android ARchive(AAR)ファイルになります。
JAR ファイルとは異なり、AAR ファイルには Android リソースとマニフェスト ファイルを含めることができるため、Java クラスやメソッド以外に、レイアウトやドローアブルといった共有リソースにもバンドルできます。
● AAR形式のライブラリを Android Studioで作成する方法
Android Studioでは 4.1の現在も、IDEの操作で最初から「ライブラリ」を作る事ができません。
一旦、ダミーアプリを作成して、「ライブラリ」を New > New Module > Android Libraryするか、ダミーアプリを作成して、それにライブラリの内容を実装して、ライブラリに変換する(下記の「その4」)。と言う方法になります。
●その1 AARファイルを Androidプロジェクトに組み込む方法
・ app/build.gradle
dependencies {
implementation files('libs/hogehoge-release.aar')
}
・ app/libs/hogehoge-release.aar
app/libsに hogehoge-release.aarファイルをコピーする。
※ 慣習でライブラリファイルは libsのディレクトリにコピーする
●その2 AARファイルを Androidプロジェクトに組み込む方法
・ app/build.gradle
dependencies {
implementation(name:'hogehoge-release', ext:'aar')
}
repositories {
flatDir {
dirs 'libs'
}
}
・ app/libs/hogehoge-release.aar
app/libsに hogehoge-release.aarファイルをコピーする。
※ 慣習でライブラリファイルは libsのディレクトリにコピーする
●その3 ライブラリのソースリストそのものを Androidプロジェクトに組み込む方法
ライブラリのソースを都度ビルドするのでライブラリ自体のデバッグ時に便利。
・ settings.gradle
include ':HogeHogeLib'
include ':app'
rootProject.name = "HogeHogeApp"
・ app/build.gradle
dependencies {
implementation project(":HogeHogeLib")
}
・ ./HogeHogeLibディレクトリにライブラリの appの中身をコピー
HogeHogeLibディレクトリを作成して、HogeHogeLibディレクトリにライブラリのソース一式(プロジェクト丸々ではなく appディレクトリの中身を全部)をコピーする。
・AARライブラリのソースリストそのものを Androidプロジェクトに組み込む方法





●その4 既存のアプリを AAR形式のライブラリに変換する方法
com.android.applicationを com.android.libraryに書き換える。
applicationId行をコメントにする。
BuildConfig.APPLICATION_IDは参照できなくなる。
代わりに BuildConfig.LIBRARY_PACKAGE_NAMEで参照できる。
・ app/build.gradle
plugins {
// id 'com.android.application'
id 'com.android.library'
}
または、
// apply plugin: 'com.android.application'
apply plugin: 'com.android.library'
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
// applicationId "com.example.hogehoge"
minSdkVersion 14
targetSdkVersion 30
versionCode 1
versionName "1.0"
}
●組み込み元の AARの AndroidManifest.xmlと定義が重複する場合で、値が異なりエラーになる場合の対処方法
複数のマニフェスト ファイルをマージする
AndroidManifest.xml
解決方法: Merge rule markersを使う。
tools:replaceで重複定義する項目をカンマ区切りで指定する。
下記の例は android:iconと android:label
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.hogehogeapp">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
tools:replace="android:icon,android:label"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.HogeHoge">
Tags: [Android開発]
●関連するコンテンツ(この記事を読んだ人は、次の記事も読んでいます)
AACの記事から1年経ってデータ バインディングの俺的カンニング帳を作る
Android開発 データ バインディング 虎の巻 Android Studio
Android JNI NDKの C言語側で R.rawや Assetのファイルを FileDescriptor経由で直接読み込む方法
Android JNIの C言語で FileDescriptor経由でダイレクトに rawリソースを読み込む、メモリ受け渡しやダミーファイル作成が不要
Kotlin大嫌い人間が Kotlin言語を必死に勉強する
行末にセミコロン;の無い言語は大嫌い
2019年になったから Android Architecture Componentsで開発しようじゃないか!今から始めても遅くない!
Androidの開発で AACって何? DataBinding、LiveData、ViewModel、LifecycleObserverについて解説
Androidアプリ作成に必須の多端末に対応するデザイン方法について解説する dipを極める
Androidの開発で dipって何?密度非依存ピクセル?Density-Independent Pixels?って何者?
[HOME]
|
[BACK]
リンクフリー(連絡不要、ただしトップページ以外は Web構成の変更で移動する場合があります)
Copyright (c)
2020 FREE WING,Y.Sakamoto
Powered by 猫屋敷工房 & HTML Generator
http://www.neko.ne.jp/~freewing/android/android_aar_library/