一日に1時間くらいはトイレにこもる、ながれです。
今回は、Androidアプリから動的に外部ライブラリを参照する方法についてまとめました。
先に注意なのですが、ライブラリと言っても.jar形式のライブラリでのみ可能です。
(.aarのライブラリを動的に参照することは不可能です。方法ご存知の方は教えてください…)
また、確認したOSバージョンはAndroid5.0(Lollipop)だったと思うので
以降のOSで可能かどうかはわかりませんが、参考程度に見てください。

Androidアプリは静的に利用されることを想定している
出鼻を挫くようですが、基本的にAndroidアプリでライブラリのメソッドなどを参照するには
アプリの内部(.apk)にライブラリを含むことが基本となります。
→つまり、ライブラリを更新した場合はアプリと一緒にビルドする必要があるため、静的にしか参照できない
そのため、普通のやり方では無論動的にライブラリを参照することはできません。
ではどうすれば良いか?
Androidアプリから動的にライブラリを参照する方法
・ClassLoaderクラスを使用する
Android独自のクラスではなく、javaのクラスにClassLoaderというクラスが存在します。
こやつが動的に外部ライブラリのメソッドを参照することを可能とします。
名前の通り、クラスを読み込む役割を持ったクラスです。
(ClassLoaderクラスについての詳細は様々なブログで紹介されているので、そちらを参照してください)
大まかClassLoaderを使用して、動的に外部ライブラリを参照する方法は以下です。
1 . 使用したいjarファイルを準備
(自作の場合、Android StudioでmakeJarコマンドを使用してjarファイルを作ることが可能です)
2 . 1のjarファイル内のクラスファイルをDEX形式に変換
3 . 2のjarファイルをAndroid端末内に入れる
4 . 3のjarファイルを使用するアプリにClassLoaderクラスのメソッドを追加
5 . 4のメソッドを利用して、ライブラリのAPIを実行するコードを追加
6 . アプリのマニフェストに外部ストレージへのアクセス権限を許可する宣言を追加
7 . アプリ起動時などに6の権限許可ポップアップを表示するコードを追加
上記で動的に外部ライブラリを参照することが可能です。
次回は上記の手順の詳細について紹介します!