LoginSignup
4
2

More than 1 year has passed since last update.

Jetpackの成り立ち

Last updated at Posted at 2022-03-22

書いたこと

  • Jetpackとは
  • Jetpack以前の開発
  • まとめ - 各パッケージについて
    • android
    • android.support
    • androidx

Jetpackとは

2018年 Google I/Oにて発表された、これまでの android.support ライブラリーを取り替えるだけでなく、アーキテクトに関する機能が追加された新たな ライブラリー群 です。

ドキュメントには、
開発者が、ベストプラクティスに従え、ボイラーコードを削減し、
各バージョンや機種を超えて動作するコードを書くことを手助けをする ライブラリー群 であると宣言しています。

公式HPでは、ドロイドくんがJetpackを背負っている。
Screen Shot 2022-03-22 at 22.51.21.png

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つのカテゴリに分類します。

Screen+Shot+2018-05-05+at+11.49.30+AMimage1.png
画像参照元

これによって、サポートライブラリで提供されていた機能は、android.supportパッケージ配下ではなく、androidxパッケージ配下に移動します。

各パッケージまとめ

パッケージ名 概要
android Android OSが提供する機能にアクセスするためのAPIを提供。標準SDKと呼ばれる。
android.support 新機能をアプリ側に組み込むことで下位互換性を提供してくれるライブラリ。別名、互換性ライブラリ。現在は、deprecatedとなり、今後サポートはされない
androidx Jetpackのライブラリ群が収められているパッケージ

参考書籍

4
2
1

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
4
2