Python指令碼獲取app應用相關資訊

2021-09-10 10:10:08 字數 3009 閱讀 1935

目錄前言

popen **

結果

aapt即android asset packaging tool,在sdk的build-tools目錄下。該工具可以檢視,建立, 更新zip格式的文件附件(zip, jar, apk),也可將資源檔案編譯成二進位制檔案。aapt 命令可應用於檢視apk包名、主activity、版本等很多資訊。

popen()可以執行shell命令,並讀取此命令的返回值;當我們需要呼叫系統的命令的時候,最先考慮的os模組。用os.system()和os.popen()來進行操作。但是這兩個命令過於簡單,不能完成一些複雜的操作,如給執行的命令提供輸入或者讀取命令的輸出,判斷該命令的執行狀態,管理多個命令的並行等等。這時subprocess中的popen命令就能有效的完成我們需要的操作。

popen它的建構函式如下:

subprocess.popen(args, bufsize=0, executable=none, stdin=none, stdout=none, stderr=none, preexec_fn=none, close_fds=false, shell=false, cwd=none, env=none, universal_newlines=false, startupinfo=none, creationflags=0)

# coding=utf-8

__author__ = "enoch"

""""""

from math import floor

import os

import subprocess

class apkinfo:

# 待測試應用路徑

apkpath = "f:\\kaoyan.apk"

def __init__(self):

self.aapt = "d:\\programfiles\\android-sdk-windows\\build-tools\\28.0.3\\aapt dump badging "

def get_apk_size(self):

size = floor(os.path.getsize(self.apkpath)/(1024*1000))

return str(size) + "m"

def get_apk_version(self):

cmd = self.aapt + self.apkpath

result = ""

p = subprocess.popen(cmd, stdout=subprocess.pipe,

stderr=subprocess.pipe,

stdin=subprocess.pipe, shell=true)

(output, err) = p.communicate()

if output != "":

result = output.split()[3].decode()[12:]

result = result.split("'")[1]

return result

def get_apk_name(self):

result = ""

p = subprocess.popen(cmd, stdout=subprocess.pipe,

stderr=subprocess.pipe,

stdin=subprocess.pipe, shell=true)

(output, err) = p.communicate()

output = str(output, encoding='utf8')

if output != "":

result = output.split("'")[1]

return result

def get_apk_package(self):

cmd = self.aapt + self.apkpath + " | findstr package:"

result = ""

p = subprocess.popen(cmd, stdout=subprocess.pipe,

stderr=subprocess.pipe,

stdin=subprocess.pipe, shell=true)

(output, err) = p.communicate()

output = str(output, encoding='utf8')

if output != "":

result = output.split()[1][6:-1]

return result

# 得到啟動類

def get_apk_activity(self):

cmd = self.aapt + self.apkpath + " | findstr launchable-activity:"

result = ""

p = subprocess.popen(cmd, stdout=subprocess.pipe,

stderr=subprocess.pipe,

stdin=subprocess.pipe, shell=true)

(output, err) = p.communicate()

if output != "":

result = output.split()[1].decode()[6:-1]

return result

if __name__ == '__main__':

apkinfo = apkinfo()

print("應用名稱:", apkinfo.get_apk_name())

呼叫其他python指令碼(指令碼目錄獲取)

目錄 1.問題描述 2.解決方法 2.1 獲取呼叫的指令碼路徑 2.2執行python指令碼 3.總結 python版本 python3.7 os平台 windows7 python 指令碼執行的時候去呼叫執行其他指令碼,使用getcwd 獲取指令碼路徑不對。指令碼timerexec.py 呼叫指令...

python 獲取執行python指令碼所在目錄

今天按照libsvm官方指導手冊 使用libsvm 軟體包。本來應該按照指導,進入tools目錄,然後執行命令python easy.py svmguide1 svmguide1.t,可是我的訓練檔案和測試檔案svmguide1和svmguide1.t都不在tools那個目錄下。懶得切換工作目錄,於...

Jmeter錄製APP指令碼

一 新增執行緒組 1 啟動jmeter,開啟主介面 2 選中 測試計畫 單擊右鍵 新增 threads users 執行緒組 用於儲存錄製的指令碼 二 新增http 1 選中 工作台 單擊右鍵 新增 非測試元件 http 伺服器 2 配置http 伺服器,埠可以使用預設8080 也可以設定其他埠號 ...