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

Linux 系統下 PHP 調用 aapt 解析 APK 信息完整實戰

     編輯:PHP 相關知識

Linux 系統下 PHP 調用 aapt 解析 APK 信息完整實戰

在 APK 應用商城專案中,需在用戶上傳 APK 後自動提取包名、版本號、圖標等元資料。本文記錄在 CentOS 6.x 上安裝 aapt(Android Asset Packaging Tool)並解決動態庫依賴的完整過程,供 PHP exec()/shell_exec() 調用。

一、準備檔案

將 aapt、apktool 複製至 /usr/bin/(需執行權限 chmod +x)。

二、依賴庫缺失與解決(按報錯順序)

錯誤訊息缺失庫解決命令
/lib/ld-linux.so.2: bad ELF interpreterglibc 32-bityum -y install glibc.i686(或指定版本 glibc-2.12-1.132.el6_5.1.i686)
libz.so.1: cannot open shared object filezlib 32-bityum -y install zlib.i686
libstdc++.so.6: cannot open shared object filelibstdc++ 32-bityum -y install libstdc++.i686

若遇版本衝突,可先 yum -y install libstdc++* 再裝具體版本;或使用 --skip-broken 跳過衝突包。

三、驗證安裝

# aapt dump badging your_app.apk
package: name='com.example.app' versionCode='1' versionName='1.0'
application-label:'Example App'
application-icon-160:'res/drawable/icon.png'
launchable-activity: name='com.example.app.MainActivity'  label='' icon=''
...

四、PHP 調用範例

<?php
function parseApk($apkPath) {
    if (!file_exists($apkPath)) return false;
    $cmd = "aapt dump badging " . escapeshellarg($apkPath) . " 2>&1";
    $output = shell_exec($cmd);
    if (!$output) return false;

    $info = [];
    // 解析關鍵字段
    if (preg_match("/package: name='([^']+)' versionCode='(\d+)' versionName='([^']+)'/", $output, $m)) {
        $info['package'] = $m[1];
        $info['version_code'] = (int)$m[2];
        $info['version_name'] = $m[3];
    }
    if (preg_match("/application-label:'([^']+)'/", $output, $m)) {
        $info['app_name'] = $m[1];
    }
    if (preg_match("/application-icon-\d+:'([^']+)'/", $output, $m)) {
        $info['icon_path'] = $m[1]; // APK 內部路徑,需配合 apktool 解壓提取
    }
    return $info;
}

// 使用
$apkInfo = parseApk('/var/www/uploads/app_v1.0.apk');
var_dump($apkInfo);
?>

五、aapt 下載地址

百度網盤:https://pan.baidu.com/s/1pJkEqcb(含 32/64 位元版本)

六、延伸閱讀

  • 若需解析 AndroidManifest.xml 完整結構,建議改用 Python axmlparser 或 Node.js apk-parser,避免正則維護成本。
  • 生產環境請將 APK 解析放入佇列異步處理,避免阻塞 Web 進程。

解決 32 位元動態庫依賴是 Linux 64 位元系統運行 aapt 關鍵,完成後即可穩定為 PHP 提供 APK 元資料解析服務。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved