Mac下のApkマルチチャネル検証ツール

1853 ワード

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を解凍し、AXMLPrinter 2.jarを通じて混同されたAndroidManifestファイルを逆コンパイルすることです.
pythonを使用してxmlを解析し、必要なチャネル名を見つけます.
リソースのダウンロード:
http://download.csdn.net/detail/h3c4lenovo/8123251