HOME
  Security
   Software
    Hardware
  
FPGA
  CPU
   Android
    Raspberry Pi
  
nLite
  Xcode
   etc.
    ALL
  
LINK
BACK
 

2020/10/31

Androidのアプリ開発で AAR形式のライブラリを Androidプロジェクトに組み込む方法 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プロジェクトに組み込む方法
AARライブラリのソースリストそのものを Androidプロジェクトに組み込む方法


AARライブラリのソースリストそのものを Androidプロジェクトに組み込む方法


AARライブラリのソースリストそのものを Androidプロジェクトに組み込む方法


AARライブラリのソースリストそのものを Androidプロジェクトに組み込む方法


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年経ってデータ バインディングの俺的カンニング帳を作る
AACの記事から1年経ってデータ バインディングの俺的カンニング帳を作る

  Android開発 データ バインディング 虎の巻 Android Studio

Android JNI NDKの C言語側で R.rawや Assetのファイルを FileDescriptor経由で直接読み込む方法
Android JNI NDKの C言語側で R.rawや Assetのファイルを FileDescriptor経由で直接読み込む方法

  Android JNIの C言語で FileDescriptor経由でダイレクトに rawリソースを読み込む、メモリ受け渡しやダミーファイル作成が不要

Kotlin大嫌い人間が Kotlin言語を必死に勉強する
Kotlin大嫌い人間が Kotlin言語を必死に勉強する

  行末にセミコロン;の無い言語は大嫌い

2019年になったから Android Architecture Componentsで開発しようじゃないか!今から始めても遅くない!
2019年になったから Android Architecture Componentsで開発しようじゃないか!今から始めても遅くない!

  Androidの開発で AACって何? DataBinding、LiveData、ViewModel、LifecycleObserverについて解説

Androidアプリ作成に必須の多端末に対応するデザイン方法について解説する dipを極める
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/