オンラインでAndroid APKファイルからアイコンを抽出する方法

Printed app-icon stickers laid out with a magnifying glass

インスピレーションを求めて探しているデザイナー、サムネイルをまとめているレビュアー、競合他社のアセットをチェックしている開発者など、APKファイルからアイコンを抽出する の必要性は予想以上に頻繁に現れます。問題は、res/mipmap のような内部フォルダーを手動で調べるのは時間がかかり、面倒なプロセスであることです。

このウォークスルーでは、APK から高解像度のアプリアイコンを取得する への最も簡単な方法、そもそも Android がアイコン リソースを保存する方法、および APKアイコン抽出ツール が面倒な部分を数秒で処理する方法について説明します。

重要なポイント

  • APK ファイルには複数の解像度でアイコンが保存されます はさまざまな画面サイズをサポートします。
  • アダプティブアイコン (Android 8.0 で導入) は、前景レイヤーと背景レイヤーで構成されます。
  • オンライン抽出ツールは手動の方法よりも高速で、APK 解凍を必要としません。
  • システムアプリや保護されたファイルなど、任意の APK からアイコンを抽出できます。

APK アイコンを抽出する理由

アプリのアイコンは、アプリケーションの ID を表します。スタンドアロンの PNG または SVG ファイルとして抽出する理由はいくつかあります。

Android アイコン リソースを理解する

APK 内では、アイコンは android:icon 属性の下の AndroidManifest.xml で定義されます。最新のアプリでは、いくつかの種類のアイコン形式が使用されます。

  1. ミップマップ: mipmap-xxxhdpi、mipmap-xxhdpi などの名前のフォルダーに保存されているラスター イメージ (PNG、WebP)。
  2. ベクター ドローアブル: 品質を損なうことなく無限に拡張できる XML ベースのベクトル。
  3. アダプティブアイコン: これらは個別の背景レイヤーと前景レイヤーを使用し、Android がアイコンにさまざまなマスク (円、四角、角) を適用できるようにします。

オンラインでアイコンを抽出する方法 (標準的な方法)

当社の オンライン APK アイコン抽出ツール は、これらすべての複雑さを自動的に処理するように構築されています。プロセスは次のとおりです。

段階的な抽出:

  1. アイコン抽出ツール に移動します。
  2. .apk または .xapk ファイルをアップロードします。
  3. このツールは、AndroidManifest.xml を即座に解析して、アイコンのリソース パスを見つけます。
  4. res/ ディレクトリをスキャンして、利用可能な最高の解像度 (通常は xxxhdpi) を探します。
  5. アイコンのプレビューが画面に表示されます。
  6. ダウンロードアイコン をクリックして、高品質の PNG として保存します。

高解像度を保証

当社の抽出ツールは常に XXXL (192x192) または元のベクター アセットを優先し、デザインのニーズに合わせて可能な限り鮮明なロゴを確実に取得します。

手動方法(ZIPオープナーを使用)

インターネットにアクセスできない場合は、アイコンを手動で抽出できますが、手順はより複雑になります。

  1. app.apk の名前を app.zip に変更します。
  2. ZIP ファイルを開きます。
  3. /res/ に移動します。
  4. mipmap- で始まるフォルダーを探します。
  5. これらのフォルダーで、ic_launcher.png という名前のイメージ ファイルを検索します。
  6. 最大のフォルダー (xxxhdpi など) からファイルをコピーします。

警告: この方法は、アダプティブ アイコンや特殊な命名規則を使用するアプリでは失敗することがよくあります。

アダプティブ アイコン: 2 つのレイヤーが表示される理由

Android 8 (Oreo) 以降、プラットフォームは アダプティブアイコン を使用しています。これは、OS がアイコンをクリップしてさまざまな形状 (Pixel では円、Samsung One UI ではスクワクル、ストック ランチャーでは丸い正方形、一部の OEM スキンではティアドロップ) にアニメーション化できる 2 層システムです。アダプティブ アイコンを抽出すると、1 つではなく 2 つの PNG (または 2 つのベクター ドローアブル) が取得されます。

前景 PNG のみをエクスポートすると、背景がないか、背景が透明な画像が作成されます。これは、デザイン モックアップのアセットには問題ありませんが、ランチャー対応のアイコンが必要な場合は間違っています。常に両方のレイヤーをエクスポートするか、アダプティブ アイコンが検出されたときに自動的にレイヤーを合成する APKアイコン抽出ツール を使用してください。

密度フォルダーのチートシート

APK 内では、同じアイコンがピクセル密度バケットごとに 1 つずつ、5 つ以上のサイズで存在する場合があります。ランチャーは、デバイスの密度に最も近いバケットを選択します。最高品質のバージョンを抽出する場合は、xxxhdpi に直接進みます。

密度バケット フォルダ名 ランチャーアイコンのサイズ アダプティブキャンバスサイズ
LDPIミップマップ-LDPI36 × 36該当なし
mdpi (ベースライン)ミップマップ-MDPI48 × 48108 × 108
hdpiミップマップ-HDPI72 × 72162 × 162
xhdpiミップマップ-xhdpi96 × 96216 × 216
xxhdpiミップマップ-xxhdpi144 × 144324 × 324
xxxhdpiミップマップ-xxxhdpi192 × 192432 × 432
anydpi-v26ミップマップ-anydpi-v26ビットマップではなく、XML アダプティブ アイコン定義

まれな anydpi-v26 フォルダーは特別です。このフォルダーには、別の場所に保存されている前景および背景のドローアブルを 参照 する XML ファイルが含まれています。ミップマップ フォルダーを開いたときに XML のみが表示される場合、実際のグラフィックスは res/drawable-* にあるか、ベクター XML として res/drawable/ にあります。ブラウザ ツールはこれらの参照を自動的にたどります。

ベクターとラスター: どちらをエクスポートする必要がありますか?

最新の Android アプリでは、アイコンや小さな UI グラフィックスに ベクトルドローアブル (SVG のサブセットを使用する XML ファイル) が好まれます。拡張は無限で、重さはほとんどなく、1 つのファイルであらゆる密度をカバーします。古いアプリでは、依然としてあらゆる密度のラスター PNG が提供されています。抽出すると、次のいずれかの形式が表示される場合があります。

設計作業では、ベクトル ソースが存在する場合は常にそれを優先します。従来の互換性 (古いツール、マーケティング資料) のために、見つけられる限り最高密度の PNG をエクスポートしてください。

アイコンを抽出する際のよくある落とし穴

完璧なアイコンを瞬時に抽出

フォルダーを探して時間を無駄にする必要はありません。ワンクリックで高品質のアプリロゴを入手できます。

APK アイコン抽出ツールを試す

よくある質問 (FAQ)

アプリのアイコンを抽出することは合法ですか?

個人使用、レビュー、または教育目的でアイコンを抽出することは、通常は許容されます。ただし、所有者の許可なく再配布したり、商用製品に使用したりすると、著作権法および商標法に違反する可能性があります。

Android アプリのアイコンの標準サイズはどれくらいですか?

ストアの掲載情報の場合、アイコンは 512x512 である必要があります。 APK 内で通常見つかる最高の解像度は、ホーム画面の 192x192 (xxxhdpi) です。

システム アプリ (Google カメラなど) からアイコンを抽出できますか?

はい。 システムアプリのAPKファイルをお持ちであれば、当ツールで他の一般的なアプリと同様にアイコンを抽出できます。

毎回クリーンなランチャー アセットを取得する

APK からアイコンを取得することは、Android アプリを設計、レビュー、または構築する場合に便利なテクニックです。手動で行うこともできますが、専用の オンラインツール を使用するとより速く、当て推量なしでフル解像度のソースを取得できます。これは、必要なときにいつでも APK ツールセットの無料の一部として利用できます。

Mst Shaefale による設計と文書化 リード開発者兼 Android パッケージ アーキテクト • Android 12 ~ 15 で検証済み

Mst Shaefale は、クライアント側の XAPK/APKS マージ、バイナリ マニフェスト パーサー、APK v1+v2 署名ツールを xapktoapk.com で保守しています。古いコマンドや OS の変更を見つけましたか?編集メモを送信します。