Mac下的Apk多渠道驗證工具

我之前寫過一個在Windows平臺下基於jre環境的Apk多渠道驗證工具,詳見http://blog.csdn.net/h3c4lenovo/article/details/10041047

這種場景比較侷限,而且之後修改渠道提供商之後再做修改很麻煩需要重新編譯jar包。

於是這次我寫了一個基於shell腳本和python腳本的多渠道驗證工具,我的開發環境是mac,所以對於mac來說這個腳本不需要單獨配置環境也不需要編譯,稍作修改即可滿足所有人的需要。


cannal.sh

count=0
rootPath=./
toolsPath=./tools/
currentFolderName=${PWD##*/}

#在tools路徑下
if [ "$currentFolderName" == "tools" ] ; then
	rootPath=../
	toolsPath=./
fi

apkUnzipFolder="${rootPath}apkUnzipFolder"
androidManifestTxt="${rootPath}AndroidManifest.txt"

for line in $(find ${rootPath}* -prune -iname '*.apk'); do 
    echo "開始檢查:$line"
    unzip -o -q -d $apkUnzipFolder $line
    java -jar ${toolsPath}AXMLPrinter2.jar $apkUnzipFolder/AndroidManifest.xml > $androidManifestTxt
	python ${toolsPath}xmlParsePy.py
	let count=$count+1
done

if [ -d $apkUnzipFolder ]; then 
rm -rf $apkUnzipFolder
fi

if [ -f $androidManifestTxt ]; then 
rm -r $androidManifestTxt
fi

echo "完成,共檢查${count}個文件"

xmlParsePy.py

import os 

toolsPath = './'
if os.path.basename(os.getcwd())=='tools':
	toolsPath = '../'

from xml.dom import minidom
xmldoc = minidom.parse(toolsPath+'AndroidManifest.txt')
itemlist = xmldoc.getElementsByTagName('meta-data') 
for s in itemlist :
	name = s.attributes['android:name'].value
	value = s.attributes['android:value'].value
	if name == 'UMENG_CHANNEL' :
		print value

主要思路就是遍歷當前目錄,找到目錄下所有以*.apk結尾的文件,對其unzip解壓縮,通過AXMLPrinter2.jar將混淆後的AndroidManifest文件反編譯。

利用python對xml進行解析找到需要的渠道名稱


資源下載:

http://download.csdn.net/detail/h3c4lenovo/8123251


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章