前后两个模块之间并无关联,如果只是在java
中获取apk
文件信息,之间跳到Java代码
模块即可
服务器可以使用aapt
工具
安装相关依赖
yum install glibc.i686 zlib.i686 libstdc++.i686 -y
完整脚本
yum install glibc.i686 zlib.i686 libstdc++.i686 -y
mkdir -p /usr/local/aapt
cd /usr/local/aapt
wget -O /usr/local/aapt/build-tools_r28.0.2-linux.zip https://dl.google.com/android/repository/build-tools_r28.0.2-linux.zip
unzip build-tools_r28.0.2-linux.zip
cp cp /usr/local/aapt/android-9/lib64/libc++.so /usr/lib64/
echo "export AAPT_HOME=/usr/local/aapt/android-9" > /etc/profile
echo "export PATH=${PATH}:${AAPT_HOME}" > /etc/profile
source /etc/profile
# 测试命令
aapt -h
如果想要获取apk内的资源文件,可以重命名apk
为zip
文件,然后使用unzip
命令进行解压
Maven依赖
<dependency>
<groupId>net.dongliu</groupId>
<artifactId>apk-parser</artifactId>
<version>2.6.10</version>
</dependency>
DEMO
public class ApkInfoTest {
public static void main(String[] args) {
try (ApkFile apkFile = new ApkFile(new File("E:\\soft\\Tencent\\WeixinWork\\WXWork\\1688855661253940\\Cache\\File\\2023-12\\110_98f7e08a38ac72981e27bafc5ca6edba.apk"))) {
ApkMeta apkMeta = apkFile.getApkMeta();
System.out.println(apkMeta.getLabel());
System.out.println(apkMeta.getPackageName());
System.out.println(apkMeta.getVersionCode());
for (UseFeature feature : apkMeta.getUsesFeatures()) {
System.out.println(feature.getName());
}
System.out.println(apkMeta.getVersionName());
List<IconFace> allIcons = apkFile.getAllIcons();
for (int i = 0; i < allIcons.size(); i++) {
IoUtil.write(new FileOutputStream(new File("E:\\tmp\\apk\\"+i+".png")),true,allIcons.get(i).getData());
}
}catch (Exception e){
}
}
}
因篇幅问题不能全部显示,请点此查看更多更全内容