最近有做一个项目是在windows下上传app 获取 版本 名称 图片信息 存储到数据中.但是好了好多都是用 linux 写的要不就是java写的. 反而windows的没有找到. 想问那个大神能够帮帮忙告诉我应该如何解决

解决方案 »

  1.   

    搬来的:
       <?php
    $APKLocation = "PATH TO APK GOES HERE";$versionCode = getVersionCodeFromAPK($APKLocation);
    echo $versionCode;//Based on the fact that the Version Code is the first tag in the AndroidManifest.xml file, this will return its value
    //PHP implementation based on the AXML format described here: https://stackoverflow.com/questions/2097813/how-to-parse-the-androidmanifest-xml-file-inside-an-apk-package/14814245#14814245
    function getVersionCodeFromAPK($APKLocation) {    $versionCode = "N/A";    //AXML LEW 32-bit word (hex) for a start tag
        $XMLStartTag = "00100102";    //APK is esentially a zip file, so open it
        $zip = zip_open($APKLocation);
        if ($zip) {
            while ($zip_entry = zip_read($zip)) {
                //Look for the AndroidManifest.xml file in the APK root directory
                if (zip_entry_name($zip_entry) == "AndroidManifest.xml") {
                    //Get the contents of the file in hex format
                    $axml = getHex($zip, $zip_entry);
                    //Convert AXML hex file into an array of 32-bit words
                    $axmlArr = convert2wordArray($axml);
                    //Convert AXML 32-bit word array into Little Endian format 32-bit word array
                    $axmlArr = convert2LEWwordArray($axmlArr);
                    //Get first AXML open tag word index
                    $firstStartTagword = findWord($axmlArr, $XMLStartTag);
                    //The version code is 13 words after the first open tag word
                    $versionCode = intval($axmlArr[$firstStartTagword + 13], 16);                break;
                }
            }
        }
        zip_close($zip);    return $versionCode;
    }//Get the contents of the file in hex format
    function getHex($zip, $zip_entry) {
        if (zip_entry_open($zip, $zip_entry, 'r')) {
            $buf = zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
            $hex = unpack("H*", $buf);
            return current($hex);
        }
    }    //Given a hex byte stream, return an array of words
    function convert2wordArray($hex) {
        $wordArr = array();
        $numwords = strlen($hex)/8;    for ($i = 0; $i < $numwords; $i++)
            $wordArr[] = substr($hex, $i * 8, 8);    return $wordArr;
    }//Given an array of words, convert them to Little Endian format (LSB first)
    function convert2LEWwordArray($wordArr) {
        $LEWArr = array();    foreach($wordArr as $word) {
            $LEWword = "";
            for ($i = 0; $i < strlen($word)/2; $i++)
                $LEWword .= substr($word, (strlen($word) - ($i*2) - 2), 2);
            $LEWArr[] = $LEWword;
        }    return $LEWArr;
    }//Find a word in the word array and return its index value
    function findWord($wordArr, $wordToFind) {
        $currentword = 0;
        foreach ($wordArr as $word) {
            if ($word == $wordToFind)
                return $currentword;
            else
                $currentword++;
        }
    }
        ?>