资源简介
Java解析apk/ipa读取包名、版本名、版本号等等信息源码,自己总结,希望对大家有所帮助。
代码片段和文件信息
package com.zsl.cn;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Map;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipInputStream;
import org.apkinfo.api.util.AxmlResourceParser;
import org.apkinfo.api.util.TypedValue;
import org.apkinfo.api.util.xmlPullParser;
import com.dd.plist.NSDictionary;
import com.dd.plist.NSString;
import com.dd.plist.PropertyListParser;
/**
*
* @author ZSL
*
*/
public final class ReadUtil {
/**
* 读取apk
* @param apkUrl
* @return
*/
public static Mapject> readAPK(String apkUrl){
ZipFile zipFile;
Mapject> map = new HashMapject>();
try {
zipFile = new ZipFile(apkUrl);
Enumeration> enumeration = zipFile.entries();
ZipEntry zipEntry = null;
while (enumeration.hasMoreElements()) {
zipEntry = (ZipEntry) enumeration.nextElement();
if (zipEntry.isDirectory()) {
} else {
if (“androidmanifest.xml“.equals(zipEntry.getName().toLowerCase())) {
AxmlResourceParser parser = new AxmlResourceParser();
parser.open(zipFile.getInputStream(zipEntry));
while (true) {
int type = parser.next();
if (type == xmlPullParser.END_DOCUMENT) {
break;
}
String name = parser.getName();
if(null != name && name.toLowerCase().equals(“manifest“)){
for (int i = 0; i != parser.getAttributeCount(); i++) {
if (“versionName“.equals(parser.getAttributeName(i))) {
String versionName = getAttributeValue(parser i);
if(null == versionName){
versionName = ““;
}
map.put(“versionName“ versionName);
} else if (“package“.equals(parser.getAttributeName(i))) {
String packageName = getAttributeValue(parser i);
if(null == packageName){
packageName = ““;
}
map.put(“package“ packageName);
} else if(“versionCode“.equals(parser.getAttributeName(i))){
String versionCode = getAttributeValue(parser i);
if(null == versionCode){
versionCode = ““;
}
map.put(“versionCode“ versionCode);
}
}
break;
}
}
}
}
}
zipFile.close();
} catch (Exception e) {
map.put(“code“ “fail“);
map.put(“error““读取apk失败“);
}
return map;
}
private static String getAttributeValue(AxmlResourceParser parser int index) {
int type = parser.getAttributeValueType(index);
int data = parser.getAttributeValueData(index);
if (type == TypedValue.TYPE_STRING) {
return parser.getAttributeValue(index);
}
if (type == TypedValue.TYPE_ATTRIBUTE) {
return String.format(“?%s%08X“ getPackage(data)
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2016-05-05 22:00 ReadApkAndIpa\
文件 440 2016-05-05 22:00 ReadApkAndIpa\.classpath
文件 389 2016-05-05 15:00 ReadApkAndIpa\.project
目录 0 2016-05-05 15:00 ReadApkAndIpa\.settings\
文件 598 2016-05-05 15:00 ReadApkAndIpa\.settings\org.eclipse.jdt.core.prefs
目录 0 2016-05-06 10:49 ReadApkAndIpa\bin\
文件 47385 2016-05-06 09:50 ReadApkAndIpa\bin\150211092729.ipa
文件 13403998 2016-05-06 09:34 ReadApkAndIpa\bin\150211100441.apk
目录 0 2016-05-05 22:00 ReadApkAndIpa\bin\com\
目录 0 2016-05-05 22:00 ReadApkAndIpa\bin\com\zsl\
目录 0 2016-05-06 09:43 ReadApkAndIpa\bin\com\zsl\cn\
文件 7392 2016-05-06 10:49 ReadApkAndIpa\bin\com\zsl\cn\ReadUtil.class
文件 24385760 2016-05-06 09:43 ReadApkAndIpa\bin\shenmiaotaowang_966.apk
目录 0 2016-05-06 10:49 ReadApkAndIpa\src\
文件 47385 2016-05-06 09:50 ReadApkAndIpa\src\150211092729.ipa
文件 13403998 2016-05-06 09:34 ReadApkAndIpa\src\150211100441.apk
目录 0 2016-05-05 18:24 ReadApkAndIpa\src\com\
目录 0 2016-05-05 18:24 ReadApkAndIpa\src\com\zsl\
目录 0 2016-05-06 09:43 ReadApkAndIpa\src\com\zsl\cn\
文件 7474 2016-05-06 10:49 ReadApkAndIpa\src\com\zsl\cn\ReadUtil.java
文件 24385760 2016-05-06 09:43 ReadApkAndIpa\src\shenmiaotaowang_966.apk
目录 0 2016-05-05 22:00 ReadApkAndIpa\webapp\
目录 0 2016-05-05 22:00 ReadApkAndIpa\webapp\lib\
文件 1818834 2016-04-18 12:55 ReadApkAndIpa\webapp\lib\Axm
文件 63672 2016-04-18 12:55 ReadApkAndIpa\webapp\lib\dd-plist-1.16.jar
相关资源
- javaweb调试支付宝支付接口沙箱环境
- 支付宝收款推送
- Java获取ipa、apk文件配置信息jar包
- Android Multipart实现多附件上传
- MultipartEntityBuilder方法需要调用的jar包
- alipay-trade-sdk.jar
- android4axlib.zipAxure的android组件库
- Java解析apk所需jar包
- Java使用winzipaes对zip文件的操作支持中
- 包含alipay-sdk-java-1.0.0.jar,alipay-trade
- Axure移动互联网产品组件库大全ios部件
- alipay-trade-sdk-20161215.jar
- ios+ipad+iphone+android+pc跨平台兼容播放器
- zipalign.exe272183
- alipay-trade-sdk-1.0.0.jar
- DiskFileItemFactory需要的jar包commons-file
- re-sign.jar 和 zipalign.exe工具
- 读取ios包下info.plist的jar包工具
- Java解析ipa所需jar包
- alipay-sdk-java20151021120052.jar
- spring jar包 含multipart file
- IPackageDataObserver.aidlIPackageStatsObserver
- stripe支付 stripe 支付 -java-国外支付
- alipay-trade-sdk-1.0.0.jar和alipay-sdk-java20
- alipay-sdk-java目前最新的jar和source
- alipay-sdk-JAVA-20150527120051
- java解析apk文件
- zipalign工具
评论
共有 条评论