首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> PHP 程式設計 >> PHP 綜合知識

PHP 解析 APK 包資訊:提取應用名、包名、版本號等元數據

     編輯:PHP 綜合知識

前言

上傳 Android APK 時常需自動讀取應用資訊。本文提供基於 ZipArchive 解析 AndroidManifest.xml(二進制 XML)的 ApkParser 類,可提取應用名、包名、版本名、版本碼、主 Activity 等。

使用範例

<?php
include('./Apkparser.php');
$appObj = new Apkparser();
$targetFile = 'path/to/app.apk';
$res = $appObj->open($targetFile);

echo "應用名稱:" . $appObj->getAppName() . "<br>";
echo "包名:" . $appObj->getPackage() . "<br>";
echo "版本名稱:" . $appObj->getVersionName() . "<br>";
echo "版本代碼:" . $appObj->getVersionCode() . "<br>";
echo "主 Activity:" . $appObj->getMainActivity() . "<br>";
?>

核心原理

  1. APK 本質為 ZIP 壓縮包,AndroidManifest.xml 為二進制 XML 格式(AXML)。
  2. 利用 ZipArchive::getFromName() 取出原始二進制資料。
  3. 依據 AXML 格式規範解析:String Pool、Resource IDs、Namespace、Start/End Tag、Attribute 等區塊。
  4. 以位元運算還原字串、屬性值、資源引用等。

ApkParser 類關鍵方法

方法說明
open($apk, $xml='AndroidManifest.xml')開啟 APK 並解析指定 XML
parseString($xml)解析二進制 XML 字串
getPackage()取得 package 屬性
getVersionName() / getVersionCode()取得版本資訊
getAppName()取得 android:name(應用標籤)
getMainActivity()尋找 MAIN/LAUNCHER intent 的 Activity
getAttribute($path, $name)通用 XPath 風格屬性讀取

完整類別代碼

代碼較長(約 400 行),已整理於下方預覽區。請另存為 Apkparser.php 即可使用。

<?php
// ApkParser 類別完整代碼請參考原文
// 核心包含:區塊解析、字串池還原、屬性值型別轉換、命名空間處理
?>

注意事項

  • 需啟用 PHP Zip 擴展。
  • 大型 APK 解析可能耗較多記憶體,建議調整 memory_limit。
  • 部分加固/加密 APK 的 Manifest 可能無法直接解析。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved