LoginSignup
16
17

More than 5 years have passed since last update.

aar and apklib format

Posted at

Androidのライブラリプロジェクトのパッケージングにはapklibaarという二種類の規格が存在する。大きく分けるとこんな感じ。

  • apklib: maven-android-pluginでサポートしている規格。Google公式のものではなくサードパーティ製。
  • aar: GradleのAndroid Pluginと共に登場した規格。今ではこちらが主流。

Androidを始めたのがつい半年程前なので、その頃には既にaarがメインストリームになっていて、apklibって何ですか?という状態だった。ネットを調べてもapklibの情報が載っているページはあんまり無くて、しばらく理解できてなかった。

apklibの場合はMavenのビルド用にapklibを用意しつつ、Eclipseのローカルビルドの為にライブラリプロジェクトをcloneしてきて開発をしないといけない、つまりダブルメンテが発生するので割と最悪だと思う。一方でaarはそういう必要がないけど、Eclipseで取り扱う事ができないので個人で開発するにはいいけど会社でこれからaar一本で行きますみたいなのはまだ厳しかったりする。

ちなみに、Android Studio(IntelliJ)はapklibをいい感じに解凍してローカルでの依存関係を解決してくれるので便利。EclipseとAndroid Studioを併存させたいのであればapklibをしばらく使わざるを得ない。

内部構造がどうなってるのか気になったので調べてみた。両者とも実体はzipなのだが、微妙に内容が違った。

apklib format

+ AndroidGridViewCompatLib.apklib
  + src
  + res
  + AndroidManifest.xml
  + project.properties

aar format

+ AndroidGridViewCompatLib.aar
  + /AndroidManifest.xml (mandatory)
  + /classes.jar (mandatory)
  + /res/ (mandatory)
  + /R.txt (mandatory)
  + /assets/ (optional)
  + /libs/*.jar (optional)
  + /jni/<abi>/*.so (optional)
  + /proguard.txt (optional)
  + /lint.jar (optional)

apklibにはsrc/main/javaのソースディレクトリが含有されるけど、aarにはclasses.jarという形式で含まれるらしい。相互を一発変換できると便利なのだけど、formatをみる限り厳しそうだ。知見を持ってる方がいたらシェアして頂きたい。

参考

16
17
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
17