├── .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 --------------------------------------------------------------------------------