<?php include '../ApkParser.php'; $apk = new ApkParser('EBHS.apk'); $manifest = $apk->getManifest(); $permissions = $manifest->getPermissions(); echo '<pre>'; echo "Package Name : " . $manifest->getPackageName() . "\r\n"; echo "Vesrion : " . $manifest->getVersionName() . " (" . $manifest->getVersionCode() . ")\r\n"; echo "Min Sdk Level : " . $manifest->getMinSdkLevel() . "\r\n"; echo "Min Sdk Platfrom : " . $manifest->getMinSdk()->platform['name'] . "\r\n"; echo "------------- Permssions List -------------\r\n"; foreach ($permissions as $perm => $description) { echo $perm . "\t=> " . $description . " \r\n"; }
/** We have 4 permissions in EBHS.apk/AndroidManifest.xml INTERNET CAMERA BLUETOOTH BLUETOOTH_ADMIN */ public function TestPermissions() { $apk = new ApkParser('../examples/EBHS.apk'); $permissionArray = $apk->getManifest()->getPermissions(); $this->assertEquals(count($permissionArray), 4); $this->assertArrayHasKey('INTERNET', $permissionArray, "INTERNET permission not found!"); $this->assertArrayHasKey('CAMERA', $permissionArray, "CAMERA permission not found!"); $this->assertArrayHasKey('BLUETOOTH', $permissionArray, "BLUETOOTH permission not found!"); $this->assertArrayHasKey('BLUETOOTH_ADMIN', $permissionArray, "BLUETOOTH_ADMIN permission not found!"); }
function getMobileVersion($apkfile) { $result = array(); $apkinfo = new ApkParser($apkfile); $manifest = $apkinfo->getManifest(); $result['apk_version'] = $manifest->getVersionName(); $archive = $apkinfo->getApkArchive(); $stream = $archive->getStream("assets/total-conversion-build.user.js"); if ($stream) { $header = loadUserScriptHeader($stream); $result['iitc_version'] = $header['@version']; } else { $result['iitc_version'] = 'unknown'; } return $result; }
include_once "code/userscript.php"; include_once "code/url/url_to_absolute.php"; include_once "code/apk/ApkParser.php"; $response = array(); $build = $_REQUEST['build']; $mobile = isset($_REQUEST['mobile']) && $_REQUEST['mobile']; $details = array('jonatkins' => array('path' => 'release', 'name' => 'Stable release build', 'web' => 'http://iitc.jonatkins.com/?page=download', 'mobileweb' => 'http://iitc.jonatkins.com/?page=mobile'), 'jonatkins-test' => array('path' => 'test', 'name' => 'Test build', 'web' => 'http://iitc.jonatkins.com/?page=test', 'mobileweb' => 'http://iitc.jonatkins.com/?page=test#test-mobile'), 'jonatkins-experimental' => array('path' => 'experimental', 'name' => 'Experimental build', 'web' => 'http://iitc.jonatkins.com/?page=test&build=experimental', 'mobileweb' => 'http://iitc.jonatkins.com/?page=test&build=experimental#test-mobile'), 'jonatkins-dev' => array('path' => 'dev', 'name' => 'Development builds - not for public use', 'web' => 'http://iitc.jonatkins.com/?page=test&build=dev', 'mobileweb' => 'http://iitc.jonatkins.com/?page=test&build=dev#test-mobile'), 'local' => array('path' => NULL, 'name' => 'Local build - no update check available')); if (array_key_exists($build, $details)) { $info = $details[$build]; $pageurl = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] ? "https" : "http") . "://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $response['name'] = $info['name']; $dir = $info['path']; if ($mobile) { $apkfile = $dir . '/IITC_Mobile-' . $dir . '.apk'; if (file_Exists($apkfile)) { $apkinfo = new ApkParser($apkfile); $manifest = $apkinfo->getManifest(); $response['mobile'] = array('versionstr' => $manifest->getVersionName(), 'versioncode' => $manifest->getVersionCode(), 'downloadurl' => url_to_absolute($pageurl, $apkfile), 'pageurl' => $info['mobileweb']); $archive = $apkinfo->getApkArchive(); $stream = $archive->getStream("assets/total-conversion-build.user.js"); if ($stream) { $header = loadUserScriptHeader($stream); $response['mobile']['iitc_version'] = $header['@version']; } } else { $response['error'] = 'Failed to find .apk file ' . $apkfile; } } else { // desktop - .user.js scripts // load main script version $iitc_details = loadUserScriptHeader("{$dir}/total-conversion-build.user.js");
<?php include '../ApkParser.php'; $apk = new ApkParser('EBHS.apk'); header("Content-Type:text/xml;Charset=UTF-8"); echo $apk->getManifest()->getXmlString();
$r_size = $file1['size'] = $f['size']; $r_width = $file1['width'] = isset($img['width']) ? $img['width'] : 0; $r_height = $file1['height'] = isset($img['height']) ? $img['height'] : 0; $r_oname = $file1['oname'] = substr($f['name'], 0, strrpos($f['name'], '.')); switch ($f['extension']) { case 'zip': case 'rar': $resource_type = 3; break; case 'flv': $resource_type = 2; break; case 'apk': $resource_type = 4; //插入APK提取资源参数 $p = new ApkParser(); $res = $p->open(dirname(__FILE__) . '/../' . $resource_url); $xml = $p->getXML(); echo $xml; preg_match('~android:versionName="(.*?)"~', $xml, $matches); $version = ''; if (count($matches) > 1) { $version = $matches[1]; } preg_match('~android:minSdkVersion="(.*?)"~', $xml, $matches); $minsys = ''; if (count($matches) > 1) { $minsys = get_android($matches[1]); } preg_match('~package="(.*?)"~', $xml, $matches); $packname = '';
<?php include __DIR__ . "/IpaParser.php"; include __DIR__ . "/ApkParser.php"; #apk解析 $main = new ApkParser(); $main->open('blabla.apk'); echo $main->getPackage(); echo $main->getVersionName(); echo $main->getVersionCode(); echo $main->getAppName(); #ipa解析 $main = new IpaParser(); echo $main->parse('blabla.ipa'); echo $main->getPackage(); echo $main->getVersion(); echo $main->getAppName(); var_dump($main->getPlist());
<?php include '../ApkParser.php'; $apk = new ApkParser('EBHS.apk'); $extractFolder = 'extract_folder'; if (is_dir($extractFolder) || mkdir($extractFolder)) { $apk->extractTo($extractFolder); }