使用apk-parser解析apk包

项目里需要用java代码解析出apk包的版本号、版本名称等信息,一开始用的AXmlResourceParser工具解析的,结果发现解析出错

java.lang.ArrayIndexOutOfBoundsException: 128  
   at android.content.res.StringBlock.getShort(StringBlock.java:231)  
   at android.content.res.StringBlock.getString(StringBlock.java:91)  
   at android.content.res.AXmlResourceParser.getName(AXmlResourceParser.java:140)  
   at test.AXMLPrinter.main(AXMLPrinter.java:56)

网上查了一些方案 都说是AXMLPrinter2.jar需要修改,改了之后还是不行。最终发现了一个纯Java实现的Apk解析Lib,也是现存的功能最强的Apk Parser。在不需要aapt等工具的前提下,可以:

1. 查看Apk 的元信息,如标题、图标、SDK版本、权限、支持的语言等
2. 解析Apk 中任意的Binary Xml 文件,翻译成可读的Xml 文本
3. 查看Apk Dex 文件中包含的Class 信息
4. 验证Apk 签名,查看签名的信息

使用方法:

添加依赖

<dependency>
    <groupId>net.dongliu</groupId>
    <artifactId>apk-parser</artifactId>
    <version>2.5.3</version>
</dependency>

代码里调用

public static void main(String[] args) {
		try {
			ApkFile apkFile = new ApkFile(new File("C:\\Users\\Administrator\\Desktop\\app-release.apk"));
			ApkMeta apkMeta = apkFile.getApkMeta();
			System.out.println(apkMeta.getLabel());
			System.out.println(apkMeta.getPackageName());
			System.out.println(apkMeta.getVersionCode());
			System.out.println(apkMeta.getVersionName());
			/*for (UseFeature feature : apkMeta.getUsesFeatures()) {
				System.out.println(feature.getName());
			}*/
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

效果

唐宋钢铁
tenx_yanglin.tenx_steel
1
1.0
app-release.apk

附上apk-parser的GitHub地址(https://github.com/hsiafan/apk-parser

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
如果您想在 Vue.js 中使用 `kml-parser` 库来解析 KML 文件,您可以按照以下步骤操作: 1. 安装 `kml-parser` 库: ```bash npm install kml-parser --save ``` 2. 在 Vue.js 组件中导入 `kml-parser` 库: ```javascript import KmlParser from 'kml-parser'; ``` 3. 加载 KML 文件并解析它: ```javascript <template> <div> <button @click="loadKml">Load KML</button> <div id="map"></div> </div> </template> <script> import KmlParser from 'kml-parser'; export default { methods: { loadKml() { // Load KML file using XMLHttpRequest const xhr = new XMLHttpRequest(); xhr.open('GET', 'path/to/file.kml'); xhr.onload = () => { if (xhr.status === 200) { // Parse KML data and display it on a map const kmlData = xhr.responseText; const kml = KmlParser.parse(kmlData); const map = new google.maps.Map(document.getElementById('map'), { zoom: 10, center: { lat: 0, lng: 0 }, }); kml.features.forEach(feature => { feature.geometry.coordinates.forEach(coordinate => { const marker = new google.maps.Marker({ position: { lat: coordinate[1], lng: coordinate[0] }, map: map, title: feature.properties.name, }); }); }); } }; xhr.send(); }, }, }; </script> ``` 在这个示例中,我们使用 `XMLHttpRequest` 对象加载 KML 文件,并使用 `KmlParser.parse()` 方法解析文件。然后,我们使用 Google Maps API 在地图上显示 KML 中的所有点。注意,这个示例仅显示了 KML 文件中的点,您可以根据需要修改代码来显示其他地理信息数据。 希望这个示例能帮助您在 Vue.js 中使用 `kml-parser` 库来解析 KML 文件。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值