書いたこと
- Jetpackとは
- Jetpack以前の開発
- まとめ - 各パッケージについて
android
android.support
androidx
Jetpackとは
2018年 Google I/Oにて発表された、これまでの android.support
ライブラリーを取り替えるだけでなく、アーキテクトに関する機能が追加された新たな ライブラリー群 です。
ドキュメントには、
開発者が、ベストプラクティスに従え、ボイラーコードを削減し、
各バージョンや機種を超えて動作するコードを書くことを手助けをする ライブラリー群 であると宣言しています。
公式HPでは、ドロイドくんがJetpackを背負っている。
Jetpack以前の開発
標準SDK(androidパッケージ)時代 (2008 ~ )
通常アプリ開発では、OSに搭載された機能を呼び出していくことで開発が行われます。
これは画面の開発(アニメーションも含めて)においても同じです。
標準SDKは、これらAndroid OSが提供してくれる機能にアクセスするためのライブラリーです。
この標準SDKによって提供される機能は、android
パッケージ配下で提供されています。
例として画面を提供してくれるActivity
は標準SDKに含まれています。
// androidパッケージ配下にActivityが用意されている
import android.app.Activity;
public class SampleActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
つまりOSのバージョン毎によって、その機能が提供されているかどうかというのが非常に重要になってきます。
android.supportライブラリの登場 (2011 ~ 2018)
サポートライブラリの役割
アプリ開発においては、各バージョンに渡った開発が欠かせません。
そこでOSの新たな機能をアプリ側に組み込むことができるandroid.support
(サポートライブラリ)が提供されるようになりました。
これによって本来サポートされていないOSのバージョンにおいても、その新機能を使うことが出来ます。
こうしたことからandroid.support
ライブラリは、別名 互換ライブラリ とも呼ばれます。
例としてfragment
があります。
fragment
は、Android v3.0から導入された機能ですが、サポートライブラリをアプリ側に組み込むことで、v1.6(APIレベル4)以上のAndroid OSでもfragment
が使うことが出来ます。
例1. androidパッケージ配下のfragmentを使用する場合
Android OSに搭載されているFragment機能を使うため、v3.0以上のアプリに限られることになる。
// androidパッケージ配下のfragmentを使用する
import android.app.Fragment;
public class MyFragment extends Fragment {
public View onCreatedView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
例2. android.supportパッケージ配下のfragmentを使用する場合
アプリ側にfragment
機能を組み込むため、apkの容量が増大するが、v1.6以降のAndroid OSでもアプリを動作させることが出来る。
// supportパッケージ側のfragmentを使用する
import android.support.v4.app.Fragment;
public class MyFragment extends Fragment {
public View onCreatedView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
この際、アプリで使用する外部ライブラリーとしてサポートライブラリを追加する必要がある。
dependencies {
// サポートライブラリを追加する
compile 'com.android.support:support-v4:23.3.0'
...
}
サポートライブラリの主役化と肥大化
Android v5.0(2014)からマテリアルデザインが採用されたことによって、
サポートライブラリで提供される機能もより増大していきます。
またサポートライブラリーのみで提供される新機能(RecyclerViewなど)も登場します。
これによって一部でしか使われていなかったサポートライブラリは、本格的に主役となって使われるようになっていきます。
-
android.support.v4.*
-fragment
などをサポート -
android.support.v7.*
- マテリアルデザイン対応されたAppCompatActivity
などをサポート -
android.support.design.*
- マテリアルデザインをサポート - ...
v4, v7 について
ライブラリーのバージョンを表すのではなく、そのライブラリがサポートするAPIレベルを表している。
- v4 - APIレベル4(Android v1.6)以上で使えるライブラリ
- v7 - APIレベル7(Android v2.1)以上で使えるライブラリ
例: 標準SDKのActivityではなく、サポートライブラリー側のAppCompatActivity
を使用する場合
import android.support.v7.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
...
こちらを使うことによって、本来Android v5.0以上でしか利用できないマテリアルデザインが、v2.1以上のAndroid OS上のアプリでも適用される。
Jetpackの誕生 (2018 ~)
Jetpackは、このサポートライブラリと新たにArchitecutre Componentsを統合し、4つのカテゴリに分類します。
これによって、サポートライブラリで提供されていた機能は、android.support
パッケージ配下ではなく、androidx
パッケージ配下に移動します。
各パッケージまとめ
パッケージ名 | 概要 |
---|---|
android | Android OSが提供する機能にアクセスするためのAPIを提供。標準SDKと呼ばれる。 |
android.support | 新機能をアプリ側に組み込むことで下位互換性を提供してくれるライブラリ。別名、互換性ライブラリ。現在は、deprecatedとなり、今後サポートはされない |
androidx | Jetpackのライブラリ群が収められているパッケージ |
参考書籍
- 2010
- 2011
- はじめてのAndroidプログラミング入門 改訂版
- Androidプログラミング入門
- ゼロからのAndroidアプリケーション開発入門
- はじめてのAndroidプログラミング2
- Androidアプリケーション技術者ベーシック
- 2012
- 2013
- Androidプログラミングレシピ増補改訂版 アーキテクチャ/UI/ネットワーク編 - データフラグメントの解説がある
- 2014
- Effective Android
- Android Pattern Cookbook - 画面の開発手法が詳しく解説されており、今でも十分参考になる。マスターピース。
- 2015
- 2016
- 黒帯エンジニアが教えるプロの技術 Android開発の教科書 - サポートライブラリについて唯一詳細な解説がある
- Androidアプリ開発 パーフェクトマスター
- これ一冊でできる!Android Studio アプリ開発入門
- 初めてのAndroid 第4版
- 2018
- 2019
- 2020
- 作って学ぶ Androidアプリ開発
- スタートダッシュAndroid 〜アプリエンジニアの必須ノウハウをサクっと押さえる
- チームのスキルアップに役立つ Android開発テクニック - ktxを使った開発手法の紹介が為になりました
- Android Jetpackプログラミング Android Studio 4 + Kotlin対応 - 今の所Jetpackを使ったAndroidの開発手法で唯一といえる参考書