1

AndroidフォンでADB経由でROMをフラッシュするためのC++実行可能ファイルを作成したいのですが、これについて誰か助けてもらえますか? C++ の基本的な知識はありますが、どこから始めればよいか理解できません。ロジックは、ヘッダー ファイルの初期化 -> ADB サービスの初期化 -> ADB シェルの開始 -> flash_image バイナリを使用して .img ファイルをフラッシュします -> ADB の再起動です。

ブートイメージをフラッシュする簡単な例を誰か教えてもらえますか? どのヘッダー ファイルをインクルードすればよいか、どのコンパイラを使用すればよいかわかりません。何も見つからなかったので、新しいスレッドを作成しました

ありがとうございました

4

1 に答える 1

1

adbは ROM のフラッシュとは何の関係もありません。adb はデバッガー インターフェイスであり、システムを起動して携帯電話で実行する必要があります。また、完全に実行されているシステムで ROM イメージを再フラッシュしようとすることは、麻酔なしで心臓手術を行うようなものです。

ROM イメージを正しく再フラッシュするには、次の 2 つの基本的な方法があります。

  1. update.zip
  2. ファストブート

前者は、ROM イメージをupdate.zipとして SD カードにコピー/ダウンロードし、リカバリを使用してシステムを更新する場合です。これには通常、ユーザーがいくつかのボタンを押して、電話機の電源をオフにしてから再度オンにする必要があります。更新ファイルはすでにSDカードに安全に保存されており、チェックして検証することができ、電話をブリックする可能性はほとんどないため、これが最善の方法です.

2 つ目は、携帯電話を PC に接続し、「adb reboot bootloader」を使用して fastboot モードに切り替え (または、オフ/オンに切り替えていくつかのボタンを押し続ける)、fastbootを使用して ROM 更新マジックを実行する場合です。問題は、fastboot を使用する場合、非常に信頼性の高い USB 接続が必要なことです。通信エラーが発生し、電話がブロックされます。これが、私が ROM の再フラッシュに fastboot メソッドを使用せず、推奨しない理由です。

fastboot メソッドを使用して携帯電話をブリックすることを気にしないのであれば、C++ プログラムは非常に単純です。

  1. ROMイメージをどこかに解凍します(プログラム内にパックしている場合)
  2. exec() または system() 呼び出しを発行して、「adb reboot bootloader」を実行し、次に「fastboot flash*」コマンドを実行し、最後に「fastboot reboot」コマンドを実行します
  3. すべてを正しく実行した場合 (adb と fastboot の出力をキャッチして処理し、結果を確認します)、デバイスが再フラッシュされ、再起動されます。

最後に、もう一度強調したいのですが、fastboot を使用して ROM を再フラッシュすることは非常に危険であり、可能であれば避けることをお勧めします。

于 2012-04-19T02:45:08.477 に答える