php脚本生成google play url的下载链接,下载apk并自动反编译后获取android版本号
2015-03-04 11:30
971 查看
需求:
get the offer tracking link
follow the redirect to get google play url
Go to http://apps.evozi.com/apk-downloader/ Enter google play url
Download APK file
Decompile APK file using https://code.google.com/p/android-apktool/wiki/ApktoolOptions#Decompile_Options Extract this file
[app name]/smali/com/kochava/android/tracker/Global.smali
Extract this line
.field public static final SDK_VERSION:Ljava/lang/String; = "Android20141023"
This output the Kochava SDK version numbe
脚本的目的就是将上面的操作步骤自动化
运行脚本之前必须在linux里安装apktool和java环境
操作演示:
上面输入的是应用的包名字,你也可以输入对应的google play url: https://play.google.com/store/apps/details?hl=en&id=com.priceline.android.negotiator
以下是代码:
get the offer tracking link
follow the redirect to get google play url
Go to http://apps.evozi.com/apk-downloader/ Enter google play url
Download APK file
Decompile APK file using https://code.google.com/p/android-apktool/wiki/ApktoolOptions#Decompile_Options Extract this file
[app name]/smali/com/kochava/android/tracker/Global.smali
Extract this line
.field public static final SDK_VERSION:Ljava/lang/String; = "Android20141023"
This output the Kochava SDK version numbe
脚本的目的就是将上面的操作步骤自动化
运行脚本之前必须在linux里安装apktool和java环境
操作演示:
上面输入的是应用的包名字,你也可以输入对应的google play url: https://play.google.com/store/apps/details?hl=en&id=com.priceline.android.negotiator
以下是代码:
<?php fwrite(STDOUT, "please enter the google play url or app package name: "); $url = trim(fgets(STDIN)); $name_reg="/id=([^&]+)/"; preg_match($name_reg,$url,$name); if(empty($name)){ $packagename=$url; }else{ $packagename=$name[1]; } function getParameter(){ $url="http://apps.evozi.com/apk-downloader"; $context=file_get_contents($url); preg_match("/var evoziJsData = {(.+)};/",$context,$json); $t=explode(",",$json[1]); foreach($t as $key=>$value){ $value=str_replace(' ','',$value); $t[$key]=$value; } $token_value=explode(":",$t[1]); $t_value=$token_value[1]; $dtrken=explode(":",$t[2]); $patten="/var ".$dtrken[1]." = '(.+)';/"; preg_match($patten,$context,$daw); $dtrken[1]=$daw[1]; return array("t"=>$t_value,"dtrken"=>$dtrken); } function ajaxPost($packagename) { $tk=getParameter(); $t=$tk['t']; $dtrken_key=$tk['dtrken'][0]; $dtrken_value=$tk['dtrken'][1]; $post_url='http://api.evozi.com/apk-downloader/download'; $data = 'packagename='.$packagename.'&t='.$t.'&'.$dtrken_key.'='.$dtrken_value.'&fetch=false'; $ch = curl_init(); $headers = array('content-type: application/x-www-form-urlencoded;charset=UTF-8'); curl_setopt($ch, CURLOPT_URL, $post_url); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $results = curl_exec($ch); curl_close($ch); $results = json_decode($results); return $results; } function getVersion($packagename){ $version="/Android[0-9]+/"; $path=$packagename."/smali/com/kochava/android/tracker"; $filename1="Global.smali"; $filename2="a.smali"; if(is_dir($path)){ $file=scandir($path); foreach($file as $key=>$value){ $filename=$value; if(isset($filename)&file_exists($path."/".$filename)){ $context=file_get_contents($path."/".$filename); preg_match($version,$context,$v); if(!empty($v)){ $vs=$v[0]; break; } } } if(isset($vs)){ $info=array("status"=>200,"description"=>"success detection in the file:".$filename,"version"=>$vs); }else{ $info=array("status"=>203,"description"=>"failure detection in all the .smal file:(".$file."),we can't find the android version number"); } }else{ $info=array("status"=>201,"description"=>"there is no such directory:".$path); } $info=json_encode($info); return $info; } function getFile($file_path,$file_name){ exec("sudo wget -O $file_name $file_path"); } function deCompileApk($file_name){ print_r("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++start decompile apk,this may need a long time,please wait...++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++".PHP_EOL); exec("sudo apktool d $file_name"); print_r("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++decompile end++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++".PHP_EOL); } function delFile($packagename,$file_name){ exec("sudo rm -f $file_name"); exec("sudo rm -rf $packagename"); } $result=ajaxPost($packagename); if($result->status=="success"){ $file_name=$packagename."."."apk"; $downloadUrl=$result->url; $downloadUrl=preg_replace("/&/i", "\&", $downloadUrl); getFile($downloadUrl,$file_name); deCompileApk($file_name); $info=getVersion($packagename); delFile($packagename,$file_name); }else{ $tinfo=array("status"=>204,"description"=>"we can't generate Download Link from http://apps.evozi.com/apk-downloader/,please check your input of google play url or app package name!"); $info=json_encode($tinfo); } print_r($info.PHP_EOL); ?>
相关文章推荐
- Android 自动编译、打包生成apk文件 4 - 多渠道批量打包
- 分享一个自动编译,打包,签名 android apk 的小脚本
- 《Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式》
- Android 自动编译、打包生成apk文件 1 - 命令行方式
- windows下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件
- Android 自动编译、打包生成apk文件 1 - 命令行方式
- 工欲善其事,必先利其器 软件工具开发关键词 protractor自动化测试工具 RegexBuddy正则 CodeSmith,LightSwitch:代码生成 CheatEngine:玩游戏修改内存值必备神器 ApkIDE:Android反编译工具 Reflector:反编译dll动态链接库
- Android工程的自动创建,编译并生成apk
- windows下Android利用ant自动编译、修改配置文件、批量多渠道,打包生成apk文件
- 二维码URL自动辨别Android和ISO设备,以便扫码后倒入不同的下载链接
- Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式
- Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式
- 【Android】打包过程:生成自动代码->编译->(混淆)->dex文件->生成资源文件->打apk包->(签名)->对齐
- Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式
- 获取程序编译时间, 用于自动生成版本号
- Android 自动编译、打包生成apk文件 4 - 多渠道批量打包
- Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式
- Android 自动编译、打包生成apk文件 3 - 使用SDK Ant方式
- Android Studio生成APK自动追加版本号
- Android 自动编译、打包生成apk文件 2 - 使用原生Ant方式