解决方案 »
- 求解决C#重复执行多线程模块的问题。
- 各位大侠,为什么导出功能不能用呢?
- 强类型dataset与数据集dataset 是不是有很多共同处呢
- CSDN招聘题。。。
- 【高分求助】寻16进制编辑控件,或高分求高手给做一个,像UltraEdit,或者金山游侠那样的。
- stackalloc分配的空间会初始化吗?
- spring.net1.3.2和Nhibernate3.2的ClassMapping方式整理问题
- 验证IP的问题 (liujia_0421(SnowLover) 再来看一下啊)
- 这段代码不是先执行接口部分,并能弹出一个“我是接口”的窗口吗???
- 【分享】类似WinHex的十六进制显示控件
- 如何提高WCF的执行效率
- C# CheckedListBox移除打钩项的问题
http://www.sum16.com/desinger/c-sharp-read-package-name-by-aapt.html
using AndroidXml;
using Ionic.Zip;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;namespace APKRead
{
class NamespaceInfo
{
public string Prefix { get; set; }
public string Uri { get; set; }
}
class Program
{ static List<AndroidInfo> androidInfos = new List<AndroidInfo>();
static void Main(string[] args)
{
//要分析的文件名称
var manifest = "AndroidManifest.xml"; //读取apk,通过解压的方式读取
using (var zip = ZipFile.Read("News.apk"))
{
using (Stream zipstream = zip[manifest].OpenReader())
{
//将解压出来的文件保存到一个路径(必须这样)
using (var fileStream = File.Create(manifest, (int)zipstream.Length))
{
// Initialize the bytes array with the stream length and then fill it with data
byte[] bytesInStream = new byte[zipstream.Length];
zipstream.Read(bytesInStream, 0, bytesInStream.Length);
// Use write method to write to the file specified above
fileStream.Write(bytesInStream, 0, bytesInStream.Length);
}
}
} //读取解压文件的字节数
byte[] data = File.ReadAllBytes(manifest);
if (data.Length == 0)
{
throw new IOException("Empty file");
} #region 读取文件内容
using (var stream = new MemoryStream(data))
{
var reader = new AndroidXmlReader(stream); while (reader.Read())
{
switch (reader.NodeType)
{
case XmlNodeType.Element:
{
AndroidInfo info = new AndroidInfo();
androidInfos.Add(info);
info.Name = reader.Name;
info.Settings = new List<AndroidSetting>();
for (int i = 0; i < reader.AttributeCount; i++)
{
reader.MoveToAttribute(i); AndroidSetting setting = new AndroidSetting() { Name = reader.Name, Value = reader.Value };
info.Settings.Add(setting);
}
reader.MoveToElement();
break;
}
}
}
}
#endregion File.Delete(manifest); StringBuilder builder = new StringBuilder();
foreach (var androidInfo in androidInfos)
{
builder.Append(string.Format("{0}:",androidInfo.Name));
foreach (var setting in androidInfo.Settings)
{
builder.Append("{");
builder.Append(string.Format("'{0}':'{1}'",setting.Name,setting.Value));
builder.Append("},");
}
builder.Append("\n\n");
}
Console.WriteLine(builder.ToString());
}
} /// <summary>
/// android应用程序信息
/// </summary>
public class AndroidInfo
{
public string Name { get; set; } public List<AndroidSetting> Settings { get; set; }
} /// <summary>
/// 设置
/// </summary>
public class AndroidSetting
{
public string Name { get; set; }
public string Value { get; set; }
}
}