こんにちは、私はアンドロイドのソースコードとバイナリのそれぞれのコンパイルとデコンパイルについて専門家と議論したいと思います。デバイスで実行されているAndroid OSをデコンパイルし、ソースコードをインポートし、デバイスドライバなどの便利なアイテムを抽出し、後でそれを使用して同じデバイス(イメージ)にインストールできる他のバイナリをコンパイルすることもできますか?ただし、編集したソースを使用してください。
たとえば、Android 2.3.3がインストールされたSamsung AAAAがあり、うまく動作します。 Android 4.0.4があったらと思います。現在持っている画像(2.3.3)をソース(2.3.3)にデコンパイルできます。ドライバまたは他のソース要素を4.0.4のソースコードスニペットに関連付けて、新しいイメージ(2.3.3の一部のドライバと4.0.4の一部のソースコードを含むバイナリ)を作成し、そのイメージを使用してフラッシュします。デバイスサムスンAAAA。
多くの助けが可能でしょうか?ありがとうございます。
答え1
はい、いいえ。
はい、(通常)古いソースコードをインポートして新しいソースコードと組み合わせることができます。これは、例えばシアノモジュール(何よりも)しています。
いいえ、ビルドされたイメージをデコンパイルし、ソースコードを抽出し、その内容をそのまま新しいソースコードに入れて再コンパイルすることはできません。主に次のようなさまざまな理由で、状況はそれほど単純ではありません。
デコンパイルはコンパイルの逆過程ではありません。コード操作の一般的な方法は、ソースコードをコンパイルし、それを実行可能ファイル(またはライブラリ)にリンクすることです。 UNIXシステムでは通常非常に低い周波数最近保管されています)。デコンパイルは元のソースコード(追加データなし)を再現できず、代わりにバイナリの識別子を使用するアセンブリコードで終わります。 C 用語でおおよそ言うと、エクスポートされたオブジェクトが何であれ、名前は正しく指定されますが、オブジェクト
static
はそうではありません。コンパイラ(またはリンカの場合低温酸化イメージをビルドするときに使用される)は、関数内の一般的なステートメント部分では識別できないコードブロックです。API互換性。カーネルデバイスドライバのソースソースコードを使用しても、それを使用して変更を加えずに最新のカーネルでコンパイルできるという保証はありません。内部カーネル構造は、特に初期のAndroidカーネルが大幅にパッチされているために変更される可能性があります(つまり、通常のツリーとは大きく異なります)。
つまり、不可能ではありません。まず、CM(CyanogenMod)やその他の代替ROMを確認してください。同じ問題が発生した最初の人ではないかもしれません。それでも機能せずに十分な能力があるか、したい場合は、デバイスの元のカーネルソースコードを入手することをお勧めします。〜しなければならないどこかからアクセスでき、そうでない場合、会社は不快な訴訟を起こす危険があります)そのカーネルと最新のAndroidカーネルを出発点として使用します。また、代替ROMコミュニティまたはAndroid SEここよりも具体的な質問をする方が良いでしょう。