/** * @param $path * * @return array */ private function parse_apk($path) { $full_path = UPLOAD_BASE . $path; try { $apk = new ApkParser($full_path); } catch (Exception $e) { return array('form' => array('ad_size' => Utils::format_file_size(filesize($full_path)))); } $permission = $apk->getPermissions(); $package = array('pack_name' => $apk->getPackageName(), 'ad_lib' => $apk->getVersionName(), 'ad_size' => Utils::format_file_size(filesize($full_path)), 'permission' => $this->get_permission_id(array_keys($permission))); // 从数据库读相同包名的广告有哪些可以直接用的数据 $ad_service = new AD(); $info = $ad_service->get_ad_info_by_pack_name($package['pack_name']); if (!$info && !defined('DEBUG')) { // 没有同包名的广告,再试试应用雷达 try { $info = json_decode(file_get_contents('http://192.168.0.165/apk_info.php?pack_name=' . $package['pack_name']), true); } catch (Exception $e) { } if ($info) { foreach ($this->radar_map as $key => $value) { $info[$key] = $info[$value]; } } } if ($info) { $info = $this->addPrefixToAssets($info); } // 记录不良SDK if ($apk->has_sm) { $enemy = new Enemy(); $enemy->log_sm($this->id, $path, $package['pack_name'], $apk->getAppName()); } return array('form' => array_merge((array) $info, $package)); }
/** * @depends testUnpackAPK * * @param ApkParser $parser */ public function testGetPermissions(ApkParser $parser) { $permissions = array('android.permission.VIBRATE', 'android.permission.RECEIVE_BOOT_COMPLETED', 'android.permission.WRITE_SETTINGS', 'android.permission.DISABLE_KEYGUARD', 'android.permission.ACCESS_COARSE_LOCATION', 'android.permission.ACCESS_WIFI_STATE', 'android.permission.VIBRATE', 'android.permission.GET_TASKS', 'android.permission.INTERNET', 'android.permission.SYSTEM_ALERT_WINDOW', 'android.permission.ACCESS_NETWORK_STATE', 'android.permission.READ_PHONE_STATE', 'android.permission.WRITE_EXTERNAL_STORAGE', 'android.permission.ACCESS_FINE_LOCATION', 'com.android.launcher.permission.INSTALL_SHORTCUT', 'com.android.launcher.permission.READ_SETTINGS'); $this->assertEmpty(array_diff($permissions, $parser->getPermissions())); }
/** * @depends testUnpackAPK * * @param ApkParser $parser */ public function testGetPermissions(ApkParser $parser) { $permissions = array('android.permission.INTERNET', 'android.permission.GET_TASKS', 'android.permission.READ_PHONE_STATE', 'android.permission.ACCESS_NETWORK_STATE', 'android.permission.WRITE_EXTERNAL_STORAGE', 'android.permission.ACCESS_WIFI_STATE', 'android.permission.ACCESS_COARSE_LOCATION', 'android.permission.ACCESS_FINE_LOCATION'); $this->assertEmpty(array_diff($permissions, $parser->getPermissions())); }