├── .gitattributes
├── .gitignore
├── ApkInfo.sln
├── ApkInfo
├── AboutForm.Designer.cs
├── AboutForm.cs
├── AboutForm.resx
├── ApkDecoder.cs
├── ApkInfo.csproj
├── MainForm.Designer.cs
├── MainForm.cs
├── MainForm.resx
├── Program.cs
├── Properties
│ ├── AssemblyInfo.cs
│ ├── Resources.Designer.cs
│ ├── Resources.resx
│ ├── Settings.Designer.cs
│ └── Settings.settings
├── app.config
└── icon.ico
├── README.md
├── apk_info.png
└── tools
├── aapt.exe
└── unzip.exe
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Auto detect text files and perform LF normalization
2 | * text=auto
3 |
4 | # Custom for Visual Studio
5 | *.cs diff=csharp
6 |
7 | # Standard to msysgit
8 | *.doc diff=astextplain
9 | *.DOC diff=astextplain
10 | *.docx diff=astextplain
11 | *.DOCX diff=astextplain
12 | *.dot diff=astextplain
13 | *.DOT diff=astextplain
14 | *.pdf diff=astextplain
15 | *.PDF diff=astextplain
16 | *.rtf diff=astextplain
17 | *.RTF diff=astextplain
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | # Windows image file caches
2 | Thumbs.db
3 | ehthumbs.db
4 |
5 | # Folder config file
6 | Desktop.ini
7 |
8 | # Recycle Bin used on file shares
9 | $RECYCLE.BIN/
10 |
11 | # Windows Installer files
12 | *.cab
13 | *.msi
14 | *.msm
15 | *.msp
16 |
17 | # Windows shortcuts
18 | *.lnk
19 |
20 | # =========================
21 | # Operating System Files
22 | # =========================
23 |
24 | # OSX
25 | # =========================
26 |
27 | .DS_Store
28 | .AppleDouble
29 | .LSOverride
30 |
31 | # Thumbnails
32 | ._*
33 |
34 | # Files that might appear in the root of a volume
35 | .DocumentRevisions-V100
36 | .fseventsd
37 | .Spotlight-V100
38 | .TemporaryItems
39 | .Trashes
40 | .VolumeIcon.icns
41 |
42 | # Directories potentially created on remote AFP share
43 | .AppleDB
44 | .AppleDesktop
45 | Network Trash Folder
46 | Temporary Items
47 | .apdisk
48 |
--------------------------------------------------------------------------------
/ApkInfo.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 11.00
3 | # Visual Studio 2010
4 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ApkInfo", "ApkInfo\ApkInfo.csproj", "{CD48133B-C5F1-44BF-A13E-94BF63C7E83E}"
5 | EndProject
6 | Global
7 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
8 | Debug|x86 = Debug|x86
9 | Release|x86 = Release|x86
10 | EndGlobalSection
11 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
12 | {CD48133B-C5F1-44BF-A13E-94BF63C7E83E}.Debug|x86.ActiveCfg = Debug|x86
13 | {CD48133B-C5F1-44BF-A13E-94BF63C7E83E}.Debug|x86.Build.0 = Debug|x86
14 | {CD48133B-C5F1-44BF-A13E-94BF63C7E83E}.Release|x86.ActiveCfg = Release|x86
15 | {CD48133B-C5F1-44BF-A13E-94BF63C7E83E}.Release|x86.Build.0 = Release|x86
16 | EndGlobalSection
17 | GlobalSection(SolutionProperties) = preSolution
18 | HideSolutionNode = FALSE
19 | EndGlobalSection
20 | EndGlobal
21 |
--------------------------------------------------------------------------------
/ApkInfo/AboutForm.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ApkInfo
2 | {
3 | partial class AboutForm
4 | {
5 | ///
6 | /// Required designer variable.
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// Clean up any resources being used.
12 | ///
13 | /// true if managed resources should be disposed; otherwise, false.
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows Form Designer generated code
24 |
25 | ///
26 | /// Required method for Designer support - do not modify
27 | /// the contents of this method with the code editor.
28 | ///
29 | private void InitializeComponent()
30 | {
31 | this.imgIcon = new System.Windows.Forms.PictureBox();
32 | this.btnClose = new System.Windows.Forms.Button();
33 | this.lblTitle = new System.Windows.Forms.Label();
34 | this.lblHomepage = new System.Windows.Forms.Label();
35 | this.lblAuthor = new System.Windows.Forms.Label();
36 | ((System.ComponentModel.ISupportInitialize)(this.imgIcon)).BeginInit();
37 | this.SuspendLayout();
38 | //
39 | // imgIcon
40 | //
41 | this.imgIcon.Image = global::ApkInfo.Properties.Resources.icon;
42 | this.imgIcon.Location = new System.Drawing.Point(18, 16);
43 | this.imgIcon.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
44 | this.imgIcon.Name = "imgIcon";
45 | this.imgIcon.Size = new System.Drawing.Size(48, 48);
46 | this.imgIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
47 | this.imgIcon.TabIndex = 2;
48 | this.imgIcon.TabStop = false;
49 | //
50 | // btnClose
51 | //
52 | this.btnClose.Anchor = System.Windows.Forms.AnchorStyles.Bottom;
53 | this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
54 | this.btnClose.Location = new System.Drawing.Point(110, 83);
55 | this.btnClose.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
56 | this.btnClose.Name = "btnClose";
57 | this.btnClose.Size = new System.Drawing.Size(75, 23);
58 | this.btnClose.TabIndex = 16;
59 | this.btnClose.Text = "确定";
60 | this.btnClose.UseVisualStyleBackColor = true;
61 | //
62 | // lblTitle
63 | //
64 | this.lblTitle.AutoSize = true;
65 | this.lblTitle.Location = new System.Drawing.Point(90, 16);
66 | this.lblTitle.Name = "lblTitle";
67 | this.lblTitle.Size = new System.Drawing.Size(83, 12);
68 | this.lblTitle.TabIndex = 17;
69 | this.lblTitle.Text = "Apk信息查看器";
70 | //
71 | // lblHomepage
72 | //
73 | this.lblHomepage.AutoSize = true;
74 | this.lblHomepage.Location = new System.Drawing.Point(90, 52);
75 | this.lblHomepage.Name = "lblHomepage";
76 | this.lblHomepage.Size = new System.Drawing.Size(173, 12);
77 | this.lblHomepage.TabIndex = 18;
78 | this.lblHomepage.Text = "主页:http://www.cr-soft.net";
79 | //
80 | // lblAuthor
81 | //
82 | this.lblAuthor.AutoSize = true;
83 | this.lblAuthor.Location = new System.Drawing.Point(90, 34);
84 | this.lblAuthor.Name = "lblAuthor";
85 | this.lblAuthor.Size = new System.Drawing.Size(137, 12);
86 | this.lblAuthor.TabIndex = 19;
87 | this.lblAuthor.Text = "作者:楚人无衣(刘景威)";
88 | //
89 | // AboutForm
90 | //
91 | this.AcceptButton = this.btnClose;
92 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
93 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
94 | this.ClientSize = new System.Drawing.Size(294, 117);
95 | this.Controls.Add(this.lblAuthor);
96 | this.Controls.Add(this.lblHomepage);
97 | this.Controls.Add(this.lblTitle);
98 | this.Controls.Add(this.btnClose);
99 | this.Controls.Add(this.imgIcon);
100 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog;
101 | this.KeyPreview = true;
102 | this.MaximizeBox = false;
103 | this.MinimizeBox = false;
104 | this.Name = "AboutForm";
105 | this.ShowInTaskbar = false;
106 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterParent;
107 | this.Text = "关于...";
108 | this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.AboutForm_KeyDown);
109 | ((System.ComponentModel.ISupportInitialize)(this.imgIcon)).EndInit();
110 | this.ResumeLayout(false);
111 | this.PerformLayout();
112 |
113 | }
114 |
115 | #endregion
116 |
117 | private System.Windows.Forms.PictureBox imgIcon;
118 | private System.Windows.Forms.Button btnClose;
119 | private System.Windows.Forms.Label lblTitle;
120 | private System.Windows.Forms.Label lblHomepage;
121 | private System.Windows.Forms.Label lblAuthor;
122 | }
123 | }
--------------------------------------------------------------------------------
/ApkInfo/AboutForm.cs:
--------------------------------------------------------------------------------
1 | using System.Drawing;
2 | using System.Windows.Forms;
3 |
4 | namespace ApkInfo
5 | {
6 | public partial class AboutForm : Form
7 | {
8 | public static bool ShowAbout(IWin32Window owner)
9 | {
10 | using (var dlg = new AboutForm())
11 | {
12 | return dlg.ShowDialog(owner) == DialogResult.OK;
13 | }
14 | }
15 |
16 | public AboutForm()
17 | {
18 | InitializeComponent();
19 | lblTitle.Text += " v" + Application.ProductVersion;
20 | }
21 |
22 | private void AboutForm_KeyDown(object sender, KeyEventArgs e)
23 | {
24 | if (e.KeyCode == Keys.Escape)
25 | {
26 | e.Handled = true;
27 | this.DialogResult = DialogResult.Cancel;
28 | }
29 | }
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/ApkInfo/AboutForm.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | True
122 |
123 |
124 | True
125 |
126 |
127 | True
128 |
129 |
--------------------------------------------------------------------------------
/ApkInfo/ApkDecoder.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using System.Diagnostics;
4 | using System.Drawing;
5 | using System.IO;
6 | using System.Runtime.InteropServices;
7 | using System.Text;
8 | using System.Threading;
9 | using System.Windows.Forms;
10 |
11 | namespace ApkInfo
12 | {
13 | public class ApkDecoder
14 | {
15 | public event Action InfoParsedEvent;
16 | public event MethodInvoker AaptNotFoundEvent;
17 | public static Dictionary SdkMap = new Dictionary {
18 | {1, "Android 1.0 / BASE"},
19 | {2, "Android 1.1 / BASE_1_1"},
20 | {3, "Android 1.5 / CUPCAKE"},
21 | {4, "Android 1.6 / DONUT"},
22 | {5, "Android 2.0 / ECLAIR"},
23 | {6, "Android 2.0.1 / ECLAIR_0_1"},
24 | {7, "Android 2.1.x / ECLAIR_MR1"},
25 | {8, "Android 2.2.x / FROYO"},
26 | {9, "Android 2.3, 2.3.1, 2.3.2 / GINGERBREAD"},
27 | {10, "Android 2.3.3, 2.3.4 / GINGERBREAD_MR1"},
28 | {11, "Android 3.0.x / HONEYCOMB"},
29 | {12, "Android 3.1.x / HONEYCOMB_MR1"},
30 | {13, "Android 3.2 / HONEYCOMB_MR2"},
31 | {14, "Android 4.0, 4.0.1, 4.0.2 / ICE_CREAM_SANDWICH"},
32 | {15, "Android 4.0.3, 4.0.4 / ICE_CREAM_SANDWICH_MR1"},
33 | {16, "Android 4.1, 4.1.1 / JELLY_BEAN"},
34 | {17, "Android 4.2, 4.2.2 / JELLY_BEAN_MR1"},
35 | {18, "Android 4.3 / JELLY_BEAN_MR2"},
36 | {19, "Android 4.4 / KITKAT"}
37 | };
38 |
39 | private string appPath;
40 | private string apkPath;
41 | private List infos = new List();
42 |
43 | public ApkDecoder(string apkPath)
44 | {
45 | this.appPath = Path.GetDirectoryName(Application.ExecutablePath);
46 | this.apkPath = apkPath;
47 | ThreadPool.QueueUserWorkItem(new WaitCallback(Decoder));
48 | }
49 |
50 | public string ApkPath
51 | {
52 | get { return this.apkPath; }
53 | }
54 |
55 | public string ApkSize
56 | {
57 | get { return GetApkSize(this.apkPath); }
58 | }
59 |
60 | public string AppName { get; private set; }
61 | public string AppVersion { get; private set; }
62 | public string AppVersionCode { get; private set; }
63 | public string PkgName { get; private set; }
64 | public string IconPath { get; private set; }
65 | public Image AppIcon;
66 | public string MinSdk { get; private set; }
67 | public string MinVersion { get; private set; }
68 | public string ScreenSupport { get; private set; }
69 | public string ScreenSolutions { get; private set; }
70 | public string Permissions { get; private set; }
71 | public string Features { get; private set; }
72 |
73 | private string GetApkSize(string apkPath)
74 | {
75 | string apkSize = "0 M";
76 | if (!File.Exists(apkPath))
77 | return apkSize;
78 |
79 | FileInfo fi = new FileInfo(apkPath);
80 | if (fi.Length >= 1024 * 1024)
81 | {
82 | apkSize = string.Format("{0:N2} M", fi.Length / (1024 * 1024f));
83 | }
84 | else
85 | {
86 | apkSize = string.Format("{0:N2} K", fi.Length / 1024f);
87 | }
88 | return apkSize;
89 | }
90 |
91 | [DllImport("kernel32.dll", CharSet = CharSet.Auto)]
92 | public static extern int GetShortPathName(
93 | [MarshalAs(UnmanagedType.LPTStr)]string path,
94 | [MarshalAs(UnmanagedType.LPTStr)]StringBuilder short_path,
95 | int short_len);
96 |
97 | private void Decoder(object state)
98 | {
99 | if (!File.Exists(this.apkPath))
100 | return;
101 | string aaptPath = Path.Combine(this.appPath, @"tools\aapt.exe");
102 | if (!File.Exists(aaptPath))
103 | aaptPath = Path.Combine(this.appPath, @"aapt.exe");
104 | if (!File.Exists(aaptPath))
105 | {
106 | var handler = AaptNotFoundEvent;
107 | if (handler != null)
108 | handler();
109 | return;
110 | }
111 |
112 | StringBuilder sb = new StringBuilder(255);
113 | int result = GetShortPathName(aaptPath, sb, 255);
114 | if (result != 0)
115 | aaptPath = sb.ToString();
116 |
117 | var startInfo = new ProcessStartInfo("cmd.exe");
118 | try
119 | {
120 | string dumpFile = Path.GetTempFileName();
121 | //如此费事做中转,只为处理中文乱码
122 | string args = string.Format("/k {0} dump badging \"{1}\" > \"{2}\" &exit", aaptPath, this.apkPath, dumpFile);
123 | startInfo.Arguments = args;
124 | startInfo.WindowStyle = ProcessWindowStyle.Hidden;
125 | this.infos.Clear();
126 | using (var process = Process.Start(startInfo))
127 | {
128 | }
129 | if (File.Exists(dumpFile))
130 | {
131 | //解析
132 | using (var sr = new StreamReader(dumpFile, Encoding.UTF8))
133 | {
134 | string line;
135 | while ((line = sr.ReadLine()) != null)
136 | {
137 | this.infos.Add(line);
138 | }
139 | ParseInfo();
140 | }
141 |
142 | File.Delete(dumpFile);
143 | }
144 | }
145 | catch
146 | {
147 | //出了异常,换回命令行解析方式
148 | aaptPath = Path.Combine(this.appPath, @"tools\aapt.exe");
149 | if (!File.Exists(aaptPath))
150 | aaptPath = Path.Combine(this.appPath, @"aapt.exe");
151 | startInfo = new ProcessStartInfo(aaptPath);
152 | string args = string.Format("dump badging \"{0}\"", this.apkPath);
153 | startInfo.Arguments = args;
154 | startInfo.UseShellExecute = false;
155 | startInfo.RedirectStandardOutput = true;
156 | startInfo.CreateNoWindow = true;
157 | using (var process = Process.Start(startInfo))
158 | {
159 | var sr = process.StandardOutput;
160 | while (!sr.EndOfStream)
161 | {
162 | infos.Add(sr.ReadLine());
163 | }
164 | process.WaitForExit();
165 | //解析
166 | ParseInfo(sr.CurrentEncoding);
167 | }
168 | }
169 | }
170 |
171 | private void ParseInfo(Encoding currentEncoding = null)
172 | {
173 | if (this.infos.Count == 0)
174 | {
175 | InvokeParsedHandler();
176 | return;
177 | }
178 |
179 | DoParseInfo();
180 | InvokeParsedHandler();
181 | }
182 |
183 | private void InvokeParsedHandler()
184 | {
185 | var hander = InfoParsedEvent;
186 | if (hander != null)
187 | hander(this);
188 | }
189 |
190 | private void DoParseInfo(Encoding currentEncoding = null)
191 | {
192 | //解析每个字串
193 | foreach (var info in this.infos)
194 | {
195 | if (string.IsNullOrEmpty(info))
196 | continue;
197 |
198 | //application: label='MobileGo™' icon='r/l/icon.png'
199 | if (info.IndexOf("application:") == 0)
200 | {
201 | this.AppName = GetKeyValue(info, "label=");
202 | if (currentEncoding != null)
203 | this.AppName = Encoding.UTF8.GetString(currentEncoding.GetBytes(this.AppName));
204 | this.IconPath = GetKeyValue(info, "icon=");
205 | GetAppIcon(this.IconPath);
206 | }
207 |
208 | //package: name='com.wondershare.mobilego' versionCode='4773' versionName='7.5.2.4773'
209 | if (info.IndexOf("package:") == 0)
210 | {
211 | this.PkgName = GetKeyValue(info, "name=");
212 | this.AppVersion = GetKeyValue(info, "versionName=");
213 | this.AppVersionCode = GetKeyValue(info, "versionCode=");
214 | }
215 |
216 | //sdkVersion:'8'
217 | if (info.IndexOf("sdkVersion:") == 0)
218 | {
219 | this.MinSdk = GetKeyValue(info, "sdkVersion:");
220 | this.MinVersion = string.Empty;
221 | if (!string.IsNullOrEmpty(this.MinSdk))
222 | {
223 | int minSdk = 1;
224 | if (int.TryParse(this.MinSdk, out minSdk) && minSdk >= 1 && minSdk <= 19)
225 | {
226 | this.MinVersion = SdkMap[minSdk];
227 | }
228 | }
229 | }
230 |
231 | //supports-screens: 'small' 'normal' 'large' 'xlarge'
232 | if (info.IndexOf("supports-screens:") == 0)
233 | {
234 | this.ScreenSupport = info.Replace("supports-screens:", "").TrimStart().Replace("' '", ", ").Replace("'", "");
235 | }
236 |
237 | //densities: '120' '160' '213' '240' '320' '480' '640'
238 | if (info.IndexOf("densities:") == 0)
239 | {
240 | this.ScreenSolutions = info.Replace("densities:", "").TrimStart().Replace("' '", ", ").Replace("'", "");
241 | }
242 |
243 | //uses-permission:'android.permission.READ_CONTACTS'
244 | //uses-permission:'android.permission.WRITE_CONTACTS'
245 | //uses-permission:'android.permission.READ_SMS'
246 | if (info.IndexOf("uses-permission:") == 0)
247 | {
248 | string permission = info.Substring(info.LastIndexOf('.') + 1).Replace("'", "");
249 | this.Permissions += permission + "\r\n";
250 | }
251 |
252 | //uses-feature:'android.hardware.touchscreen'
253 | if (info.IndexOf("uses-feature:") == 0)
254 | {
255 | string feature = info.Substring(info.LastIndexOf('.') + 1).Replace("'", "");
256 | this.Features += feature + "\r\n";
257 | }
258 | }
259 | if (!string.IsNullOrEmpty(this.Permissions))
260 | {
261 | this.Permissions = this.Permissions.Trim();
262 | }
263 | if (!string.IsNullOrEmpty(this.Features))
264 | {
265 | this.Features = this.Features.Trim();
266 | }
267 | }
268 |
269 | private string GetKeyValue(string info, string key)
270 | {
271 | if (info.IndexOf(key) != -1)
272 | {
273 | int start = info.IndexOf(key) + @key.Length + 1;
274 | return info.Substring(start, info.IndexOf("'", start) - start);
275 | }
276 | return string.Empty;
277 | }
278 |
279 | private void GetAppIcon(string iconPath)
280 | {
281 | if (string.IsNullOrEmpty(iconPath))
282 | return;
283 | string unzipPath = Path.Combine(appPath, @"tools\unzip.exe");
284 | if (!File.Exists(unzipPath))
285 | unzipPath = Path.Combine(appPath, @"unzip.exe");
286 | if (!File.Exists(unzipPath))
287 | return;
288 |
289 | string destPath = Path.Combine(Path.GetTempPath(), Path.GetFileName(iconPath));
290 | if (File.Exists(destPath))
291 | {
292 | File.Delete(destPath);
293 | }
294 | var startInfo = new ProcessStartInfo(unzipPath);
295 | string args = string.Format("-j \"{0}\" \"{1}\" -d \"{2}\"", this.apkPath, iconPath, Path.GetDirectoryName(Path.GetTempPath()));
296 | startInfo.Arguments = args;
297 | startInfo.UseShellExecute = false;
298 | startInfo.CreateNoWindow = true;
299 | using (var process = Process.Start(startInfo))
300 | {
301 | process.WaitForExit(2000);
302 | }
303 |
304 | if (File.Exists(destPath))
305 | {
306 | using (var fs = new FileStream(destPath, FileMode.Open, FileAccess.Read))
307 | {
308 | this.AppIcon = Image.FromStream(fs);
309 | }
310 | File.Delete(destPath);
311 | }
312 | }
313 | }
314 | }
315 |
--------------------------------------------------------------------------------
/ApkInfo/ApkInfo.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Debug
5 | x86
6 | 8.0.30703
7 | 2.0
8 | {CD48133B-C5F1-44BF-A13E-94BF63C7E83E}
9 | WinExe
10 | Properties
11 | ApkInfo
12 | ApkInfo
13 | v2.0
14 | 512
15 |
16 |
17 |
18 | x86
19 | true
20 | full
21 | false
22 | bin\Debug\
23 | DEBUG;TRACE
24 | prompt
25 | 4
26 |
27 |
28 | x86
29 | pdbonly
30 | true
31 | bin\Release\
32 | TRACE
33 | prompt
34 | 4
35 |
36 |
37 | icon.ico
38 |
39 |
40 | OnBuildSuccess
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 | Form
52 |
53 |
54 | AboutForm.cs
55 |
56 |
57 |
58 | Form
59 |
60 |
61 | MainForm.cs
62 |
63 |
64 |
65 |
66 | AboutForm.cs
67 |
68 |
69 | MainForm.cs
70 |
71 |
72 | ResXFileCodeGenerator
73 | Resources.Designer.cs
74 | Designer
75 |
76 |
77 | True
78 | Resources.resx
79 | True
80 |
81 |
82 |
83 | SettingsSingleFileGenerator
84 | Settings.Designer.cs
85 |
86 |
87 | True
88 | Settings.settings
89 | True
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 | xcopy /r /y ..\..\..\tools tools\
98 |
99 |
100 |
101 |
102 |
103 |
110 |
--------------------------------------------------------------------------------
/ApkInfo/MainForm.Designer.cs:
--------------------------------------------------------------------------------
1 | namespace ApkInfo
2 | {
3 | partial class MainForm
4 | {
5 | ///
6 | /// 必需的设计器变量。
7 | ///
8 | private System.ComponentModel.IContainer components = null;
9 |
10 | ///
11 | /// 清理所有正在使用的资源。
12 | ///
13 | /// 如果应释放托管资源,为 true;否则为 false。
14 | protected override void Dispose(bool disposing)
15 | {
16 | if (disposing && (components != null))
17 | {
18 | components.Dispose();
19 | }
20 | base.Dispose(disposing);
21 | }
22 |
23 | #region Windows 窗体设计器生成的代码
24 |
25 | ///
26 | /// 设计器支持所需的方法 - 不要
27 | /// 使用代码编辑器修改此方法的内容。
28 | ///
29 | private void InitializeComponent()
30 | {
31 | System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(MainForm));
32 | this.btnClose = new System.Windows.Forms.Button();
33 | this.imgIcon = new System.Windows.Forms.PictureBox();
34 | this.btnPlayStore = new System.Windows.Forms.Button();
35 | this.label1 = new System.Windows.Forms.Label();
36 | this.label2 = new System.Windows.Forms.Label();
37 | this.label3 = new System.Windows.Forms.Label();
38 | this.label4 = new System.Windows.Forms.Label();
39 | this.label5 = new System.Windows.Forms.Label();
40 | this.label6 = new System.Windows.Forms.Label();
41 | this.label7 = new System.Windows.Forms.Label();
42 | this.label8 = new System.Windows.Forms.Label();
43 | this.label9 = new System.Windows.Forms.Label();
44 | this.label10 = new System.Windows.Forms.Label();
45 | this.txtApplication = new System.Windows.Forms.TextBox();
46 | this.txtVersion = new System.Windows.Forms.TextBox();
47 | this.txtVersionCode = new System.Windows.Forms.TextBox();
48 | this.txtPackage = new System.Windows.Forms.TextBox();
49 | this.txtIconPath = new System.Windows.Forms.TextBox();
50 | this.txtMinSdk = new System.Windows.Forms.TextBox();
51 | this.txtPermission = new System.Windows.Forms.TextBox();
52 | this.txtFeature = new System.Windows.Forms.TextBox();
53 | this.txtScreenSolution = new System.Windows.Forms.TextBox();
54 | this.txtScreenSize = new System.Windows.Forms.TextBox();
55 | this.btnOpen = new System.Windows.Forms.Button();
56 | this.txtMinVersion = new System.Windows.Forms.TextBox();
57 | this.txtApkSize = new System.Windows.Forms.TextBox();
58 | this.txtApkPath = new System.Windows.Forms.TextBox();
59 | this.label11 = new System.Windows.Forms.Label();
60 | this.label12 = new System.Windows.Forms.Label();
61 | this.label13 = new System.Windows.Forms.Label();
62 | ((System.ComponentModel.ISupportInitialize)(this.imgIcon)).BeginInit();
63 | this.SuspendLayout();
64 | //
65 | // btnClose
66 | //
67 | this.btnClose.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
68 | this.btnClose.DialogResult = System.Windows.Forms.DialogResult.Cancel;
69 | this.btnClose.Location = new System.Drawing.Point(267, 430);
70 | this.btnClose.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
71 | this.btnClose.Name = "btnClose";
72 | this.btnClose.Size = new System.Drawing.Size(75, 23);
73 | this.btnClose.TabIndex = 15;
74 | this.btnClose.Text = "退出";
75 | this.btnClose.UseVisualStyleBackColor = true;
76 | this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
77 | //
78 | // imgIcon
79 | //
80 | this.imgIcon.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
81 | this.imgIcon.Location = new System.Drawing.Point(294, 9);
82 | this.imgIcon.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
83 | this.imgIcon.Name = "imgIcon";
84 | this.imgIcon.Size = new System.Drawing.Size(48, 48);
85 | this.imgIcon.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
86 | this.imgIcon.TabIndex = 1;
87 | this.imgIcon.TabStop = false;
88 | //
89 | // btnPlayStore
90 | //
91 | this.btnPlayStore.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
92 | this.btnPlayStore.Enabled = false;
93 | this.btnPlayStore.Location = new System.Drawing.Point(12, 430);
94 | this.btnPlayStore.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
95 | this.btnPlayStore.Name = "btnPlayStore";
96 | this.btnPlayStore.Size = new System.Drawing.Size(75, 23);
97 | this.btnPlayStore.TabIndex = 13;
98 | this.btnPlayStore.Text = "Play Store";
99 | this.btnPlayStore.UseVisualStyleBackColor = true;
100 | this.btnPlayStore.Click += new System.EventHandler(this.btnAppStore_Click);
101 | //
102 | // label1
103 | //
104 | this.label1.AutoSize = true;
105 | this.label1.Location = new System.Drawing.Point(12, 15);
106 | this.label1.Name = "label1";
107 | this.label1.Size = new System.Drawing.Size(65, 12);
108 | this.label1.TabIndex = 0;
109 | this.label1.Text = "应用名称:";
110 | //
111 | // label2
112 | //
113 | this.label2.AutoSize = true;
114 | this.label2.Location = new System.Drawing.Point(12, 40);
115 | this.label2.Name = "label2";
116 | this.label2.Size = new System.Drawing.Size(41, 12);
117 | this.label2.TabIndex = 1;
118 | this.label2.Text = "版本:";
119 | //
120 | // label3
121 | //
122 | this.label3.AutoSize = true;
123 | this.label3.Location = new System.Drawing.Point(12, 65);
124 | this.label3.Name = "label3";
125 | this.label3.Size = new System.Drawing.Size(53, 12);
126 | this.label3.TabIndex = 2;
127 | this.label3.Text = "版本号:";
128 | //
129 | // label4
130 | //
131 | this.label4.AutoSize = true;
132 | this.label4.Location = new System.Drawing.Point(12, 115);
133 | this.label4.Name = "label4";
134 | this.label4.Size = new System.Drawing.Size(65, 12);
135 | this.label4.TabIndex = 4;
136 | this.label4.Text = "Icon路径:";
137 | //
138 | // label5
139 | //
140 | this.label5.AutoSize = true;
141 | this.label5.Location = new System.Drawing.Point(12, 90);
142 | this.label5.Name = "label5";
143 | this.label5.Size = new System.Drawing.Size(41, 12);
144 | this.label5.TabIndex = 3;
145 | this.label5.Text = "包名:";
146 | //
147 | // label6
148 | //
149 | this.label6.AutoSize = true;
150 | this.label6.Location = new System.Drawing.Point(12, 140);
151 | this.label6.Name = "label6";
152 | this.label6.Size = new System.Drawing.Size(65, 12);
153 | this.label6.TabIndex = 5;
154 | this.label6.Text = "系统要求:";
155 | //
156 | // label7
157 | //
158 | this.label7.AutoSize = true;
159 | this.label7.Location = new System.Drawing.Point(12, 165);
160 | this.label7.Name = "label7";
161 | this.label7.Size = new System.Drawing.Size(65, 12);
162 | this.label7.TabIndex = 7;
163 | this.label7.Text = "屏幕支持:";
164 | //
165 | // label8
166 | //
167 | this.label8.AutoSize = true;
168 | this.label8.Location = new System.Drawing.Point(12, 190);
169 | this.label8.Name = "label8";
170 | this.label8.Size = new System.Drawing.Size(53, 12);
171 | this.label8.TabIndex = 8;
172 | this.label8.Text = "分辨率:";
173 | //
174 | // label9
175 | //
176 | this.label9.AutoSize = true;
177 | this.label9.Location = new System.Drawing.Point(12, 215);
178 | this.label9.Name = "label9";
179 | this.label9.Size = new System.Drawing.Size(65, 12);
180 | this.label9.TabIndex = 9;
181 | this.label9.Text = "用户权限:";
182 | //
183 | // label10
184 | //
185 | this.label10.AutoSize = true;
186 | this.label10.Location = new System.Drawing.Point(12, 287);
187 | this.label10.Name = "label10";
188 | this.label10.Size = new System.Drawing.Size(65, 12);
189 | this.label10.TabIndex = 10;
190 | this.label10.Text = "特性支持:";
191 | //
192 | // txtApplication
193 | //
194 | this.txtApplication.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
195 | | System.Windows.Forms.AnchorStyles.Right)));
196 | this.txtApplication.Location = new System.Drawing.Point(83, 12);
197 | this.txtApplication.Name = "txtApplication";
198 | this.txtApplication.ReadOnly = true;
199 | this.txtApplication.Size = new System.Drawing.Size(205, 21);
200 | this.txtApplication.TabIndex = 0;
201 | //
202 | // txtVersion
203 | //
204 | this.txtVersion.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
205 | | System.Windows.Forms.AnchorStyles.Right)));
206 | this.txtVersion.Location = new System.Drawing.Point(83, 37);
207 | this.txtVersion.Name = "txtVersion";
208 | this.txtVersion.ReadOnly = true;
209 | this.txtVersion.Size = new System.Drawing.Size(205, 21);
210 | this.txtVersion.TabIndex = 1;
211 | //
212 | // txtVersionCode
213 | //
214 | this.txtVersionCode.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
215 | | System.Windows.Forms.AnchorStyles.Right)));
216 | this.txtVersionCode.Location = new System.Drawing.Point(83, 62);
217 | this.txtVersionCode.Name = "txtVersionCode";
218 | this.txtVersionCode.ReadOnly = true;
219 | this.txtVersionCode.Size = new System.Drawing.Size(259, 21);
220 | this.txtVersionCode.TabIndex = 2;
221 | //
222 | // txtPackage
223 | //
224 | this.txtPackage.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
225 | | System.Windows.Forms.AnchorStyles.Right)));
226 | this.txtPackage.Location = new System.Drawing.Point(83, 87);
227 | this.txtPackage.Name = "txtPackage";
228 | this.txtPackage.ReadOnly = true;
229 | this.txtPackage.Size = new System.Drawing.Size(259, 21);
230 | this.txtPackage.TabIndex = 3;
231 | //
232 | // txtIconPath
233 | //
234 | this.txtIconPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
235 | | System.Windows.Forms.AnchorStyles.Right)));
236 | this.txtIconPath.Location = new System.Drawing.Point(83, 112);
237 | this.txtIconPath.Name = "txtIconPath";
238 | this.txtIconPath.ReadOnly = true;
239 | this.txtIconPath.Size = new System.Drawing.Size(259, 21);
240 | this.txtIconPath.TabIndex = 4;
241 | //
242 | // txtMinSdk
243 | //
244 | this.txtMinSdk.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
245 | | System.Windows.Forms.AnchorStyles.Right)));
246 | this.txtMinSdk.Location = new System.Drawing.Point(83, 137);
247 | this.txtMinSdk.Name = "txtMinSdk";
248 | this.txtMinSdk.ReadOnly = true;
249 | this.txtMinSdk.Size = new System.Drawing.Size(32, 21);
250 | this.txtMinSdk.TabIndex = 5;
251 | //
252 | // txtPermission
253 | //
254 | this.txtPermission.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
255 | | System.Windows.Forms.AnchorStyles.Right)));
256 | this.txtPermission.Location = new System.Drawing.Point(83, 212);
257 | this.txtPermission.Multiline = true;
258 | this.txtPermission.Name = "txtPermission";
259 | this.txtPermission.ReadOnly = true;
260 | this.txtPermission.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
261 | this.txtPermission.Size = new System.Drawing.Size(259, 68);
262 | this.txtPermission.TabIndex = 9;
263 | //
264 | // txtFeature
265 | //
266 | this.txtFeature.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
267 | | System.Windows.Forms.AnchorStyles.Right)));
268 | this.txtFeature.Location = new System.Drawing.Point(83, 284);
269 | this.txtFeature.Multiline = true;
270 | this.txtFeature.Name = "txtFeature";
271 | this.txtFeature.ReadOnly = true;
272 | this.txtFeature.ScrollBars = System.Windows.Forms.ScrollBars.Vertical;
273 | this.txtFeature.Size = new System.Drawing.Size(259, 68);
274 | this.txtFeature.TabIndex = 10;
275 | //
276 | // txtScreenSolution
277 | //
278 | this.txtScreenSolution.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
279 | | System.Windows.Forms.AnchorStyles.Right)));
280 | this.txtScreenSolution.Location = new System.Drawing.Point(83, 187);
281 | this.txtScreenSolution.Name = "txtScreenSolution";
282 | this.txtScreenSolution.ReadOnly = true;
283 | this.txtScreenSolution.Size = new System.Drawing.Size(259, 21);
284 | this.txtScreenSolution.TabIndex = 8;
285 | //
286 | // txtScreenSize
287 | //
288 | this.txtScreenSize.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
289 | | System.Windows.Forms.AnchorStyles.Right)));
290 | this.txtScreenSize.Location = new System.Drawing.Point(83, 162);
291 | this.txtScreenSize.Name = "txtScreenSize";
292 | this.txtScreenSize.ReadOnly = true;
293 | this.txtScreenSize.Size = new System.Drawing.Size(259, 21);
294 | this.txtScreenSize.TabIndex = 7;
295 | //
296 | // btnOpen
297 | //
298 | this.btnOpen.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left)));
299 | this.btnOpen.Location = new System.Drawing.Point(93, 430);
300 | this.btnOpen.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
301 | this.btnOpen.Name = "btnOpen";
302 | this.btnOpen.Size = new System.Drawing.Size(75, 23);
303 | this.btnOpen.TabIndex = 14;
304 | this.btnOpen.Text = "打开...";
305 | this.btnOpen.UseVisualStyleBackColor = true;
306 | this.btnOpen.Click += new System.EventHandler(this.btnOpen_Click);
307 | //
308 | // txtMinVersion
309 | //
310 | this.txtMinVersion.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
311 | | System.Windows.Forms.AnchorStyles.Right)));
312 | this.txtMinVersion.Location = new System.Drawing.Point(119, 137);
313 | this.txtMinVersion.Name = "txtMinVersion";
314 | this.txtMinVersion.ReadOnly = true;
315 | this.txtMinVersion.Size = new System.Drawing.Size(223, 21);
316 | this.txtMinVersion.TabIndex = 6;
317 | //
318 | // txtApkSize
319 | //
320 | this.txtApkSize.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
321 | | System.Windows.Forms.AnchorStyles.Right)));
322 | this.txtApkSize.Location = new System.Drawing.Point(83, 396);
323 | this.txtApkSize.Name = "txtApkSize";
324 | this.txtApkSize.ReadOnly = true;
325 | this.txtApkSize.Size = new System.Drawing.Size(259, 21);
326 | this.txtApkSize.TabIndex = 12;
327 | //
328 | // txtApkPath
329 | //
330 | this.txtApkPath.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
331 | | System.Windows.Forms.AnchorStyles.Right)));
332 | this.txtApkPath.Location = new System.Drawing.Point(83, 371);
333 | this.txtApkPath.Name = "txtApkPath";
334 | this.txtApkPath.ReadOnly = true;
335 | this.txtApkPath.Size = new System.Drawing.Size(259, 21);
336 | this.txtApkPath.TabIndex = 11;
337 | //
338 | // label11
339 | //
340 | this.label11.AutoSize = true;
341 | this.label11.Location = new System.Drawing.Point(12, 399);
342 | this.label11.Name = "label11";
343 | this.label11.Size = new System.Drawing.Size(41, 12);
344 | this.label11.TabIndex = 12;
345 | this.label11.Text = "大小:";
346 | //
347 | // label12
348 | //
349 | this.label12.AutoSize = true;
350 | this.label12.Location = new System.Drawing.Point(12, 374);
351 | this.label12.Name = "label12";
352 | this.label12.Size = new System.Drawing.Size(65, 12);
353 | this.label12.TabIndex = 11;
354 | this.label12.Text = "文件路径:";
355 | //
356 | // label13
357 | //
358 | this.label13.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
359 | | System.Windows.Forms.AnchorStyles.Right)));
360 | this.label13.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
361 | this.label13.Location = new System.Drawing.Point(12, 360);
362 | this.label13.Name = "label13";
363 | this.label13.Size = new System.Drawing.Size(330, 2);
364 | this.label13.TabIndex = 18;
365 | //
366 | // MainForm
367 | //
368 | this.AcceptButton = this.btnOpen;
369 | this.AllowDrop = true;
370 | this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
371 | this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
372 | this.CancelButton = this.btnClose;
373 | this.ClientSize = new System.Drawing.Size(354, 464);
374 | this.Controls.Add(this.label13);
375 | this.Controls.Add(this.txtApkSize);
376 | this.Controls.Add(this.txtApkPath);
377 | this.Controls.Add(this.label11);
378 | this.Controls.Add(this.label12);
379 | this.Controls.Add(this.txtMinVersion);
380 | this.Controls.Add(this.btnOpen);
381 | this.Controls.Add(this.txtScreenSolution);
382 | this.Controls.Add(this.txtScreenSize);
383 | this.Controls.Add(this.txtFeature);
384 | this.Controls.Add(this.txtPermission);
385 | this.Controls.Add(this.txtMinSdk);
386 | this.Controls.Add(this.txtIconPath);
387 | this.Controls.Add(this.txtPackage);
388 | this.Controls.Add(this.txtVersionCode);
389 | this.Controls.Add(this.txtVersion);
390 | this.Controls.Add(this.txtApplication);
391 | this.Controls.Add(this.label10);
392 | this.Controls.Add(this.label9);
393 | this.Controls.Add(this.label8);
394 | this.Controls.Add(this.label7);
395 | this.Controls.Add(this.label6);
396 | this.Controls.Add(this.label5);
397 | this.Controls.Add(this.label4);
398 | this.Controls.Add(this.label3);
399 | this.Controls.Add(this.label2);
400 | this.Controls.Add(this.label1);
401 | this.Controls.Add(this.btnPlayStore);
402 | this.Controls.Add(this.imgIcon);
403 | this.Controls.Add(this.btnClose);
404 | this.Font = new System.Drawing.Font("宋体", 9F);
405 | this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedSingle;
406 | this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
407 | this.Margin = new System.Windows.Forms.Padding(3, 2, 3, 2);
408 | this.MaximizeBox = false;
409 | this.Name = "MainForm";
410 | this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
411 | this.Text = "Apk信息查看器 v1.0";
412 | this.Shown += new System.EventHandler(this.MainForm_Shown);
413 | ((System.ComponentModel.ISupportInitialize)(this.imgIcon)).EndInit();
414 | this.ResumeLayout(false);
415 | this.PerformLayout();
416 |
417 | }
418 |
419 | #endregion
420 |
421 | private System.Windows.Forms.Button btnClose;
422 | private System.Windows.Forms.PictureBox imgIcon;
423 | private System.Windows.Forms.Button btnPlayStore;
424 | private System.Windows.Forms.Label label1;
425 | private System.Windows.Forms.Label label2;
426 | private System.Windows.Forms.Label label3;
427 | private System.Windows.Forms.Label label4;
428 | private System.Windows.Forms.Label label5;
429 | private System.Windows.Forms.Label label6;
430 | private System.Windows.Forms.Label label7;
431 | private System.Windows.Forms.Label label8;
432 | private System.Windows.Forms.Label label9;
433 | private System.Windows.Forms.Label label10;
434 | private System.Windows.Forms.TextBox txtApplication;
435 | private System.Windows.Forms.TextBox txtVersion;
436 | private System.Windows.Forms.TextBox txtVersionCode;
437 | private System.Windows.Forms.TextBox txtPackage;
438 | private System.Windows.Forms.TextBox txtIconPath;
439 | private System.Windows.Forms.TextBox txtMinSdk;
440 | private System.Windows.Forms.TextBox txtPermission;
441 | private System.Windows.Forms.TextBox txtFeature;
442 | private System.Windows.Forms.TextBox txtScreenSolution;
443 | private System.Windows.Forms.TextBox txtScreenSize;
444 | private System.Windows.Forms.Button btnOpen;
445 | private System.Windows.Forms.TextBox txtMinVersion;
446 | private System.Windows.Forms.TextBox txtApkSize;
447 | private System.Windows.Forms.TextBox txtApkPath;
448 | private System.Windows.Forms.Label label11;
449 | private System.Windows.Forms.Label label12;
450 | private System.Windows.Forms.Label label13;
451 | }
452 | }
453 |
454 |
--------------------------------------------------------------------------------
/ApkInfo/MainForm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Diagnostics;
3 | using System.IO;
4 | using System.Runtime.InteropServices;
5 | using System.Windows.Forms;
6 |
7 | namespace ApkInfo
8 | {
9 | public partial class MainForm : Form
10 | {
11 | public MainForm(string[] args)
12 | {
13 | InitializeComponent();
14 |
15 | this.AllowDrop = true;
16 | this.DragEnter += new DragEventHandler(MainForm_DragEnter);
17 | this.DragDrop += new DragEventHandler(MainForm_DragDrop);
18 | this.imgIcon.Image = this.Icon.ToBitmap();
19 | AddAboutMenu();
20 | //支持命令行
21 | if (args.Length != 0 && File.Exists(args[0]))
22 | {
23 | DecodeApk(args[0]);
24 | }
25 | }
26 |
27 | #region 系统菜单操作API
28 | private const Int32 WM_SYSCOMMAND = 0x112;
29 | private const Int32 MF_SEPARATOR = 0x800;
30 | private const Int32 MF_BYPOSITION = 0x400;
31 | private const Int32 IDM_ABOUT = 999;
32 | [DllImport("user32.dll")]
33 | private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
34 | [DllImport("user32.dll")]
35 | private static extern bool InsertMenu(IntPtr hMenu, Int32 wPosition, Int32 wFlags, Int32 wIDNewItem, string lpNewItem);
36 | #endregion
37 |
38 | private void AddAboutMenu()
39 | {
40 | IntPtr sysMenuHandle = GetSystemMenu(this.Handle, false);
41 | InsertMenu(sysMenuHandle, 5, MF_BYPOSITION | MF_SEPARATOR, 0, string.Empty);
42 | InsertMenu(sysMenuHandle, 6, MF_BYPOSITION, IDM_ABOUT, "关于...");
43 | }
44 |
45 | protected override void WndProc(ref Message m)
46 | {
47 | if (m.Msg == WM_SYSCOMMAND)
48 | {
49 | switch (m.WParam.ToInt32())
50 | {
51 | case IDM_ABOUT:
52 | AboutForm.ShowAbout(this);
53 | return;
54 | default:
55 | break;
56 | }
57 | }
58 | base.WndProc(ref m);
59 | }
60 |
61 | private void MainForm_DragEnter(object sender, DragEventArgs e)
62 | {
63 | e.Effect = e.Data.GetDataPresent(DataFormats.FileDrop) ? DragDropEffects.Link : DragDropEffects.None;
64 | }
65 |
66 | private void MainForm_DragDrop(object sender, DragEventArgs e)
67 | {
68 | string path = ((Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString();
69 | if (File.Exists(path))
70 | {
71 | DecodeApk(path);
72 | }
73 | }
74 |
75 | private void DecodeApk(string apkPath)
76 | {
77 | if (!File.Exists(apkPath))
78 | return;
79 |
80 | ApkDecoder apkDecoder = new ApkDecoder(apkPath);
81 | apkDecoder.InfoParsedEvent += new Action(apkDecoder_InfoParsed);
82 | apkDecoder.AaptNotFoundEvent += new MethodInvoker(apkDecoder_AaptNotFound);
83 | }
84 |
85 | private void apkDecoder_InfoParsed(ApkDecoder apkDecoder)
86 | {
87 | this.Invoke(new Action(SafeInfoParsed), apkDecoder);
88 | }
89 |
90 | private void apkDecoder_AaptNotFound()
91 | {
92 | this.Invoke(new MethodInvoker(ShowAaptNotFoundInfo));
93 | }
94 |
95 | private void ShowAaptNotFoundInfo()
96 | {
97 | MessageBox.Show(this, "解析apk文件所需要的组件aapt.exe遗失,请下载此程序完整组件然后再试。", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning);
98 | }
99 |
100 | private void SafeInfoParsed(ApkDecoder apkDecoder)
101 | {
102 | txtApplication.Text = apkDecoder.AppName;
103 | txtVersion.Text = apkDecoder.AppVersion;
104 | txtVersionCode.Text = apkDecoder.AppVersionCode;
105 | txtPackage.Text = apkDecoder.PkgName;
106 | txtIconPath.Text = apkDecoder.IconPath;
107 | txtMinSdk.Text = apkDecoder.MinSdk;
108 | txtMinVersion.Text = apkDecoder.MinVersion;
109 | txtScreenSize.Text = apkDecoder.ScreenSupport;
110 | txtScreenSolution.Text = apkDecoder.ScreenSolutions;
111 | txtPermission.Text = apkDecoder.Permissions;
112 | txtFeature.Text = apkDecoder.Features;
113 | imgIcon.Image = (apkDecoder.AppIcon != null) ? apkDecoder.AppIcon : this.Icon.ToBitmap();
114 |
115 | txtApkPath.Text = apkDecoder.ApkPath;
116 | txtApkSize.Text = apkDecoder.ApkSize;
117 |
118 | this.btnPlayStore.Enabled = !string.IsNullOrEmpty(txtPackage.Text);
119 | }
120 |
121 | private void MainForm_Shown(object sender, EventArgs e)
122 | {
123 | btnOpen.Focus();
124 | }
125 |
126 | private void btnAppStore_Click(object sender, EventArgs e)
127 | {
128 | string url = string.Format("https://play.google.com/store/apps/details?id={0}", txtPackage.Text);
129 | Process.Start(url);
130 | }
131 |
132 | private void btnOpen_Click(object sender, EventArgs e)
133 | {
134 | OpenFileDialog dlg = new OpenFileDialog();
135 | dlg.Filter = "Apk文件(*.apk)|*.apk|所有文件(*.*)|*.*";
136 | if (dlg.ShowDialog(this) == DialogResult.OK)
137 | {
138 | DecodeApk(dlg.FileName);
139 | }
140 | }
141 |
142 | private void btnClose_Click(object sender, EventArgs e)
143 | {
144 | Close();
145 | }
146 | }
147 | }
148 |
--------------------------------------------------------------------------------
/ApkInfo/MainForm.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 | True
122 |
123 |
124 | True
125 |
126 |
127 | True
128 |
129 |
130 | True
131 |
132 |
133 | True
134 |
135 |
136 | True
137 |
138 |
139 | True
140 |
141 |
142 | True
143 |
144 |
145 | True
146 |
147 |
148 | True
149 |
150 |
151 | True
152 |
153 |
154 | True
155 |
156 |
157 | True
158 |
159 |
160 | True
161 |
162 |
163 | True
164 |
165 |
166 | True
167 |
168 |
169 | True
170 |
171 |
172 | True
173 |
174 |
175 | True
176 |
177 |
178 | True
179 |
180 |
181 | True
182 |
183 |
184 | True
185 |
186 |
187 | True
188 |
189 |
190 | True
191 |
192 |
193 | True
194 |
195 |
196 | True
197 |
198 |
199 | True
200 |
201 |
202 | True
203 |
204 |
205 | True
206 |
207 |
208 | True
209 |
210 |
211 |
212 |
213 | AAABAAEASEgAAAEAIACIVAAAFgAAACgAAABIAAAAkAAAAAEAIAAAAAAAAFEAABMLAAATCwAAAAAAAAAA
214 | AAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
215 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
216 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
217 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
218 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
219 | /wD///8A////AP///wD///8A////AP///wD///8ACRURAAkVEQAJFREACRURAAkVEQAJFREACRURAAkV
220 | EQAJFREACRURAAkVEQAJFREACRURAAkVEQAJFREACBMPAA4iHAAUMCgAG0I2GCpnVFEvdF9bJFlJKBg8
221 | MQAQJh8ABxEOAAgTDwAIExAACBQQAAgVEQAHEg8ADyYfABk9MgAjVkcpL3JeXCljUlMZPTIXEy4mAAwe
222 | GQAFDQsABg8NAAYPDQAGDw0ABg8NAAYPDQAGDw0ABg8NAAYPDQAGDw0ABg8NAAYPDQAGDw0ABg8NAAYP
223 | DQAGDw0A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
224 | /wD///8A////AP///wD///8ACBQRAAgUEQAIFBEACBQRAAgUEQAIFBEACBQRAAgUEQAIFBEACBQRAAgU
225 | EQAIFBEACBQRAAgUEQAIFBEACBMPAAwcFwAfSj01Oo50v0arjPVHrI76P5p/1ihjUWAOIx0ABxANAAgU
226 | EAAIFBAACBMPAAgTDwAGEA0ADiMdACljUWA/m3/XR62O+kaqjPY5jXO+Hkk8NQoYEwAFDQsABg8MAAYP
227 | DAAGDwwABg8MAAYPDAAGDwwABg8MAAYPDAAGDwwABg8MAAYPDAAGDwwABg8MAAYPDAAGDwwA////AP//
228 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
229 | /wD///8ACRYSAAkWEgAJFhIACRYSAAkWEgAJFhIACRYSAAkWEgAJFhIACRYSAAkWEgAJFhIACRYSAAkW
230 | EgAJFhIABg8NABY2LTVHsJDwT8Of/029m/9Mu5n/S7mX/0m1k/8lW0p2AwcGAAQLCQAFDQsADR8ZAA0h
231 | GwAKGRQAJVxLdkm1lP9Lupj/S7qY/0u6mf9Nv5z/Rq2O7xUyKTQECQcABg8MAAYPDAAGDwwABg8MAAYP
232 | DAAGDwwABg8MAAYPDAAGDwwABg8MAAYPDAAGDwwABg8MAAYPDAAGDwwA////AP///wD///8A////AP//
233 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AEi0lABIt
234 | JQASLSUAEi0lABItJQASLSUAEi0lABItJQASLSUAEi0lABItJQASLSUAEi0lABItJQASLSUAECggADmO
235 | dLVQyqT/TcOf/0zCnv9Lv5v/SLiV/0axkP9BoYL0DSEbJwMIBgAGDgwADyUeAA4kHQAWNy0nQqSF80ay
236 | kf9HtpP/SbqX/0q7mP9Ku5n/TsOf/ziKcbYQJiAAEiskABIsJAASLCQAEiwkABIsJAASLCQAEiwkABIs
237 | JAASLCQAEiwkABIsJAASLCQAEiwkABIsJAASLCQA////AP///wD///8A////AP///wD///8A////AP//
238 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AGDwxABg8MQAYPDEAGDwxABg8
239 | MQAYPDEAGDwxABg8MQAYPDEAGDwxABg8MQAYPDEAGDwxABg8MQAXOi8AG0M2HEi1k/FPyKL/Tcah/0vC
240 | nv9Kvpr/SLmV/0SujP86pIL/H1FAbQ0iGwAQKCAADyggAA0hGgAgUkFuO6eE/0OujP9GtpP/SLuX/0m8
241 | mP9KvZn/S76a/0aujvEcQzccGDswABk9MgAZPTIAGT0yABk9MgAZPTIAGT0yABk9MgAZPTIAGT0yABk9
242 | MgAZPTIAGT0yABk9MgAZPTIA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
243 | /wD///8A////AP///wD///8A////AP///wD///8AJFpJACRaSQAkWkkAJFpJACRaSQAkWkkAJFpJACRa
244 | SQAkWkkAJFpJACRaSQAkWkkAJFpJACRaSQAjWEgAJ2FPKkq5l/pNxaD/TMSf/0rAm/9JvJj/RrWS/0Gr
245 | if8vmXb/JWRPhxpCNQAcRzkAHUs8ABxHOAAnaVOIMJx5/0Grif9GtJH/R7iV/0i6lv9Ju5j/SryZ/0ew
246 | kPomXEwqIlRFACNWRgAjVkYAI1ZGACNWRgAjVkYAI1ZGACNWRgAjVkYAI1ZGACNWRgAjVkYAI1ZGACNW
247 | RgAjVkYA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
248 | /wD///8A////AP///wD///8AJV1MACVdTAAlXUwAJV1MACVdTAAlXUwAJV1MACVdTAAlXUwAJV1MACVd
249 | TAAlXUwAJV1MACVdTAAlW0oAKGNRK0m4lfpMxJ7/S8Gd/0m9mf9HuZX/RbOQ/0Cph/8tlHL/JGFMiBpC
250 | NAAbRjcAGUEzABg7LwAjX0uJLph1/0Cph/9Fso//RraT/0i4lf9IuZb/SbqX/0auj/kmXUwqI1VGACNX
251 | RwAjV0cAI1dHACNXRwAjV0cAI1dHACNXRwAjV0cAI1dHACNXRwAjV0cAI1dHACNXRwAjV0cA////AP//
252 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
253 | /wD///8AJV1MACVdTAAlXUwAJV1MACVdTAAlXUwAJV1MACVdTAAlXUwAJV1MACVdTAAlXEsAJVxLACVc
254 | SwAkWkoAJ2JQK0i2lPpLwZz/SsCb/0i8l/9GtpP/RLCN/z+mhP8rkW7/IVpGiBY4LAAYPTAAGkM1ABlA
255 | MwAjX0uHLJRx/z+mhP9Dr4z/RbOQ/0a2kv9Ht5T/SLiW/0WtjfklXEsqIlRFACNWRgAjVkYAI1ZGACNX
256 | RwAjV0cAI1dHACNXRwAjV0cAI1dHACNXRwAjV0cAI1dHACNXRwAjV0cA////AP///wD///8A////AP//
257 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AIVNEACFT
258 | RAAhU0QAIVNEACFTRAAhU0QAIVNEACFTRAAhU0QAIVNDACJURQAiVkYAI1lIACNYRwAiVkYAJV5MKke0
259 | kvlKv5r/SL2Y/0e5lf9Es5D/Qq2L/z2jgv8pjWv/IFpFhxc6LQAaQjQAHkw8ABxIOAAkYkyHKpBu/z2k
260 | gv9CrYr/Q7CN/0WzkP9Gs5H/R7WT/0Sri/kkWkkqIVJDACJURAAiVEUAIVJDACFRQgAgT0EAIE9BACBP
261 | QQAgT0EAIE9BACBPQQAgT0EAIE9BACBPQQAgT0EA////AP///wD///8A////AP///wD///8A////AP//
262 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AECcgABAnIAAQJyAAECcgABAn
263 | IAAQJyAAECcgABAnIAAQJyAADyUeABc3LQAfSz0AIFBBACJWRgAiVkYAJV1MKkWyj/lIvJf/R7qV/0W3
264 | k/9DsY7/QaqI/zugfv8miGb/I2FLhx5MPAAjVUYAIlNEABk/MQAgWkaIKY1r/zygf/9AqYf/Qq2K/0Ou
265 | jP9EsI7/RbOQ/0KoiPkkWUkqIVJDACFTQwAhUEIAHUY6ABQwJwALHBcADB4ZAAweGQAMHhkADB4ZAAwe
266 | GQAMHhkADB4ZAAweGQAMHhkA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
267 | /wD///8A////AP///wD///8A////AP///wD///8ADyMdAA8jHQAPIx0ADyMdAA8jHQAPIx0ADyMdAA8j
268 | HQAPIx0ADiEbABY0KwAfSj0AHkg7AB5LPQAfTj8AJFtJKkOujPlGuZT/RLaR/0Oyjv9BrIn/P6eF/zmc
269 | ev8jgmH/HlRBhRxENwAiVEUAIE9BABo/NAAeVECFJYdl/zmce/8+poP/QKmH/0GriP9CrIn/Q6+M/0Gl
270 | hfkjV0cqH04/ACNXRwAhUEIAHUY6ABMtJQAKFxMACxoVAAsaFQALGhUACxoVAAsaFQALGhUACxoVAAsa
271 | FQALGhUA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
272 | /wD///8A////AP///wD///8ADyQeAA8kHgAPJB4ADyQeAA8kHgAPJB4ADyQeAA8kHgAPJB4ADiIcABY1
273 | LAAfSj0AHkk8AB1HOwAUMikAIldGKUKriflEtJD/Q7CN/0KujP9Bq4n/QaiH/z+lhP85nn7/OpF21TmL
274 | c6c7kXewO491rzqMc6c6k3fVOZ9+/z+lhf9AqIf/QKiH/z+nhv9AqYf/QauJ/z+hgfkiVUUpGT0yACRX
275 | RwAhUEIAHUY6ABMuJgAKGBQACxsWAAsbFgALGxYACxsWAAsbFgALGxYACxsWAAsbFgALGxYA////AP//
276 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
277 | /wD///8ADyQeAA8kHgAPJB4ADyQeAA8kHgAPJB4ADyQeAA8kHgAPJB4ADiIcABY1LAAcRTkAHUc6ByZd
278 | TEAucFyEPZd8xUeykf9ItZT/SraW/0u5mP9Mu5r/Tb6c/07Anf9Pwp//T8Sh/0/Gov9PxaH/T8Wh/0/F
279 | of9Ow6D/TsCe/02+nP9MvJr/S7mY/0q3lv9JtJT/SLKS/0avj/89lXvEMHVghCtoVUAgTkAHG0E1ABMu
280 | JgAKGBQACxsWAAsbFgALGxYACxsWAAsbFgALGxYACxsWAAsbFgALGxYA////AP///wD///8A////AP//
281 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ADyUeAA8l
282 | HgAPJR4ADyUeAA8lHgAPJR4ADyUeAA8lHgAPJR4ADiIcABQwJwApZFNVQJ6C10u5mP9PxKH/T8ai/0/F
283 | of9Px6P/UMql/1DLpv9RzKf/Uc2n/1HOqP9Rz6n/Uc6o/1HOqP9Rzqj/Uc6o/1HNp/9Rzaf/Uc2n/1HM
284 | p/9Qy6b/UMml/0/Io/9PxqL/TsOg/03Anf9NwJ3/Tb6c/0m0lP9AnYHWKWNRWBAoIQAKGBQACxsWAAsb
285 | FgALGxYACxsWAAsbFgALGxYACxsWAAsbFgALGxYA////AP///wD///8A////AP///wD///8A////AP//
286 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ADyMdAA0gGwANHxoADSEbAA0f
287 | GQANHxkADR8ZAA0fGQANHhkAChgTACRZSWVOwp//UMmk/1DIo/9QyqX/Ucyn/1HNp/9Rzaf/Uc6o/1HO
288 | qP9Rzqj/Uc6o/1HPqf9Sz6n/Uc+p/1HPqf9Rzqj/Uc6o/1HNqP9Rzaj/Uc2n/1HMp/9RzKf/UMum/1DK
289 | pf9QyaT/T8ij/0/Hov9PxaH/TsOg/07Bnv9OwZ7/Tbya/yJTRWMHEg8AChkUAAoZFAAKGRQAChkUAAoZ
290 | FAALGxYACxoVAAsbFgAMHRgA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
291 | /wD///8A////AP///wD///8A////AP///wD///8ABxIPABY0KwAaQDQAFjYsABxFOQAbQzcAG0I3ABtD
292 | NwAbQjYAGT4zAkCgg89RyqX/T8ei/1DIpP9QyqX/Ucyn/1HMp/9RzKf/Uc2n/1HNqP9Rzaj/Uc6o/1HO
293 | qf9Sz6n/Uc+p/1HOqP9Rzqj/Uc6o/1HNqP9Rzaj/Uc2n/1HMp/9RzKb/UMum/1DKpf9QyaT/T8ij/0/G
294 | ov9PxaH/TsOg/07Cn/9Nv53/TsCe/z+bf9AaQTUDHEU4ABxFOAAcRTgAHEY5AB1HOgAXOS8AGj80ABU0
295 | KwAKFxMA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
296 | /wD///8A////AP///wD///8ABQwKABxDNwAjVkYAGT4yACZeTQAsbVkALW9bACxuWwAsbloALGxZDUWt
297 | juFPxqL/T8ai/1DIpP9QyqX/Ucum/1HMp/9RzKf/Uc2n/1HNqP9Rzaj/Uc6o/1HPqf9Rz6n/Uc+p/1HO
298 | qP9Rzqj/Uc6o/1HNqP9Rzaj/Uc2n/1HMp/9RzKb/UMum/1DKpf9QyaT/T8ij/0/Hov9PxaH/TsOg/07C
299 | n/9Nv5z/TL2b/0KjhuAoY1EMKWVSACllUwApZVMAKGNRACRYSAAaQTUAIVFCABo/NAAHEQ4A////AP//
300 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
301 | /wD///8ABQ0KABtBNQAiU0QAGj8zABk+MgAcRjkALG5aACppVgAqaVYAKWZUDESqi99PxaH/T8ai/1DI
302 | pP9QyqX/Ucum/1HMp/9RzKf/Uc2n/1HNqP9Rzqj/Uc6o/1HOqf9Rz6n/Uc6o/1HOqP9Rzaj/Uc2o/1HO
303 | qP9Rzqj/Uc2o/1HMp/9RzKb/UMum/1DKpf9QyaT/T8ij/0/Ho/9PxaL/TsOg/07Bnv9Nvpz/TL2b/0Gi
304 | hN8nX04LKGFQAChiUAAqZ1QAGDswABY3LQAbQjYAIE5AABk+MwAHEg8A////AP///wD///8A////AP//
305 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ABQ0KABtB
306 | NQAiU0QAGj8zABk+MwAXOzAAJ2JPACppVgAqaFUAKWVTDESpit9PxaH/T8Wh/1DIpP9QyqX/UMum/1HM
307 | p/9RzKf/Uc2n/1HNqP9Rzqj/Uc6p/1HOqf9Rzqj/Uc6o/1HOqP9Rzqj/Uc6o/1HOqP9Rzqj/Uc6o/1HN
308 | p/9RzKf/UMum/1DKpf9QyaT/T8ij/0/Ho/9PxaL/TsOg/03Bnv9Mvpz/TL2a/0GhhN8nYE4MKGJQAChj
309 | UQAmX04AEzEoABY4LQAbQjYAIE5AABk+MwAHEg8A////AP///wD///8A////AP///wD///8A////AP//
310 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ABQ0KABtBNQAiU0QAGj8zABk/
311 | MwAYPTEAG0U3AChjUQAqaVYAKGVSDEOoieBOxKD/T8Wh/1DIpP9QyqX/UMqm/1HMpv9Rzaf/Uc2n/1HN
312 | qP9Rzqj/Uc+p/1HOqP9Rzqj/Uc6o/1HOqP9Rzqj/Uc6o/1HOqP9Rzqj/Uc2o/1HNp/9RzKb/UMum/1DK
313 | pf9QyaT/T8ij/0/Ho/9PxaL/TsOg/03Bnv9Mvpz/TLya/0Ggg98mXk0MKGJQACZdTAAeTT0AFDMpABc4
314 | LgAbQjYAIE5AABk+MwAHEg8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
315 | /wD///8A////AP///wD///8A////AP///wD///8ABQ0KABtBNQAiU0QAGj8zABk/MwAYPjIAGkM1ABxH
316 | OQApZlMAKGRRDEOniN9OxKD/TsWh/0/Io/9QyaT/UMql/1HMpv9Rzaf/Uc2o/1HNqP9Rzqj/Uc+p/1HO
317 | qf9Rzqj/Uc6o/1HOqP9Rzqj/Uc6p/1HOqf9Rzqn/Uc6o/1HNp/9QzKb/UMum/1DKpf9QyaT/T8ik/0/H
318 | o/9PxaH/TsOg/03Bnv9Mvpv/TLya/0Cggt8mX00MKGJQABtENgAdSToAFDQqABc4LgAbQjYAIE5AABk+
319 | MwAHEg8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
320 | /wD///8A////AP///wD///8ABQ0KABtBNgAhUkMAFzkvABc5LgAWOC0AGUE0ABEuJAAfT0AAKWhUDEOm
321 | iOBOxKD/TsWh/0/Io/9QyaT/UMql/1HLpv9Rzaf/Uc2n/1HNqP9Rzqn/Uc+p/1HOqf9Rzqj/Uc6o/1HO
322 | qP9Rzqj/Uc+p/1HOqf9Rzqj/Uc2o/1HNp/9QzKb/UMum/1DKpf9QyaX/UMik/0/Ho/9PxaH/TsOg/03A
323 | nv9Mvpv/TLya/0CfgeAnYk8MHkw9ABEuJAAcSDoAEi4lABQyKQAYPDEAIE0/ABk+MwAHEg8A////AP//
324 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
325 | /wD///8ABQ0LABo/NAAiVEUNKGFPZzSBaKkxfWSuJ2NPdBMwJhYNIRoAKGRRDD6jhOBMw57/T8Wh/0/H
326 | o/9QyaT/UMql/1HLpv9Rzaf/Uc2o/1HOqP9Rz6n/Us+p/1HPqf9Rz6n/Uc6o/1HOqf9Rz6n/Uc+p/1HO
327 | qf9Rzqj/Uc2o/1HMp/9QzKb/UMum/1DKpf9QyaT/UMik/0/Ho/9PxaH/TsOg/03Anv9Mvpv/SbqY/zyc
328 | fuEnYU4NDiIbABMxJhUoZVFzMHlhqjN+Z6coY1FmIE9BDBg8MQAHEg8A////AP///wD///8A////AP//
329 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ABAoIABo/
330 | NBpAnYDMSraV/0iykf9Dqon/NZh3/yJvVOELHxcwHUg6BTOdfOBEvpn/T8Wh/0/Ho/9QyaT/UMql/1HL
331 | pv9Rzaf/Uc2o/1HOqP9Sz6n/Us+p/1LPqf9Sz6n/Uc+p/1LPqf9Sz6n/Us+p/1HOqf9Rzqj/Uc2n/1HM
332 | p/9RzKf/UMum/1DKpf9QyaT/UMik/0/Ho/9PxaL/TsOg/03Bnv9Nvpz/QLWR/zKWd+AdRTgFCh0WLSJu
333 | U982l3f/RKuK/0iykf9JtZP/P5p/yhk8MhoGDwwA////AP///wD///8A////AP///wD///8A////AP//
334 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ABQsJADWBaq9PxKH/SruZ/0i3
335 | lf9Er43/Lph1/x6AXv8UUjrREi8lGTCZeNtAu5b/T8Wh/0/Ho/9QyaX/UMum/1HMpv9RzKf/Uc2o/1HO
336 | qP9Sz6n/Us+p/1LPqf9Sz6n/Us+p/1LPqf9Sz6n/Uc+p/1HOqP9Rzqj/Uc2n/1HMp/9RzKf/UMum/1DK
337 | pf9QyaT/UMik/0/Ho/9PxaH/TsOg/03Bnv9Nvpz/PLOO/y2QcdsSLyUXFVA6zx+BX/8vmXb/Ra+O/0i4
338 | lf9JuZf/Tb+d/zN9Z60JFREA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
339 | /wD///8A////AP///wD///8A////AP///wD///8AG0I2QUy9m/pPyKP/Tsai/0vCnP9HupX/NaaB/yKI
340 | Zf8TXkL/EDYoZi6VdNI+u5X/T8Wh/0/Io/9QyqX/Ucum/1HMp/9RzKf/Uc2o/1HOqP9Rz6n/Us+p/1LP
341 | qf9Sz6n/Us+p/1LPqf9Sz6n/Uc+p/1HOqP9Rzqj/Uc2o/1HMp/9QzKb/UMum/1DKpf9QyaX/UMik/0/H
342 | o/9PxqL/TsSg/07Bnv9Mvpv/O7OO/yqIatEOLCBkFmNG/ySLaP81poL/R7mV/0vBnP9NxKD/TsOg/0q2
343 | lfoeSTw/////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
344 | /wD///8A////AP///wD///8AOY10dlDIpP9Rzaf/UMym/03Hof9Jv5r/OKyG/ySPav8VY0b/Dzgpjy2T
345 | ctE+upT/TsWh/1DIo/9QyqX/Ucum/1HMp/9Rzaf/Uc2o/1HOqP9Rzqn/Uc+p/1HPqf9Sz6n/Us+p/1LP
346 | qf9Sz6n/Uc+p/1HOqf9Rzqj/Uc2o/1HMp/9Qy6b/UMum/1DKpf9QyaX/UMik/0/Io/9PxqL/TsSg/07B
347 | nv9LvZv/O7OO/ymFaNANLiGOGGpM/yaSbf85rYf/Sr+Z/03Hof9PyqT/T8mk/07Cn/83h293////AP//
348 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
349 | /wD///8APJV6eVDIo/9Rzaf/UMym/03Hof9Jv5n/OKyG/ySPav8VYkX/DjUmkiuQcM8+upT/TsWh/1DI
350 | o/9QyqX/Ucum/1HMp/9Rzaf/Uc2o/1HOqP9Rzqj/Uc6p/1HOqf9Sz6n/Us+p/1LPqf9Sz6n/Uc6p/1HO
351 | qP9Rzqj/Uc2o/1HMp/9Qy6b/UMum/1DKpf9QyaT/UMmk/0/Io/9PxqL/TsSg/07Bnv9LvZv/O7OO/ymG
352 | aNANLyGRGGlL/yaSbf85rIf/Sr+a/03Iov9Py6X/UMmk/07Cn/86j3Z5////AP///wD///8A////AP//
353 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AOpF3d1DI
354 | o/9Rzaf/UMym/03Hof9Jvpn/OKyF/ySPav8VYET/DjUmkiyRcNE9upT/TsWh/1DIo/9QyqX/Ucum/1HM
355 | p/9Rzaf/Uc2o/1HOqP9Rzqj/Uc6o/1HOqf9Sz6n/Us+p/1LPqf9Sz6n/Uc6p/1HOqP9Rzqj/Uc6o/1HM
356 | p/9Qy6b/UMql/1DKpf9QyaX/UMmk/1DIo/9PxqL/TsSg/07Bnv9LvZv/O7OO/yiFZ9ANLSCSGGhK/yaR
357 | bP85rIf/SsCa/03Iov9PyqT/UMmk/07Cn/85jXN3////AP///wD///8A////AP///wD///8A////AP//
358 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AO5F3d1DIpP9Rzaj/UM2n/03H
359 | of9Jvpn/OKyG/ySOav8VYET/DjUmkyuRcNE9upT/TsWh/0/Io/9QyaX/Ucum/1HMp/9Rzaf/Uc2o/1HO
360 | qP9Rzqj/Uc6o/1HOqf9Sz6n/Us+p/1LPqf9Sz6n/Uc6p/1HOqP9Rzqj/Uc2o/1HMp/9Qy6b/UMum/1DK
361 | pf9QyqX/UMmk/1DIpP9PxqL/TsSg/07Bnv9MvZv/O7OO/yiEZ88NLB+QGGdJ/yWQa/85rYf/SsCb/03I
362 | ov9PyqT/UMmk/07Dn/85jXN3////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
363 | /wD///8A////AP///wD///8A////AP///wD///8AO5N4eFDIpP9Rzqj/UM2n/03Iov9Jvpn/OKuF/ySO
364 | av8VX0P/DzUmkyyScdI9u5T/TsWh/0/Ho/9QyaT/UMum/1HMp/9Rzaf/Uc2o/1HOqP9Rzqj/Uc6o/1HO
365 | qf9Sz6n/Us+p/1LPqf9Sz6n/Uc6p/1HOqP9Rzqj/Uc2o/1HMp/9Qy6b/UMum/1DKpf9QyaX/UMmk/1DI
366 | o/9PxqL/TsSg/07Bnv9MvZv/O7OO/yeEZs8NLB+QGGZJ/yaQbP85rYf/SsGb/03Iov9Py6X/UMmk/07D
367 | n/85jHN3////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
368 | /wD///8A////AP///wD///8AO5J4eFDIpP9Rzqj/UM2n/03Iov9Jvpn/OKuG/ySOav8VX0P/DjQlkiuR
369 | cNE9u5T/TsSg/0/Ho/9QyaT/UMqm/1HMp/9Rzaf/Uc6o/1HOqP9Rzqj/Uc6o/1HOqf9Sz6n/Us+p/1LP
370 | qf9Sz6n/Us+p/1HOqf9Rzqj/Uc2o/1HMp/9RzKf/UMum/1DLpv9QyaX/UMik/0/Io/9PxqL/TsSg/03B
371 | nv9MvZv/O7OO/yiFZtANLB+RF2ZJ/yaQbP85rYf/SsGb/03Iov9Py6X/UMql/07Cn/85jXR4////AP//
372 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
373 | /wD///8AO5N4eFDIpP9Rzqj/UM2n/03Iov9Jv5n/OKuG/ySOaf8VX0P/DTIkkiuPb889u5T/TsSg/0/G
374 | ov9QyKT/UMql/1HMp/9Rzaf/Uc2o/1HOqP9Rzqn/Uc6o/1HOqP9Sz6n/Us+p/1LPqf9Sz6n/Us+p/1HP
375 | qf9Rzqj/Uc2o/1HNp/9RzKf/Ucym/1DLpv9QyqX/UMik/0/Ho/9PxqL/TsOg/03Bnv9Mvpv/O7OO/yeE
376 | Zs8NLB+RGGZJ/yaRbP85rYf/SsCb/03Hof9Qy6X/UMql/07Cn/86jnR4////AP///wD///8A////AP//
377 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8APJR5eFDJ
378 | pP9Rzqj/UM2n/03Jov9Jv5r/OKuF/ySOaf8VYET/DjMlkiuQb9A9upT/TsSg/0/Gov9QyKT/UMql/1HM
379 | p/9Rzaf/Uc2o/1HOqP9Rzqj/Uc6o/1HOqP9Sz6n/Us+p/1LQqf9S0Kr/Us+p/1LPqf9Rzqj/Uc2o/1HN
380 | p/9Rzaf/Ucyn/1DLpv9QyqX/UMik/0/Ho/9PxqH/TsOg/03Bnv9Mvpv/O7OO/yeEZtANLB+RGGZJ/yaQ
381 | bP85rYf/SsCa/03Iov9QzKb/UMql/07Cn/84i3J2////AP///wD///8A////AP///wD///8A////AP//
382 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AO5N5eFDJpP9Rzqj/UM2n/03I
383 | ov9Jv5r/OKuF/ySOaf8VYET/DjMlkSuQcNE9upT/TsSg/0/Gov9QyKT/UMqm/1HMp/9Rzaf/Uc2o/1HO
384 | qP9Rzqj/Uc6o/1HOqP9Sz6n/UtCq/1LQqv9S0Kr/UtCq/1LPqf9Rzqn/Uc6o/1HNp/9Rzaf/Ucyn/1DL
385 | pv9QyqX/UMmk/0/Ho/9PxaH/TsOg/03Bnv9Mvpv/O7SO/yeEZtEMLB+RGGdK/yaQbP85rYf/SsCa/03I
386 | ov9QzKb/UMql/07Cn/85jHN3////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
387 | /wD///8A////AP///wD///8A////AP///wD///8AOpF3d1DIpP9Rzaj/UM2n/03Iov9Jv5r/OKuF/ySO
388 | af8VYET/DjMlkSuQcNE9upT/TsWg/0/Ho/9QyaT/UMum/1HMp/9Rzaf/Uc2o/1HOqP9Rzqj/Uc6o/1HO
389 | qP9Sz6n/UtCq/1LQqv9S0Kr/Us+p/1LPqf9Rzqn/Uc6o/1HNp/9Rzaf/Ucyn/1DLpv9QyqX/UMik/0/H
390 | o/9PxaL/TsOg/03Bnv9Mvpv/O7SO/yeEZtANKx+QGGdK/yaRbP85rYf/SsCb/03Iov9QzKb/UMum/07C
391 | n/84i3J2////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
392 | /wD///8A////AP///wD///8APJR5eVDIpP9Rzaj/UMym/03Hov9Jv5r/OKuG/ySOaf8VYET/DjMlkiuQ
393 | b9A9upT/TsWg/0/Ho/9QyaT/UMum/1HMp/9Rzaf/Uc2o/1HOqP9Rzqj/Uc6o/1HOqf9Sz6n/UtCq/1LQ
394 | qv9S0Kr/Us+p/1LPqf9Rz6n/Uc6o/1HNp/9RzKf/Ucyn/1DLpv9QyqX/UMmk/0/Ho/9PxqL/TsOg/03B
395 | nv9Mvpv/O7SO/yeEZtANKx+RGGdK/yaRbP85roj/SsGb/03Iov9QzKb/UMum/07Dn/85jHN3////AP//
396 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
397 | /wD///8AO5N5eFDIpP9Rzaj/UMym/03Hof9Jv5n/OKuG/ySOaf8VX0P/DjQmkiuRcNE9upT/TsWh/0/H
398 | o/9QyaT/Ucum/1HMp/9Rzaf/Uc2o/1HOqP9Rzqj/Uc6p/1LPqf9S0Kr/UtCq/1LQqv9Sz6n/Us+p/1LP
399 | qf9Rz6n/Uc6o/1HNp/9RzKf/Ucyn/1DLpv9QyqX/UMmk/0/Ho/9PxqL/TsSg/07Bnv9Mvpv/O7SO/yeE
400 | ZtANLB+SGGZJ/yaQbP85roj/SsGc/03Iov9QzKb/UMql/07Dn/86jnR4////AP///wD///8A////AP//
401 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AO5N4d1DI
402 | pP9Rzaj/UMym/03Hof9Jv5r/OKyG/ySOav8VYET/DjQlkSuRcNA8upT/TcWh/0/Ho/9QyaT/UMum/1HM
403 | p/9RzKf/Uc2o/1HOqP9Rzqj/Uc+p/1LPqf9S0Kr/UtCq/1LQqv9Sz6n/Uc+p/1HOqf9Rzqj/Uc6o/1HN
404 | p/9RzKf/Ucym/1DLpv9QyqX/UMmk/0/Ho/9PxqL/TsSg/07Cnv9Mvpv/O7SO/yiEZtEMLB+RGGZJ/yaQ
405 | bP85roj/SsGc/03Iov9PzKX/UMql/07Dn/85jHN3////AP///wD///8A////AP///wD///8A////AP//
406 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AO5N5eFDIpP9Rzqj/UMym/03H
407 | ov9Jv5r/OKyG/ySPav8VYET/DjQlkCuRcNE8upP/TcSg/0/Ho/9QyaT/UMum/1HMpv9RzKf/Uc2n/1HO
408 | qP9Rzqn/Uc+p/1LPqf9S0Kn/UtCq/1LPqf9Sz6n/Uc6o/1HOqP9Rzqj/Uc6o/1HNp/9RzKf/Ucym/1DL
409 | pv9QyqX/UMmk/0/Ho/9PxaL/TsSg/07Cnv9Mvpv/O7SO/yiFZ9ENLSCTGGdK/yaRbf85roj/SsGc/03I
410 | ov9Py6X/UMql/07DoP86jnR4////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
411 | /wD///8A////AP///wD///8A////AP///wD///8AO5N5eFDIpP9Rzqj/UM2n/03Iov9Jv5r/OK2G/yWP
412 | av8VYUT/DjQlkCuRcNA8upP/TcWg/0/Ho/9QyaT/UMum/1HMpv9RzKf/Uc2n/1HOqP9Rzqn/Uc+p/1LP
413 | qf9Sz6n/UtCq/1LPqf9Sz6n/Uc6o/1HOqP9Rzqj/Uc6o/1HNp/9RzKf/Ucyn/1DLpv9QyqX/UMmk/0/H
414 | o/9PxaL/TsSg/07Cn/9Mvpz/O7SP/yiFZ9ANLSCSGGhK/yaSbf85roj/SsKc/07Iov9Py6X/UMql/07D
415 | oP85i3J3////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
416 | /wD///8A////AP///wD///8AO5R5eFDJpP9Rzqj/UM2n/03Jo/9KwJr/OK2G/yWPav8VYUX/DjUmkSyR
417 | cdE8upT/TcWh/0/Ho/9QyaX/UMum/1HMp/9Rzaf/Uc2o/1HOqP9Rzqj/Uc6p/1HPqf9Sz6n/Us+p/1LP
418 | qf9Rz6n/Uc6o/1HOqP9Rzqj/Uc6o/1HNqP9RzKf/Ucyn/1DLpv9QyqX/UMmk/0/Ho/9PxqL/TsSh/07C
419 | n/9Mvpz/O7SP/yiGaNENLSCRGGlL/yaTbv85roj/SsGc/07Jo/9Qy6b/UMql/07DoP84inF2////AP//
420 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
421 | /wD///8APJZ7eVDJpP9Rzqj/UM6o/07Jo/9KwJr/OKyG/yWQa/8WY0b/DjYnkyyRcNA8upP/TcWg/1DI
422 | o/9QyaX/UMum/1HMp/9Rzaf/Uc2n/1HOqP9Rzqj/Uc6p/1HPqf9Sz6n/Us+p/1LPqf9Rz6n/Uc6p/1HO
423 | qf9Rzqn/Uc6o/1HNqP9Rzaf/Ucyn/1HLpv9QyqX/UMmk/0/Ho/9PxqL/TsWh/07Cn/9Mvpz/O7SP/ymH
424 | adEOMCKUGGpM/yaTbv85roj/SsGb/07Jo/9Qy6b/UMql/07Cn/86jnR4////AP///wD///8A////AP//
425 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AOY10dVHL
426 | pv9Rz6n/Uc6o/07KpP9KwJv/Oa2H/yWSbf8WZkj/DzgoiyyScdA9upP/TsWg/1DIpP9QyqX/UMum/1HM
427 | pv9RzKf/Uc2n/1HNqP9Rzqj/Uc+p/1LPqf9Sz6n/Us+p/1LPqf9Rz6n/Uc6p/1HOqf9Rzqn/Uc6o/1HN
428 | qP9Rzaf/Ucyn/1HMpv9QyqX/UMmk/0/Ho/9PxqL/T8Wh/07Cn/9Mv5z/PLWQ/ymHadANMCKLGW5P/yeV
429 | cP86sIn/S8Kc/07KpP9Qzaf/UMum/0/Eof80gWpx////AP///wD///8A////AP///wD///8A////AP//
430 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AGT0yM1DJpfNU1q//UtOs/1HQ
431 | qf9MxqD/ObCJ/yaVb/8Yakz/EDMmWS2UdNM+u5X/TsWh/1DIpP9QyqX/UMum/1HMp/9RzKf/Uc2n/1HO
432 | qP9Rzqn/Us+p/1LPqf9Sz6n/Us+p/1LPqf9Sz6n/Uc+p/1HPqf9Rzqn/Uc6o/1HNqP9Rzaf/Ucyn/1DL
433 | pv9QyqX/UMml/0/Io/9PxqL/T8Wh/07Cn/9Nv53/PbaR/yqKa9EOLSFaG3JS/yiZc/86tIz/Tcih/1HQ
434 | qf9S06z/U9Os/07Dn/MYOzAz////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
435 | /wD///8A////AP///wD///8A////AP///wD///8ACxsWADaIb5ha5rz/VNmw/1LUrP9OyqP/OK6I/yaR
436 | bf8XUTu8FjYrDzCaeN0/vJb/T8Wh/1DIpP9QyqX/Ucum/1HMp/9RzKf/Uc2o/1HPqf9Sz6n/Us+p/1LP
437 | qf9Sz6n/Us+p/1LPqf9Sz6n/Us+p/1HPqf9Rzqn/Uc6o/1HNqP9RzKf/Ucyn/1DLpv9QyqX/UMmk/0/I
438 | o/9PxqL/T8Wh/07Cn/9OwJ3/P7eS/y2Tc90SLyUQGVdBvyiVcP85sov/T82l/1LVrP9U2bD/WeK4/zWG
439 | bpkNIRsA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
440 | /wD///8A////AP///wD///8ABg8NAA0gGg1BpYepVtyz/1Xbsv9Ixp7/NaSB/yNqUsIRKB8ZHUc5Bzag
441 | f+BEvpn/T8Wh/1DIpP9QyqX/Ucum/1HMp/9Rzaf/Uc6o/1LPqf9Sz6n/Us+p/1LPqf9Sz6n/Us+p/1LP
442 | qf9Sz6n/Us+p/1LPqf9Rzqn/Uc6o/1HNqP9RzKf/Ucyn/1DLpv9QyaX/UMik/0/Ho/9PxqL/TsWh/07C
443 | n/9OwJ3/RLmV/zOaeuEeSDoIEisiGiVuVcU3qYT/Scig/1bcsv9V2rH/P6GDqw8mHw0HEA0A////AP//
444 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
445 | /wD///8ACBMQAAsbFgAiV0cCLXJdQDJ/aIAwe2SFJmBOTBIqIgYLFBEADh0YDDmVeMJQy6b/U82o/1LO
446 | qP9Szaj/Uc2o/1HNqP9Rzqj/Us+p/1LPqf9Rz6n/Us+p/1LPqf9Sz6n/Us+p/1HPqf9Sz6n/Us+p/1LP
447 | qf9Rz6n/Uc6o/1HNqP9Rzaf/Ucyn/1DLpv9QyaT/UMik/1DIpP9Qx6P/UMej/1HIpP9RxqP/T8Sg/ziR
448 | dcIOHhgMCxMQABY0KgcjWkhPLnhhhzODaoQudF5FGT8zAw4jHQAIFBEA////AP///wD///8A////AP//
449 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ACBMQAAwd
450 | GAAkXEsAIlZGABg9MgAdSDsAHUQ4AAsQDwATFxaVEBYU4B1TQM4mfV7/MpJy/z6ph/9Hupb/TMWg/1HO
451 | qP9T06z/Vdew/1bYsf9W2LH/Vtqy/1basv9X2rP/Vtmy/1bZsv9W2bL/Vtmy/1bZsv9W2bL/Vtix/1bX
452 | sP9V17D/Vdav/1TUrv9T0av/Uc2o/0/IpP9LwJz/RbWS/z2lg/8wjm//JXtd/x5UQc4QFxTgExcVlA4W
453 | FAAVMSgAGUE0ABpBNQAjWUkAGkM2AA8mHwAIFBAA////AP///wD///8A////AP///wD///8A////AP//
454 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ACBMQAAwdGAAlXUwAJFtKAB1K
455 | PQAbQzcACA4MAAcDBRYkKSjsFR4b/y2DZ/8vlHP/IXdZ/xxpTf8ZYkf/GGBF/xljSP8caEz/H25R/yJ0
456 | V/8lelz/KIBi/yqFZv8siGn/Lots/y+Nbf8vjm7/L45u/y+Nbf8ui2z/LIhp/yqDZP8ofmD/JXlb/yJz
457 | Vv8fbVH/G2dL/xliR/8XX0T/GGFG/xtoTP8hd1n/LpJx/yt+Y/8VHRr/JCkn7AcEBRYHDAoAG0I2AB5N
458 | PwAlXkwAG0M3AA8mHwAIFBAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
459 | /wD///8A////AP///wD///8A////AP///wD///8ACBQQAAwfGQAnY1EAJV5NABg7MAANGBQAEiAcACVB
460 | ODIxNzX+Fh0b/y+Jbf9Ry6f/UMik/0/Gov9LwJ3/RriU/0Ctiv87o4H/Npl5/zKRcf8uimv/K4Rl/yh/
461 | Yf8me13/JXlb/yR3Wv8kdln/JHZZ/yR3Wv8leFv/Jnpd/yh+Yf8rg2X/Lolq/zGQcP82mHj/OqB//z+p
462 | iP9Fs5H/SruY/03Anf9Owp//TsOg/yyBZ/8XHBr/MTc1/yVBODMTIR0ADhoWABg9MQAmYU8AHEg6ABAo
463 | IQAIFREA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
464 | /wD///8A////AP///wD///8ABQsJAAcQDQAULycADRwXAAQEBAACAAAABwgIADBXS1NCVU//Gxwc/yd0
465 | XP9OyqT/UMmk/1HLpv9Szqj/U9Cq/1PQq/9U0qz/VNSt/1XVrv9V1K7/VdSu/1XUrv9V1a7/VdWv/1XU
466 | rv9U063/VNOt/1TTrf9U0qz/VNOt/1TTrf9U063/VNKs/1TRq/9Tz6r/Us2o/1LMp/9RyaX/UMej/0/F
467 | of9Ow6D/TMKe/yZuWP8cHBz/QlRO/zBWSlMHCAgAAgAAAAQFBQAMGxYADyMdAAkUEQAGCwoA////AP//
468 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
469 | /wD///8ABAMDAAQCAwACAAAAAwEBAAQDAwAFBQUQBgQFrBk3LvBNcmf/JSAh/x9ZSP9IxZ//Ucym/1HN
470 | p/9Szqn/Us+p/1LPqf9S0Kr/UtGr/1PSq/9S0av/UtGq/1LRq/9T06z/U9Ot/1PTrP9T0qv/UtCq/1LR
471 | qv9S0ar/UtGr/1LRqv9S0Kr/Us+p/1HOqP9Rzaf/UMum/1DLpv9QyqX/UMij/0/Gov9PxaH/Rr2Z/x9V
472 | RP8nIiT/S29k/xg1LPAHBAWsBQUFDwQDAwADAQEAAgEBAAMCAgAEAwMA////AP///wD///8A////AP//
473 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ABQUFAAUF
474 | BQAFBQUABQUFAAUFBQAHBwclEA8Q+Q4fGv9Ig3H/NTEy/xw6Mf8/t5L/Us6o/1LPqf9S0Kr/UtGr/1LS
475 | q/9T0qz/U9Os/1PUrf9T063/U9Os/1PTrP9U1K3/VNWu/1TVrv9U1K3/U9Ot/1PTrf9T063/U9Os/1PT
476 | rP9S0qv/UtGr/1LPqf9Rzqj/Uc2o/1HNp/9RzKb/UMql/1DIo/9Qx6P/PK+M/xw4L/81MjP/R35u/w0e
477 | Gf8QEBD5BwcHJgUFBQAFBQUABQUFAAUFBQAFBQUA////AP///wD///8A////AP///wD///8A////AP//
478 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ABwcHAAcHBwAHBwcABwcHAAcH
479 | BwAHBwcKEhES3AwMDP8ydWH/RlNP/yIlJP8vim7/UtWt/1PRq/9T0qv/U9Os/1PUrf9T1a7/VNWu/1TW
480 | r/9U1q//VNav/1TVrv9U1q//Vdav/1XXr/9V16//VNav/1TWr/9U1a7/VNWu/1PUrf9T06z/U9Os/1LR
481 | q/9S0Kr/Us+p/1LOqf9Rzaj/Ucym/1HKpf9Qzaf/LYRp/yIlJP9FUU7/MHBd/wwMDP8SERLbBgcHCQYG
482 | BgAHBwcABwcHAAcHBwAHBwcA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
483 | /wD///8A////AP///wD///8A////AP///wD///8ABQUFAAUFBQAFBQUABQUFAAUFBQAEBAQADg4OlhEL
484 | Df8fT0H/VIN1/zQtL/8gRDn/R8Wf/1XWr/9U1a7/VNWu/1TVrv9W27P/WuS6/1jhuP9V2bH/Vdmx/1XZ
485 | sf9W2bH/Vtmx/1bZsf9W2bH/Vtmx/1XZsf9V2LD/Vdew/1TWr/9U1q7/VNav/1fctP9Y37b/Vdav/1LR
486 | q/9S0Kr/Us6p/1PPqf9EvZn/IEE3/zMtL/9RfnD/HUs9/xELDf8ODg6WBQUFAAUFBQAFBQUABQUFAAUF
487 | BQAFBQUA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
488 | /wD///8A////AP///wD///8ABAQEAAQEBAAEBAQABAQEAAQEBAADAwMABgYGKREPD+AKFRL/TZqC/0pS
489 | UP8rKyv/LXli/1LZsP9V17D/VNev/1bbs/9NxqH/M45w/0Criv9Y37b/Vtyz/1bbs/9W3LP/Vtyz/1bb
490 | s/9W27P/Vtuz/1bbsv9V2rL/Vdmx/1XZsf9V2bH/V920/0CqiP8zjW//TMOf/1XXsP9T0qv/U9Cq/0/R
491 | qf8tdmD/LCws/0lRTv9MlX//ChMQ/xAOD+kGBgYpAwMDAAQEBAAEBAQABAQEAAQEBAAEBAQA////AP//
492 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
493 | /wD///8ABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQAAwMDAAgICDIMCAn6GTow/0RoXfRDQEH+KjUy/Tmg
494 | gfBV3bT/Vtmx/1bctP8XTTj/AAwB/wAXCv8rfGD/WeO5/1bdtP9W3bT/Vt20/1bctP9W3LT/Vtyz/1bc
495 | s/9W3LP/Vtuz/1bbs/9Y4bj/K3pf/wAYCv8ADQH/F045/1XYsf9U063/U9Wu/zeafPAsNjP9Q0BB/0Bk
496 | WeYdOzL8DQkK/woLC10EBAQABQUFAAUFBQAFBQUABQUFAAUFBQAFBQUA////AP///wD///8A////AP//
497 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8ABQUFAAUF
498 | BQAFBQUABQUFAAUFBQAFBQUABQUFAAQEBAAPDw+nDgsM/xMWFdIvMDCkIyEigxMqIy1Ct5PcV+C2/1fc
499 | tP8WUDr/ABQH/wAVCP8LLh7/U9ev/1jgt/9W3bX/Vt21/1bdtP9W3bT/Vt20/1bdtP9W3bT/Vty0/1fe
500 | tf9S1K3/Cy0d/wAWCf8AEwb/FlA6/1bZsf9W2rL/P7CO3BMqIy0kIiKHMjMzmBYbGagOCwz/ERER0wYG
501 | BgkGBgYABgYGAAYGBgAGBgYABgYGAAYGBgAGBgYA////AP///wD///8A////AP///wD///8A////AP//
502 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAgICAAICAgACAgIAAgICAAIC
503 | AgACAgIAAgICAAEBAQAFBQUrEhIS8gcMCv8DBwaWBwYGAAoSEAAfUkMpQLGO2Vnlu/9KwJv/F1U+/wo4
504 | Jf8sg2b/WOK4/1fetf9X3rX/V961/1betf9W3rX/Vt61/1betf9W3bX/Vt20/1bdtP9X37b/K4Jl/wo3
505 | JP8YVT7/Sb6a/1jiuP8+rIvZH1JDKQsUEgAJCAkABQgHbggLCv8SExP/CQkJVQMDAwAEBAQABAQEAAQE
506 | BAAEBAQABAQEAAQEBAAEBAQA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
507 | /wD///8A////AP///wD///8A////AP///wD///8AAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEB
508 | AQAAAAAACgoKaw4REP8CCgf/AgcFqQMEAw4MGhYAHlBBGTukhLlY5Lr/WeK5/1LTrP9Y4rj/V9+2/1fe
509 | tf9X37b/V9+2/1fftv9X37X/V961/1fetf9W3rX/Vt20/1bcs/9W3LP/V9+2/1HQqf9Y37f/VuC2/zea
510 | fLgUNCoZDyAbAAQHBgECBgWGAQkH/woODf8NDQ2YAQEBAAICAgACAgIAAgICAAICAgACAgIAAgICAAIC
511 | AgACAgIA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
512 | /wD///8A////AP///wD///8AAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQAAAAAAAwMDABAQ
513 | EI0MEA7/AgoI/wMJB9MCAgI6DB0YABMxKAEpcVtsRsSe6lTit/9a47n/V9+2/1fetf9X37b/V9+2/1ff
514 | tv9X37b/V961/1fetf9W3bX/Vt20/1bcs/9W3LP/WOC3/1PdtP9Ev5rpKXJbbhAoIQMIEA0AAgICIwMI
515 | BrcCCgf/Cg4N/xAQELcEAwQIAAAAAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEA////AP//
516 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
517 | /wD///8AAQEBAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQAAAAAABAQEAAsLCwAQDw+GDhAP/wQL
518 | CP8DCgj5AgQEnQQGBSYFDAoALH5jtEbJn/xKxqDiV+K4/1rnvf9Z5Lr/WeK4/1jht/9Y4Lf/WOC2/1jg
519 | tv9Y4Lf/WeO5/1nkuf9W3rX/ScOe40bJoP0remC1Bw4MAAQGBhYDBQSDAwoH8AMKCP8LDw7/EBAQrAcH
520 | BwwDAwMAAAAAAAEBAQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEA////AP///wD///8A////AP//
521 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAQEBAAEB
522 | AQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQAAAAAABAQEAAsLCwAJCQkADAwMWRAREesHDQv/AwoI/wAB
523 | AfMSMijESsee/yRjT4sSNywAJmtWSDiZfJRIwZ3LUNOs61XdtPpV3rX/Vd61/1TbsvpQ06vsRrqXzTme
524 | f5Unb1lIEzgtACdqVYZKxZ3/EjMptwAAAOkCCgj/BgwK/w4QD/kODg59BgYGAgcHBwAEBAQAAAAAAAEB
525 | AQABAQEAAQEBAAEBAQABAQEAAQEBAAEBAQABAQEA////AP///wD///8A////AP///wD///8A////AP//
526 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8AAQEBAAEBAQABAQEAAQEBAAEB
527 | AQABAQEAAQEBAAEBAQAAAAAABAQEAAsLCwAJCQkABgYGAAoJCh4PDw+fCwsL+AQNCv89p4X/PqiG/wII
528 | BukBAgK0AwUFcwQMCkMNJh8vEzcsMxU7LzoXQjU/Gkk7QBM3LDgTOC0xCRgTKwYPDDsFCwloAgMDqgII
529 | BuM/q4n/PaOD/wQNCv8KCwv/DxAPuQoKCjIGBgYABgYGAAcHBwAEBAQAAAAAAAEBAQABAQEAAQEBAAEB
530 | AQABAQEAAQEBAAEBAQABAQEA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
531 | /wD///8A////AP///wD///8A////AP///wD///8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
532 | AAAAAAAAAwIDAAsKCgAJCAgABgUFAAcFBgAGBQUABwMEKitsWN1S1qz/GTgu/gMCA/8ECwn/AgkH/wIH
533 | Bv8BBAP5AQIC5wACAdYBAwLNAQMCywECAtQBAgHlAgYF9wEHBf8CCAb/AwoI/wICAv8ZOS//Utas/ypp
534 | VeQIAwQ9BQQEAAYEBQAGBQYABgYGAAcHBwADAwMAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
535 | AAAAAAAA////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
536 | /wD///8A////AP///wD///8ABg8MAAYPDAAGDwwABg8MAAYPDAAGDwwABg8MAAYPDAAGDgwACREOAA8X
537 | FAANFRIADBcUAA4dGQAOHhkAHEY5O1LSqv8zgmmVCAQFPw4NDpYODw/SDQ8O9goODf8IDQz/BwwL/wYM
538 | Cv8GDAr/BQwK/wYMCv8GDAv/CA0M/woODf8MDw76Dg8P2g8PD6QHAAFQMX9nmFLSqv8bQjY7DRwXAA0b
539 | FwALExAACAoJAAgKCQAFBgYAAgMDAAIEAwACBAMAAgQDAAIEAwACBAMAAgQDAAIEAwACBAMA////AP//
540 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
541 | /wD///8AESsjABErIwARKyMAESsjABErIwARKyMAESsjABErIwARKyMAESsjABErIwARKyMAESwkABEs
542 | JAAQJyAAG0Y5Mj2dgKwMHRgUBQQEAAgICAAJCQkECwoKIg4ODkYMDAxmDQ0Nhw0ODp8ODg6tDg8Psg0N
543 | DaINDQ2JCwsLbg4NDUwKCQooCgoKBwgICAAFAwQADB8ZFD2egawcRjkyECkiABItJQARKyQADyUfAA8l
544 | HgAPJB4ADiQdAA4kHQAOJB0ADiQdAA4kHQAOJB0ADiQdAA4kHQAOJB0A////AP///wD///8A////AP//
545 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
546 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
547 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
548 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
549 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
550 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
551 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
552 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
553 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
554 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
555 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
556 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
557 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
558 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP//
559 | /wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///////////8AAAD////w/8P///8A
560 | AAD////gf4H///8AAAD////APwD///8AAAD////AHgD///8AAAD///+AHgB///8AAAD///+AHgB///8A
561 | AAD///+AHgB///8AAAD///+AHgB///8AAAD///+AHgB///8AAAD///+AHgB///8AAAD///+AHgB///8A
562 | AAD///+AAAB///8AAAD///wAAAAP//8AAAD///gAAAAH//8AAAD///AAAAAD//8AAAD//+AAAAAB//8A
563 | AAD//+AAAAAB//8AAAD//+AAAAAB//8AAAD//+AAAAAB//8AAAD//+AAAAAB//8AAAD//+AAAAAB//8A
564 | AAD//+AAAAAB//8AAAD/8CAAAAABA/8AAAD/4AAAAAAAAf8AAAD/4AAAAAAAAf8AAAD/wAAAAAAAAP8A
565 | AAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8A
566 | AAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8A
567 | AAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8A
568 | AAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/wAAAAAAAAP8AAAD/4AAAAAAAAf8A
569 | AAD/4AAAAAAAAf8AAAD/8CAAAAABA/8AAAD//8AAAAAA//8AAAD//4AAAAAAf/8AAAD//4AAAAAAf/8A
570 | AAD//4AAAAAAf/8AAAD//gAAAAAAH/8AAAD//gAAAAAAH/8AAAD//gAAAAAAH/8AAAD//wAAAAAAP/8A
571 | AAD//wAAAAAAP/8AAAD//4AAAAAAf/8AAAD//8AAAAAAf/8AAAD//8MAAAAw//8AAAD//+CAAABB//8A
572 | AAD///BAAACB//8AAAD///gQAAID//8AAAD///wCABAH//8AAAD///4AAAAf//8AAAD///+AAAB///8A
573 | AAD///+AAAB///8AAAD///+MAAx///8AAAD///////////8AAAD///////////8AAAD///////////8A
574 | AAA=
575 |
576 |
577 |
--------------------------------------------------------------------------------
/ApkInfo/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Windows.Forms;
3 |
4 | namespace ApkInfo
5 | {
6 | static class Program
7 | {
8 | ///
9 | /// 应用程序的主入口点。
10 | ///
11 | [STAThread]
12 | static void Main(string[] args)
13 | {
14 | Application.EnableVisualStyles();
15 | Application.SetCompatibleTextRenderingDefault(false);
16 | Application.Run(new MainForm(args));
17 | }
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/ApkInfo/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.InteropServices;
3 |
4 | // 有关程序集的常规信息通过以下
5 | // 特性集控制。更改这些特性值可修改
6 | // 与程序集关联的信息。
7 | [assembly: AssemblyTitle("Apk信息查看器")]
8 | [assembly: AssemblyDescription("查看Apk文件详细信息的工具")]
9 | [assembly: AssemblyConfiguration("")]
10 | [assembly: AssemblyCompany("方城-刘景威")]
11 | [assembly: AssemblyProduct("Apk信息查看器")]
12 | [assembly: AssemblyCopyright("Copyright © 2017")]
13 | [assembly: AssemblyTrademark("刘景威 2017")]
14 | [assembly: AssemblyCulture("")]
15 |
16 | // 将 ComVisible 设置为 false 使此程序集中的类型
17 | // 对 COM 组件不可见。如果需要从 COM 访问此程序集中的类型,
18 | // 则将该类型上的 ComVisible 特性设置为 true。
19 | [assembly: ComVisible(false)]
20 |
21 | // 如果此项目向 COM 公开,则下列 GUID 用于类型库的 ID
22 | [assembly: Guid("2cfc3c37-09ee-4c54-993c-28c661712622")]
23 |
24 | // 程序集的版本信息由下面四个值组成:
25 | //
26 | // 主版本
27 | // 次版本
28 | // 内部版本号
29 | // 修订号
30 | //
31 | // 可以指定所有这些值,也可以使用“内部版本号”和“修订号”的默认值,
32 | // 方法是按如下所示使用“*”:
33 | // [assembly: AssemblyVersion("1.0.*")]
34 | [assembly: AssemblyVersion("1.0.0.3")]
35 | [assembly: AssemblyFileVersion("1.0.0.3")]
36 |
--------------------------------------------------------------------------------
/ApkInfo/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 此代码由工具生成。
4 | // 运行时版本:4.0.30319.17929
5 | //
6 | // 对此文件的更改可能会导致不正确的行为,并且如果
7 | // 重新生成代码,这些更改将会丢失。
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace ApkInfo.Properties {
12 | using System;
13 |
14 |
15 | ///
16 | /// 一个强类型的资源类,用于查找本地化的字符串等。
17 | ///
18 | // 此类是由 StronglyTypedResourceBuilder
19 | // 类通过类似于 ResGen 或 Visual Studio 的工具自动生成的。
20 | // 若要添加或移除成员,请编辑 .ResX 文件,然后重新运行 ResGen
21 | // (以 /str 作为命令选项),或重新生成 VS 项目。
22 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
23 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
24 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
25 | internal class Resources {
26 |
27 | private static global::System.Resources.ResourceManager resourceMan;
28 |
29 | private static global::System.Globalization.CultureInfo resourceCulture;
30 |
31 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
32 | internal Resources() {
33 | }
34 |
35 | ///
36 | /// 返回此类使用的缓存的 ResourceManager 实例。
37 | ///
38 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
39 | internal static global::System.Resources.ResourceManager ResourceManager {
40 | get {
41 | if (object.ReferenceEquals(resourceMan, null)) {
42 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("ApkInfo.Properties.Resources", typeof(Resources).Assembly);
43 | resourceMan = temp;
44 | }
45 | return resourceMan;
46 | }
47 | }
48 |
49 | ///
50 | /// 使用此强类型资源类,为所有资源查找
51 | /// 重写当前线程的 CurrentUICulture 属性。
52 | ///
53 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
54 | internal static global::System.Globalization.CultureInfo Culture {
55 | get {
56 | return resourceCulture;
57 | }
58 | set {
59 | resourceCulture = value;
60 | }
61 | }
62 |
63 | ///
64 | /// Looks up a localized resource of type System.Drawing.Bitmap.
65 | ///
66 | internal static System.Drawing.Bitmap icon {
67 | get {
68 | object obj = ResourceManager.GetObject("icon", resourceCulture);
69 | return ((System.Drawing.Bitmap)(obj));
70 | }
71 | }
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/ApkInfo/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\icon.ico;System.Drawing.Bitmap, System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a
123 |
124 |
--------------------------------------------------------------------------------
/ApkInfo/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // 此代码由工具生成。
4 | // 运行时版本:4.0.30319.225
5 | //
6 | // 对此文件的更改可能会导致不正确的行为,并且如果
7 | // 重新生成代码,这些更改将会丢失。
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 | namespace ApkInfo.Properties {
12 |
13 |
14 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
15 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "10.0.0.0")]
16 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase {
17 |
18 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
19 |
20 | public static Settings Default {
21 | get {
22 | return defaultInstance;
23 | }
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/ApkInfo/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
--------------------------------------------------------------------------------
/ApkInfo/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/ApkInfo/icon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/awei78/ApkInfo/14d9eb69634250993a6a8b11e0dc38c95a1a47cb/ApkInfo/icon.ico
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # ApkInfo
2 | 封装aapt.exe一款查看apk信息的GUI工具
3 |
4 | 开发语言:c#
5 |
6 | IDE: VS2010
7 |
8 | .Net Framework: 2.0
9 |
10 | 作者:刘景威
11 |
12 | 特性
13 |
14 | 1. 文件拖放支持
15 | 2. 完美中文支持
16 |
17 |
18 | 原理:通过aapt.exe工具,解密其AndroidManifest.xml文件,提取所需信息并显示
19 |
20 | 效果:
21 |
22 |
23 |
--------------------------------------------------------------------------------
/apk_info.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/awei78/ApkInfo/14d9eb69634250993a6a8b11e0dc38c95a1a47cb/apk_info.png
--------------------------------------------------------------------------------
/tools/aapt.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/awei78/ApkInfo/14d9eb69634250993a6a8b11e0dc38c95a1a47cb/tools/aapt.exe
--------------------------------------------------------------------------------
/tools/unzip.exe:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/awei78/ApkInfo/14d9eb69634250993a6a8b11e0dc38c95a1a47cb/tools/unzip.exe
--------------------------------------------------------------------------------