aapt的具體使用


一.什么是aapt:

  aapt Android Asset Packaging Tool android的一個資源打包工具

二.配置aapt路徑:

  aapt這個工具,在sdk的build-tools下,所以一般配置好sdk就可以使用該工具。

  或者單獨下載aapt這個工具,在環境變量path中添加aapt的路徑。

  aapt v查看aapt版本號,確認aapt是否配置好

三.aapt的使用

  學習過程中沒有涉及到很深的aapt的具體使用

  主要應用:

  aapt l

    簡單的羅列壓縮文件中每一項的內容

  aapt l -v XXX.apk

    列表方式詳細標識出壓縮文件中的每一項和很多參數

    Length 原始文件參數

    Date 日期

    Time 時間

    Name 名稱

    Method壓縮方法,Deflate及Stored兩種,即該Zip目錄采用的算法是壓縮模式還是存儲模式

    Ratio 壓縮率

    Size 壓縮省掉的大小

    CRC-32 循環冗余校驗 這個計算是特定的算法的

    offset:zipfile中偏移量的意思

  aapt l -a

   詳細輸出壓縮文件中所有目錄的內容 

  aapt dump strings 

    打印apk中所有string資源表

  aapt dump badging

    查看apk中的配置信息

四.具體實現

  通過aapt來完成對上傳的apk進行二次驗證,並提取對應的包名,版本號、版本名,icon圖標在apk中的地址等信息

 1 def apkParseMessage(apkFilePath,apptResultPath):
 2     apkMessage = {}
 3     cmd = "D:/aapt d badging %s > %s"%(apkFilePath,apptResultPath)
 4     os.popen(cmd)
 5     time.sleep(1)
 6     f = open(apptResultPath,"r",encoding = 'utf-8')
 7     result =f.read()
 8     #匹配packagename
 9     parrenPackageName = re.compile("package: name='(.*?)'")
10     packageName = re.findall(parrenPackageName,result)
11     print(packageName)
12     apkMessage.setdefault("packageName",packageName[0])
13     #匹配當前apk版本號
14     parrenVersionCode = re.compile("versionCode='(.*?)'")
15     versionCode = re.findall(parrenVersionCode,result)
16     apkMessage.setdefault("versionCode",versionCode[0])
17     #匹配當前apk版本名
18     parrenVersionName = re.compile("versionName='(.*?)'")
19     versionName = re.findall(parrenVersionName,result)
20     apkMessage.setdefault("versionName",versionName[0])
21     parrenName = re.compile("application-label:'(.*?)'")
22     apkName = re.findall(parrenName,result)
23     apkMessage.setdefault("Name",apkName[0])
24     #parrenIcon = re.compile("application-icon-480:'(.*?)'")
25     #匹配當前apk的icon圖標存儲位置
26     parrenIcon = re.compile("icon='(.*?)'")
27     apkIcon = re.findall(parrenIcon,result)
28     apkMessage.setdefault("Icon",apkIcon[0])
29     print(apkMessage)
30     f.close()
31     
32     return apkMessage

  再通過python的zipfile庫中的方法將icon圖標讀取出來,已被前台顯示。

 1 def downLoadIcon(apkFilePath,saveIconPath,apkMessage):
 2     IconPath = apkMessage['Icon']
 3     print(apkMessage['Icon'])
 4     zip = zipfile.ZipFile(apkFilePath)
 5 
 6     iconData = zip.read(IconPath)
 7     with open(saveIconPath,'wb') as IconFile:
 8         IconFile.write(iconData)
 9     zip.close()
10     return IconFile

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM