package com.hysj.utils;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import net.dongliu.apk.parser.ApkFile;
import net.dongliu.apk.parser.bean.ApkMeta;
import net.dongliu.apk.parser.bean.Permission;
import net.dongliu.apk.parser.bean.UseFeature;
public class ApkUtil {
/**
* 获取APK信息
* @param apkUrl apk路径
* @return 信息集合(map)
*/
public static Map<String,Object> readApk(String apkUrl){
//创建集合,存放APK信息
Map<String,Object> resMap=new HashMap<String,Object>();
//获取APK文件
try (ApkFile apkFile = new ApkFile(new File(apkUrl))) {
ApkMeta apkMeta = apkFile.getApkMeta(); //获取APK文件中的元数据
/*************************集合添加信息内容*************************/
resMap.put("apkName", apkMeta.getName()); //apk名称
resMap.put("apkPackageName", apkMeta.getPackageName()); //apk包名
resMap.put("versionCode", apkMeta.getVersionCode()); //版本号
resMap.put("versionName", apkMeta.getVersionName()); //版本名称
} catch (IOException e) {
e.printStackTrace();
}
return resMap;
}
/**
* 测试用的main方法
* @param arg
*/
public static void main(String[] arg){
String filePath = "E:\\tencent.apk";
try (ApkFile apkFile = new ApkFile(new File(filePath))) { //获取APK文件
ApkMeta apkMeta = apkFile.getApkMeta(); //获取APK文件中的元数据
System.out.println(apkMeta.getName()); //apk名称
System.out.println(apkMeta.getPackageName()); //apk包名
System.out.println(apkMeta.getVersionCode()); //版本号
System.out.println(apkMeta.getVersionName()); //版本名称
//需要的硬件或软件资源/功能
for (UseFeature feature : apkMeta.getUsesFeatures()) {
System.out.println(feature.getName());
}
for (Permission permission : apkMeta.getPermissions()) {
System.out.println(permission.getName());
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
运行结果图
所需架包下载路径:
链接:https://pan.baidu.com/s/1IlKlnaZSIHN5c-nkVNpTjg
提取码:6813