日期:2014-05-17  浏览次数:20828 次

java 解析apk的AndroidManifest.xml文件获取apk启动类
本帖最后由 chunqiuwei 于 2013-12-24 15:15:59 编辑
LZ现在的项目中要解析apk里面事物AndroidManifest.xml文件获取package以及apk的启动类,现在只能获取到package,代码如下
	public static void apk(String apkUrl) {

int length;
ZipFile zipFile;
try {
zipFile = new ZipFile(new File(apkUrl));
Enumeration enumeration = zipFile.entries();
ZipEntry zipEntry = zipFile.getEntry(("AndroidManifest.xml"));
AXmlResourceParser parser = new AXmlResourceParser();
parser.open(zipFile.getInputStream(zipEntry));
boolean flag = true;
while (flag) {

int type = parser.next();

if (type == XmlPullParser.START_TAG) {
int count = parser.getAttributeCount();
for (int i = 0; i < count; i++) {
String name = parser.getAttributeName(i);
String value = parser.getAttributeValue(i);
if (value.contains("MAIN")) {
System.out.println(name + "-----------" + value);
flag = false;
break;
}else if("package".equals(name)){
System.out.println(name+"***"+value);
     }else{
      System.out.println(name+"   "+value); 
     }
}//end for
}
}// end while
} catch (Exception e) {
}
}
求大神帮忙,怎么获取apk的启动类

------解决方案--------------------
启动类的特点是,有一个属性的值为android.intent.action.MAIN,找到这个就找到了启动类
------解决方案--------------------
 启动类你也可以解析xml 。获取当中的启动类。
------解决方案--------------------
引用:
Quote: 引用:

Quote: 引用:

Quote: 引用:

启动类的特点是,有一个属性的值为android.intent.action.MAIN,找到这个就找到了启动类
关键是我手中只有打包好的apk需要解析出来那个xml文件,你说的这个确实能找到,我就是想以这个东西为基准找到启动类,但是不知道该怎么做, 只有parser.next();而没有parser.prev()或则parent()方法


打包好的可以反编译的,这个不是问题,反编译出来的xml和普通的xml没有任何区别
网上说的反编译的好像要cmd专门处理,还要深apt.exe好像是这个,但是我这个项目的功能是用户上传apk,相关人员通过我提供的接口来获取apk的信息(通过访问我给的地址获取),


你能拿到apk,就可以反编译,这个结论是我告诉你的,至于怎么反编译,你自己要研究
拿到apk-反编译-拿到xml-解析xml-找到启动类