問題タブ [android-d8]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
android - コマンドライン ツールを使用した Android ビルド
.apk
ソースコードからファイルがどのように構築されるかを理解しようとします。Android Studio またはコマンドgradlew
を使用すると、ビルドを簡単に行うことができます。Android Sdk は、.apk をビルドするために使用される複数のツールを提供します。それらのほとんどは、私が何をするかを知っています。
d8
: Javaバイトコードからdalvikバイトコードへ
aapt2
: リソースをコンパイルしてリンクします。このツールは、.apk
コンパイルされたリソースのファイルを作成します。R.java
(コード内のリソースを参照するためにも作成します。)
apksigner
: を受け取って.apk
署名します。そうしないと、Android デバイスにインストールできません。
zipalign
: の非圧縮データを整列します.apk
最後の 2 つのツールはapk
、すでにすべてのファイルが含まれている で使用されます。私が理解していないのは、コンパイルされたコードとコンパイルされたリソースがどのように組み合わされるかです? 以前aapt2
はパッケージ化が行われたものでしたが、Androids Documentationaapt
にも記載されていません。ただし、まだ Android Sdk build-tools にあります。新品にはパッケージングのオプションはありません。aapt
aapt2
では、問題は、.apk
ソース コードから完全なコードを作成するために、どのコマンド ライン ツールをどの順序で使用するかということです。ありがとうございました!
編集:私が探しているのは、コマンドラインで段階的に aが作成されるthisに似ています。.apk
答えだけが古いaapt
を使用していますが、これはもう使用されていないと思います。
編集 2:不足している情報を提供してくれたAllen Shawに
感謝します。でアプリをコンパイルできるようになりましたaapt2
。私の質問に対する答えは、単純にaapt2
出力と .zip を圧縮することでしたclasses.dex
。
android - Field が dex の注釈メンバー型として表示されるのはどのようなシナリオですか?
この議論が示すように、Java はプリミティブ、String、Enum、Array、および Annotation のみをアノテーション メンバー タイプとしてサポートしているようです:
Java アノテーション メンバーに使用できるタイプ
ただし、Android アート ランタイムでは、注釈を処理するときにField
サポートされるタイプがあります。Art はフィールド インデックスを読み取り、対応するオブジェクトを作成します。コードは次のとおりです。
JavaField
は注釈メンバー型としてサポートしていないため、どのシナリオField
で dex の注釈メンバー型として表示されますか? また、その製造方法は何ですか?
前もって感謝します!