こんにちはありますことを習いたいどのように作カスタムRom Android端末やコンパイRomからのソースです。 だから細かく私は皆のための素晴らしいガイドと一緒に戻っています。 そのガイドでは、pcなしでAndroid携帯用のカスタムRomを構築する方法をお教えします。 はい、あなたはpcなしで構築することができます。 私たちはあなたのAndroid携帯電話のための任意のカスタムRomを構築するために私たちの偉大なスマー だから、ソースからRomをコンパイルしたい場合は、ステップバイステップガイドに従う必要があります。 だから時間を無駄にせずに始めましょう。
AndroidカスタムROMとは何ですか:
Android ROMは、GoogleのAndroidプラットフォームに基づいて、携帯電話のファームウェアにあります。 Androidはオープンソースであり、すべての開発者は、ソースコードを編集し、それを再コンパイルし、デバイスの多種多様のために再リリースすることができます理由 ユーザーは、デバイスの外観や動作を変更するためにRomをインストールすることができます。 すべてのカスタムRomは、Androidコミュニティ、純粋に改造のための情熱のうち、これを行うコア開発者の主なグループによって開発されています。 これは、ほとんどが絶対に無料であることを意味します。 カスタムRomは、Android携帯電話、タブレット、メディアプレーヤー、smartwatchesとAndroidを実行しているデバイスのほぼすべてのタイプのために利用可能です。
Android携帯を購入すると、”stock ROM”または”stock firmware”が付属しています。 これは、オペレーティングシステムのプレインストールされたバージョンになります。 このROMには、電話機の製造元によって定義されている機能が制限されています。 カスタムROMを点滅させることにより、余分な機能のロックを解除し、時にはパフォーマンスを向上させることができます。
要件PCなしでソースからRomをコンパイルするには:
私たちは、私たちのAndroidデバカスタムRomを構築するには、Ubuntu16.04サーバーが必要です。 毎回Ubuntu16.04サーバーを使用しているためです。 AWS、Google cloud platform、Microsoft Azure、サーバーを提供するより多くのwebサイトからサーバーを取得します。 AWSまたはGoogle cloud platformsを使用することをお勧めします。 彼らは無料トライアルを提供します。 あなたはそのウェブサイトに登録する必要があります、そして今、あなたはあなたのサーバーを起動するのに夢中です。 より多くの情報のために、それをGoogleで検索してください。Ubuntu16.04サーバーには、次のものが必要です。
RAM4GB以上。<146>ストレージ:200GB?+
(2) GitHubとLinuxのコマンドに精通しています:
GithubとLinuxのコマンドについていくつかの知識が必要です。 あなたがそれを知らない場合は、フォントの心配は、私はあなたにその記事でいくつかの基本をお教えします。 しかし、あなたがプロのように学びたいのであれば、それをGoogleで検索してください。
(3)任意のandroid携帯電話が必要:
Romをコンパイルするために任意のandroid携帯電話を使用することができます。
(4)必要なデバイスソース:
すべてのカスタムRomまたはデバイスソースからの任意のストックROMビルド。 私たちは深く話すことはありません。 デバイスソースについて知る必要があるだけです。 そのデバイスソースでは、3つのツリーが必要です。
デバイスソース:
デバイスツリー。
カーネルツリー。
共通ツリー(すべてのデバイスではありません)
カスタムRomを構築するには、上記のツリーが必要です。 すべてのデバイスには、特定のデバイスソースがあります。
(5)Romソース:
インターネット上で利用可能なカスタムRomがたくさんあります。 Lineage os、aosp extended、pixel experience、dot os、aokp、superior os、Syberia projectなどのように。 任意のromを選択し、GitHubからソースを取得します。
(6)ダウンロード:
このアプリは、Android上でSSH経由でサーバーを接続するのに役立ちます。
あなたのAndroid携帯電話のための任意のカスタムRomを構築する方法! PCなしでソースからRomをコンパイルする
最後に、みんな、私たちはソースからromをコンパイルしようとしています。 私たちは、私たちのデバイスのソースからlineage osをコンパイルしようとしています。 Xiaomi mi Max2携帯電話を使用して、ソースからlineage os pie romを構築しています。 したがって、すべての手順はすべてのデバイスで似ています。 だから時間を無駄にせずに始めましょう。
(1)Aws(Amazon Web Service)でUbuntu16.04サーバーを作成する:
Amazon Web Services(AWS)でアカウントを作成するだけです。 ライセンス認証後、インスタンスを起動する準備が整いました。 まず、AWSダッシュボードに移動します。 サービス/EC2/インスタンスの起動/Ubuntu16.04LTSを選択します。 その後、8cpu32GB RAMインスタンスをクリックします。 [次へ:インスタンスの詳細の設定]をクリックします。 今は何も設定する必要はありません。 次へ:ストレージの追加をクリックするだけです。 ここでは、サイズ(GB)が表示されます。 デフォルトでは8GBです。 だからあなたは200GBでそれを変更する必要があります。 今すぐクリックしてください次:タグを追加します。 必要に応じて任意のタグを追加します。 その後、[次へ]をクリックします:セキュリティグループを設定します。 あなたはSSHグループを取得するので、ソースタブカスタムをどこにでも変更するだけです。 今すぐレビューと起動をクリックしてください。 今、あなたは起動ボタンをクリックする必要があります。 キーペアを要求します。 これらすべてのことをやっている場合は、新しいキーペアを作成するだけです。 お使いのpcや携帯電話にそのキーペアをダウンロードすることを忘れないでください。 私のキーペアの名前はRoshanです。ペム インスタンスを起動した後、dashboard/services/EC2/instanceにパブリックIpを取得します。 パブリックIPアドレスをコピーします。(2)AndroidでUbuntu16.04サーバーをSSH経由で接続します:
上記のリンクまたはGoogle playストアからJuiceSSH–SSHクライアントアプリをインストールする必要があります。
接続するには3つのものが必要です。
- パブリックIPアドレス。
Android上でJuiceSSH–SSHクライアントアプリを開きます。 接続に移動します。 新しい接続を作成するには、▲プラスアイコンをクリックします。 以下のように設定します:
ニックネーム:任意
うん:SSH
アドレス:あなたのパブリックIpを入れて
Id:新しい追加。
idで以下のように入力します。
ニックネーム:任意の
ユーザー名:ubuntu
秘密鍵:キーペアを選択します。
保存します。 これで、インスタンスがAndroid携帯に接続されます。 接続タブからUbuntu16.04サーバーを開きます。 端末を開きます。 完了インスタンスを使用する準備が整いました。
サーバーを作成&SSHビデオチュートリアル(ヒンディー語)を使用して接続します。
(3)ROMをコンパイルするためのビルド環境の設定:
カスタムRomをビルドするためには、いくつかのパッケージをインストールする必要があります。 そのため、コマンドを1つずつコピー&ペーストしてenterキーを押す必要があります。 #linesはコマンドの説明なので、コピーしないでください#lines
#スーパーユーザアクセスを取得します。
sudo su
#JDKをインストールします(enterを2回押します)。
add-apt-repository ppa:openjdk-r/ppa
#すべてのパッケージを更新します。
apt-get update
#より多くのパッケージをインストールします。
apt-get install bison build-essential curl ccache flex lib32ncurses5-dev lib32z1-dev libesd0-dev libncurses5-dev libsdl1.2-dev libxml2 libxml2-utils lzop pngcrush schedtool squashfs-tools xsltproc zip zlib1g-dev git-core make phablet-tools gperf openjdk-8-jdk -y
# become a normal user.
exit
# creating a bin folder.
mkdir ~/bin
PATH=~/bin:$PATH
cd~/bin
curlhttp://commondatastorage.googleapis.com/git-repo-downloads/repo>~/bin/repo
chmod a+x~/bin/repo
git clonehttps://github.com/akhilnarang/scripts.gitスクリプト
cdスクリプト
bash setup/android_build_env.sh
Doneこれで、インスタンスはソースからRomをコンパイルする準備ができました。 私のXiaomi Mi Max2(酸素)用のlineage os16.0pie romをコンパイルします。
ビルド環境の設定ビデオチュートリアルパート2(ヒンディー語)。
(4)Githubアカウントを作成します:
Guys PcなしでソースからRomをコンパイルしたい場合は、Githubに関する詳細情報を取得する必要があります。 あなたはGoogleから情報を得ることができます。 しかし、あなたはGitHubの上にアカウントを持っている必要があります。 だからに行くgithub.com そして、あなたの新しいアカウントを作成します。 すでにアカウントをお持ちの場合は、古いアカウントを使用してください。 私たちはあなたのGithubを必要としました:手紙の使用のためのユーザー名と電子メールアドレス。(5)ROMソースのクローンまたはダウンロード:
最後に、lineage os16.0ROMソースをサーバーにダウンロードします。 あなたがしたい場合は、お気に入りのRomソースを使用することができます。 ソースをダウンロードするには、まず次の手順を実行し、サーバーに以下のコマンドをコピー&ペーストします。
#Romフォルダを作成します。
mkdirルーム名
(私はlinageフォルダを作成しているので、私のコマンドはmkdir lineageです)
#ROMフォルダに移動します。
cd lineage
(lineageをフォルダ名に置き換えます)。
#あなたのGithubアカウントを接続します。
git config–グローバルユーザー。メール”EMAIL”&&git config-global user.name “ユーザー名”
(メールを削除してメールを入れてください。 ユーザー名を削除し、ユーザー名を入力します。 このように:
git config-global user。メール””&&git config–グローバルユーザー。名前”MaheshTechnicals”
あなたはいくつかのGithubのコマンドを理解する必要があります。
git clone–git cloneコマンドGitHubからリポジトリをダウンロードするために使用します。Branch(-b)–brachは、使用するbrachに定義されています。 パイbrach、オレオbrach、アンドロイドQ brachなどのように。
#lineage os16.0ソースを初期化します。
repo init-u git://github.com/LineageOS/android.git-b lineage-16.0
#ソースを同期またはダウンロードします。
repo sync
repo syncの後、ソースをダウンロードするのに多くの時間がかかります。 ソースは30-40GBのようなサイズが大きいためです。 だから、その停止のダウンロードまで待ちます。
ROMソースチュートリアルパート3(ヒンディー語)をダウンロードします。
(6)デバイスソースとは:
Romソースをダウンロードした後。 今、あなたはGoogleからあなたのデバイスコード名を知る必要があります。 デバイスのコード名を確認する方法がわからない場合。 ちょうどあなたのデバイス名のコード名のようにそれをgoogle。 Xiaomi MI Max2のコード名のように。 だから私の場合、私のxiaomi MI Max2デバイスコード名はoxygenです。 コード名が必要です。 次に、デバイスソースを複製する必要があります。 カーネルツリー、デバイスツリー、ベンダーツリーのように。 XdaまたはGitHubからデバイスソースを見つけることができます。 だから、最初にあなたの背の高い木を見つけます。 お使いの携帯電話が利用可能な任意のカスタムromを持っている場合は、そのxdaのポストに移動します。 そこには、[ソース]タブにデバイスソースが表示されます。
Githubの検索バーでデバイスソースを検索することもできます。 私は私のxiaomi Mi Max2酸素のためのデバイスツリーが欲しいように。 だから私はそのように検索するつもりです:デバイスツリーの
:カーネルツリーの
device_xiaomi_oxygen
:
Kernel_Xiaomi_Oxygen
または
Kernel_Xiaomi_Msm8953
(msm8953は私のデバイスチップセットです。 だからあなたは違うかもしれません。 だから、googleそれあなたのデバイスのチップセット)。
ベンダーツリーの場合:
Vendor_Xiaomi
または
Vendor_Xiaomi_Oxygen(時には)。
共通ツリーの場合:
device_xiaomi_msm8953-common
このツリーがデバイスで利用可能な場合。 次に、このツリーも使用する必要があります。 だから問題は、共通のツリーが私のデバイスで利用可能であるかどうかをどのように知っているかです。. だから簡単なのは、あなたのデバイスツリー/romに行くことです。依存関係ファイル。 そのファイルを開きます。 そのファイルに共通のツリーが表示される場合。 そのため、そのツリーも複製する必要があります。 そうでない場合は、それを生きています。
お使いのデバイスのソースを見つけることを願っています。 今、私たちはそのような私たちのデバイスソースをクローンしようとしています。 ツリーをクローンする形式:
git clone URL-b BRANCH PATH
URL:ソースURLを入力します。
BRANCH:ツリーからブランチ名を選択します。
パス:サーバー内のソースを複製します。
(7)デバイスのソースを複製する:
今、ソースを複製します。 したがって、xiaomi Mi Max2のような同じデバイスを構築している場合は、何も変更せずにこれらのコマンドを使用できます。 別のデバイスを使用している場合は、デバイスのソースURL、ブランチ、およびパスを使用します。Romフォルダにいることを確認してください(私の場合はlineageです)。 Romフォルダにない場合は、cdコマンドを使用してください。
cdリネージュ
#デバイスツリー。
git clonehttps://github.com/MaheshTechnicals/android_device_xiaomi_oxygen.git-b pixel device/xiaomi/oxygen
時々それはあなたの木に従っています。
git clonehttps://github.com/MaheshTechnicals/android_device_xiaomi_oxygen.git-bピクセルデバイス/xiaomi
#カーネルツリー。
git clonehttps://github.com/MaheshTechnicals/Kernel_xiaomi_oxygen-b lineage-16kernel/xiaomi/msm8953
#ベンダーツリー。
git clonehttps://github.com/MaheshTechnicals/android_vendor_oxygen-b lineage vendor/xiaomi
時々それはあなたの木に従っています。
https://github.com/MaheshTechnicals/android_vendor_oxygen-b系統/xiaomi/oxygen
#共通ツリー。
git clonehttps://github.com/rakeshraimca/android_device_msm8953-common-b havoc-新しいデバイス/xiaomi/msm8953-共通
完了しました。 これで、すべてのデバイスソースが複製されます。 今、私たちは次のステップのために動いています。
デバイスソースのダウンロードビデオチュートリアルパート4(ヒンディー語)。
(8)Romの起動またはデバイスツリーの固定 :
GuyのRom+デバイスソースが正常に複製されました。 しかし、今、私たちはRom bringupをやろうとしています。 簡単に言えば、デバイスソースをROMソースに接続します。 そのためには、デバイスツリー内のいくつかのファイルを変更する必要があります。 だから、最初のRomフォルダからのコマンドを使用して、デバイスツリーに移動します。
#デバイスツリーフォルダに移動します。
cdデバイス/xiaomi/oxygen
#私たちが持っているファイルとフォルダ。
ls
たくさんのファイルとフォルダが表示されます。 しかし、我々は唯一の5つのファイルを変更する必要があります。 では、どのファイルを変更する必要がありますか? ここにリストされている :
rom_oxygen.mk
vendorsetup.sh
AndroidProducts.mk
#最初のファイルから始めましょう。 Romの名前を変更する必要があります。あなたの部屋の名前への依存関係ファイル。依存関係。 ファイルとフォルダの名前を変更するには、mvコマンドを使用します。 私の場合、私はlineage osを構築しているので、コマンドはそうです。
依存関係の系統。
#rom_oxygen.mk あなたのROMに応じて名前を変更します。
rom_oxygen.mk lineage_oxygen.mk
Romによると、pixel experience Romのように変更され、aosp_oxygenのように名前が変更されます。mk
これは他のデバイスの公式デバイスソースから参照できます。 Lineage osデバイスツリーの変更を知りたい場合は、lineage device gitのようにGoogleで検索してください。 任意のデバイスツリーを参照します。
#作成または変更vendorsetup.sh ファイル。
ナノvendorsetup.sh
#そのファイルを開きます。 あなたが持っている場合はすべての行をクリアし、以下からいくつかの行を追加します:
add_lunch_combo rom_codename-userdebug
Romをlineageに置き換えます(Rom名に応じて)。 コード名をデバイスのコード名に置き換えます。 私の場合のように、私のコマンドは
add_lunch_combo lineage_oxygen-userdebug
#Saveですvendorsetup.sh ファイル。 あなたが押す必要があります:
CNTRL+O
ENTER
CNTRL+X
#AndroidProducts.mkこのファイルを開く必要があります。
ナノAndroidProducts.mk次のようにRom名とデバイスコード名に置き換えます。
PRODUCT_MAKEFILES:=\
/(LOCAL_DIR)/lineage_oxygen.mk
#保存AndroidProducts.mk ファイル。
CNTRL+O
ENTER
CNTRL+X
#ここで、いくつかの行を変更する必要がありますlineage.mk ファイル。 オープンlineage.mk ファイル。
真野lineage_oxygen.mk次のようにRom設定ファイルとRom名に置き換えます。
$(inherit-product、vendor/lineage/config/common_full_phone.mkを呼び出します)
#その行のRom名を変更します。
PRODUCT_NAME:=lineage_oxygen
#Save lineage.mk ファイル。
CNTRL+O
ENTER
CNTRL+X
Doneデバイスツリーが修正されました。 だから今、あなたのデバイスツリーが適切にあなたのRomソースに接続されています。 これで、最初のRomを構築する準備が整いました。
お使いのデバイスツリーのビデオチュートリアルパート5(ヒンディー語)を修正します。
(9)ROMをビルドまたはコンパイルする:
これらのすべての手順の後、PCなしでソースからRomをコンパイルする準備が整いました。 だから、みんな、のは、構築を開始したり、Romのコンパイルを開始してみましょう。 ただ、コマンドに従ってください。
#最初にそのためのRomフォルダに移動します。
cd
cd lineage
#ビルドスクリプトを実行します。
. build/envsetup.sh
#キャッシュを実行します。
export USE_CCACHE=1&&ccache-M50G&&export CONFIG_STATE_NOTIFIER=y&&export SELINUX_IGNORE_NEVERALLOWS=true
#お使いのデバイスをランチします。 このようなあなたのデバイスのコード名で。
ランチlineage_oxygen-userdebug
#お使いのデバイスをブランチ。 そして、あなたのデバイスのコード名を入れて鉱山はそう酸素です。
brunch oxygen
OR
make bacon
お使いのデバイス用のRomのコンパイルが開始されます。 Romを構築するには2-3時間かかります(サーバーのCPUとRAMに完全に依存します)ので、100%まで待つ必要があります。
その6(ヒンディー語)をコンパイルします。
(10) これらのエラーを修正する方法:
あなたのRomの建物がいくつかのエラーを取得することによって停止した場合は? そのため、最初にそのエラーを修正してから再度コンパイルする必要があります。 あなたには、いくつかのエラーを取得している場合。 その後、いくつかのエラー行と修正するためにGoogleでそれを検索することをcuppy。 その後、それが修正されます。 ほとんどすべてのエラーと解決策は、Googleから取得しますので。 修正とエラーの後、あなたは再び構築を開始するために従う必要があります。
あなたが本当にGoogleで検索しても解決策が得られない場合。 その後、私はあなたにいくつかの電報グループを与えます。 そこにあなたの質問をしなさい。 彼らは間違いなくあなたを助けます。
:
Android ROM開発
Androidビルドヘルプ
Mahesh Technicals私のグループ。
#最初にそのためのRomフォルダに移動します。
cd
cd lineage
#ビルドスクリプトを実行します。
. build/envsetup.sh
#キャッシュを実行します。
export USE_CCACHE=1&&ccache-M50G&&export CONFIG_STATE_NOTIFIER=y&&export SELINUX_IGNORE_NEVERALLOWS=true
#お使いのデバイスをランチします。 このようなあなたのデバイスのコード名で。
ランチlineage_oxygen-userdebug
#お使いのデバイスをブランチ。 そして、あなたのデバイスのコード名を入れて鉱山はそう酸素です。
または
ベーコン
をGoogleドライブにアップロードします。
コンパイルに成功しました。 ROM zipファイルをGoogleドライブアカウントに転送する必要があります。 そのためには、Gmailアカウントが必要です。 誰もこの世界でそれを持っていない場合、私はそうは思いません。 しかし、あなたがそれを持っていなかったなら、それをGoogleドライブのウェブサイトから作成してください。
OKだから今、私たちはあなたのgoogleドライブアカウントに私たちの最初のlineage os Romをアップロードする準備ができています。 だから、コマンドに従ってください。
#ホームディレクトリに移動します。
cd
#Googleドライブを設定します。
https://docs.google.com/uc?id=0B3X9GlR6EmbnWksyTEtCM0VfaFE&export=download
# gdriveに名前を変更します。
id\=0b3x9glr6embnwksytetcm0vfafe gdrive
#権限を設定します。
chmod+x gdrive
#ドライブパッケージをインストールします。
sudo install gdrive/usr/local/bin/gdrive
#リンクを取得します。
gdrive list
そのコマンドの後、端末に認証リンクが表示されます。 そのリンクをコピーして任意のブラウザに貼り付けます。 そのリンクをchromeブラウザに貼り付けます。 彼らはそこにあなたのGoogleアカウントを接続するように求められます。 だからちょうどあなたのGoogleアカウントをクリックしてください。 その後、彼らはあなたに確認コードを与えますそのコードをコピーし、あなたの端末に貼り付けて、enterキーを押します。
完了しました。 これで、GoogleドライブアカウントがUbuntuサーバーに接続されました。 今、私たちは私たちのRomファイルをアップロードしようとしています。
#Romのzipファイルに移動します。 コード名に置き換えます。Cd lineage/out/target/product/oxygen
ls
#Romファイル名を見つけます。 ROM zipファイルをドライブにアップロードします。 Romを交換します。Romファイル名にzipします。
zip
完了ROMのzipファイルがGoogleドライブにアップロードされます。 だから今、あなたのGoogleドライブアカウントまたはGoogleドライブアプリに移動します。 端末でドライブを接続するために使用したのと同じ電子メールIDでログインします。 だからそれからダウンロードして、あなたのRomファイルをテストします。
端末を介してANDROIDファイルホスト(AFH)サーバーにROMをアップロードします:
あなたが開発者であれば、あなたはAFHについての知識を持っている必要があります。 Androidのファイルホストは、あなたのプロジェクトや他のもののためのクラウドストレージを提供します。 あなたがアップロードし、他の人とあなたのプロジェクトを共有したいのであれば、あなたは無料でそのサービスを使用することができます。 細かく私たちはあなたの友人と共有するために私たちのカスタムRom Radyを持っています。 だから今、私たちは端末を介してAFHサーバーにROMファイルをアップロードしようとしています。 始めよう
(1)まず、アカウントを作成しますandroidfilehost.com.
(2) 今、開発者のアクセスのための電子メールを介してそれらを要求します。 彼らは電子メールを介して通知されます。
(3)開発者アカウントを取得する場合。 今、私たちはFTPアクセスが必要です。 ただ、再び電子メールを介してそれらに連絡し、FTPアクセスのための要求。 それは2-3日かかります。
(4)2-3日後にお知らせします。 彼らはあなたのFTPの詳細を次のように送信します:
FTPサーバー: uploads.androidfilehost.com FTPユーザ名:xxx
FTPパスワード:xxx
FTPポート:21
SFTPポート:23
その詳細を保存します。
(5)まず、Romファイルが存在するディレクトリに移動します。 主にアウト/ターゲット/製品/酸素にあります。 これで、FTP経由で端末を使用してAFHにファイルをアップロードする準備が整いました。 あなたはそれのためのコマンドが必要です。 以下のコマンドを参照してください。
curl–ftp-pasv-T FILENAME ftp://USERNAME:
注:例
ファイル名のように、詳細に応じていくつかの行を置き換える必要があります: Romファイルの名前(AospExtended-v6.7-oxygen-20191206-1340-非公式だzip)
ユーザー名:FTPユーザー名をここに置きます。
パス:FTPパスワードを入力します。
(6)あなたの詳細に応じて上記のコマンドを変更した後。 Enterキーを押すだけです。 RomがAFHでアップロードを開始します。 完了するまでに1-2分かかります。
(7)今すぐAFHアカウントに移動します。 アップロードしたファイルをFTPセクションからインポートします。 これで、RomファイルはAFHにあります。 お使いのデバイスコミュニティまたはxda上でROMファイルを共有します。
Pythonバージョンの更新 :
彼らはRomを構築しようとすると、多くの人々が問題に直面しています。 これはpython3ではサポートされなくなりました。 それでは、それを更新してみましょう。
(1)まず、python ppaをインストールする必要があります。
$ sudo add-apt-repository ppa:deadsnakes/ppa
(2) 次のステップは、すべてのパッケージを更新することです。
$ sudo apt-get update
(3) 次に、python2を3にアップグレードします。 3.7をインストールする前に、以下のコマンドを実行してpython3.6をインストールする必要があります。
$ sudo apt-get install python3.6
$ sudo apt-get install python3.7
(4) 次に、次のコマンドを実行してpipをインストールします。
$ sudo apt install python3-pip
(5) priorityをpythonに設定します。
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.6 1
$ sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.7 2