从apk文件中提取应用程序图标

www*_*.se 7 android embedded-resource apk android-resources

我需要从apk文件中提取应用程序图标.我只需要一个图标,我不想在apk中提取其他所有内容.文件很容易掌握,但如何确定哪个图标文件是正确的应用程序图标.我想这是存储在资源表中的?所以我想我需要的是实际读取资源表,我希望从资源表中我可以确定图标文件namne然后我可以从应用程序中提取.

我需要一个简单的工具,我知道apktool可以提取整个apk文件,但这不是我想要的

  • 它做了我不需要的其他东西(反编译,解压缩其他文件等)

  • 它需要很多时间才能运行

有没有其他工具可以用来抓住图标文件路径?

所有建议表示赞赏

编辑:澄清一下,我不想在设备上这样做.我试图在PC上这样做.

小智 12

aapt安装了Android SDK的工具platform-tools可以为您提供所需的详细信息.apktool随附aapt.

aapt d --values badging payload.apk

使用此输出,您可以从apk(这是一个zip文件)中提取图标文件.


adr*_*TNT 7

  • 将.apk文件重命名为.zip
  • 使用像7zip这样的工具解压缩它
  • 在以下位置找到png文件的图标: /res/drawable-hdpi/icon.png

编辑:请注意,此文件不存在于所有apk文件中,但在大多数文件中.除了提取所有.png文件并从列表中选择一个文件之外,我找不到更好的解决方案.


小智 7

//if your apk is not installed ..only having .apk on sdcard   
  String APKFilePath = "mnt/sdcard/myapkfile.apk"; //For example...
     PackageManager pm = getPackageManager();
     PackageInfo    pi = pm.getPackageArchiveInfo(APKFilePath, 0);

    // the secret are these two lines....
     pi.applicationInfo.sourceDir       = APKFilePath;
     pi.applicationInfo.publicSourceDir = APKFilePath;
    //

   Drawable APKicon = pi.applicationInfo.loadIcon(pm);
   String   AppName = (String)pi.applicationInfo.loadLabel(pm);
Run Code Online (Sandbox Code Playgroud)

你可以参考这个链接

Get-apk图标


Rid*_*lly 5

至于我的知识(并且根据维基百科也是如此),APK文件是ZIP文件格式化的包.所以我认为你可以使用任何解压缩工具来解压缩apk文件并获取你想要的图标.对于启动器图标,只需打开AndroidManifest.xml文件并查看该android:icon属性即可<application>.它可能看起来像这样:

android:icon="@drawable/ic_launcher"

然后是图标文件res/drawable-<dim>/ic_launcher.png,其中<dim>任何一个都ldpi, mdpi, hdpi, xhdpi可以代表不同的分辨率.最大的图像将在xhdpihdpi.