一行指令,獲取APK簽名摘要,versioncode等資訊
從最初的100行程式碼,縮減到目前的一半,除去註釋什麼的,程式碼縮減了一大半,
就是使用如下指令,在cmd視窗執行如下指令,將會返回簽名摘要資訊
keytool -printcert -jarfile xxx.apk# 最後是你APK的位置,好像zip壓縮也可以
下面是以FacebookAPK進行的測試,返回的結果
完整的程式碼如下,核對兩個APK簽名是否一致,以及獲取APK versionCode資訊,一樣使用一條指令,把當前指令獲取之後,使用.read()方法,將從字串中獲取目標資訊,可以採用正則表示式獲取 所需內容
import os import sys import io import re sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') # summary def get_apk_signature(path): try: output = os.popen("keytooL -printcert -jarfile %s" % path).read() pattern_md5 = re.compile(r"MD5:.*") pattern_sha = re.compile(r'SHA\d{1,3}:.*') return re.findall(pattern_md5, output), re.findall(pattern_sha, output) except Exception as e: print(e) # return versioncode def get_versionCode(apkpath): output = os.popen("aapt dump badging %s" % apkpath).read() match = re.compile(r"versionCode='(\d+)'") return re.findall(match, output) # check version_code def check_versioncode(apk_path, apk_path1): version_code = [] if apk_path.endswith(".apk") and apk_path1.endswith(".apk"): version_code.append(get_versionCode(apk_path)) version_code.append(get_versionCode(apk_path1)) else: return "please input right apk path" """ output = 1 can update output = -1 can't update """ if eval(version_code[0][0]) == eval(version_code[1][0]): return 1 else: return -1 def check_signature(apk_path, apk_path1): result = [] result.append(get_apk_signature(apk_path)) result.append(get_apk_signature(apk_path1)) """ output = 1 same signature output = -1 different signature """ if result[0] == result[1]: return 1 else: return -1 if __name__ == "__main__": apk_path = r"C:\Users\Desktop\com.apk" apk_path1 = r"C:\Users\Desktop\\com1.apk" print(check_signature(apk_path, apk_path1)) print(check_versioncode(apk_path, apk_path1))
相關推薦
一行指令,獲取APK簽名摘要,versioncode等資訊
從最初的100行程式碼,縮減到目前的一半,除去註釋什麼的,程式碼縮減了一大半, 就是使用如下指令,在cmd視窗執行如下指令,將會返回簽名摘要資訊 keytool -printcert -jarfile xxx.apk# 最後是你APK的位置,好像zip壓縮也可以 下面
android app內動態獲取apk簽名md5,與keytool獲取的一致
首先使用keytool命令列獲取: cmd中使用命令列:keytool -list -keystore D:\Desktop\app_key 根據提示輸入keystore的密碼,回車就可以看到簽
android studio 如何匯出apk,建立apk簽名
當使用android studio完成了專案開發後,想要將專案匯出為 apk 格式該怎麼辦,本人綜合了網上的資料,並結合自身實踐整理後得出下述可行的方法。希望對您有所幫助! 具體方法步驟如下 1、 開啟軟體並找“Build”選項,開啟生成apk簽名的視窗 即 Build---
ionic 自定義指令無法獲取繫結值,ngModelController.$viewValue無法使用
最近因為專案需要,自定義了一個外來鍵指令,用於選擇model中巢狀的model,可是在指令處於編輯狀態的時候獲取ng-model初始化值的時,在link函式中通過ngModelController獲取$viewValue無法獲取到,自己便通過另一個種方式解決了這
eclipse,android studio 簽名打包,獲取MD5, SHA1(應用的簽名)
引入: (1)專案的收官階段,我們比用到的簽名,打包,上傳應用商店。。。 (2)在開發的中途接入第三方的sdk時候經常需要我們的簽名的md5去獲取相應的appID(比如微信分享,登陸需要專案的應用簽名
phongap 命令列簽名,apk簽名成功,但是安裝時提示包解析錯誤
phongap 命令列簽名,apk簽名成功,但是安裝時提示包解析錯誤 利用phonegap 建立Android工程時 ,進行 apk 簽名時,簽名成功,但是apk安裝時提示包解析錯誤; phonegap建立工程詳細步驟,及問題解決方式: 進入工作目錄 : 建立
python實現QQ機器人(自己主動登錄,獲取群消息,發送群消息)
keep fine 繼續 fill iss data while [0 ssi 一次偶然的機會我看見了一個群裏的一個QQ號總是依據你所發的消息自己主動回復,當時非常感覺到奇妙。我知道能夠模擬登錄站點,沒想到居然也能模擬登錄QQ,首先自己想到的就是怎樣實現模擬登錄PC端的
自動登錄TP-LINK路由器,獲取所有信息,重啟等等,實用方法
cti host ads date output png ict .text 只有一個 用Python自動登錄TP-LINK路由器,獲取信息,重啟等操作 思路:想獲取TP-LINK裏面的所有信息,必須首先登錄,然後提交相應的操作(比如重啟) 1、 做任何操作,首先得登錄到
微信小程序的按下擡起事件,下拉選擇框的事件及點擊確定的方法函數,獲取時間的方法,省市區的方法。
bin img util req fun data hang UNC 日期 擡起按下的事件: 擡起事件: bind:touchstart="nanOne" 把這條屬性放到標簽裏就可以了 在JS中 nanOne: function () { this.setDa
嵌入式Linux標準IO,獲取檔案大小fgetc(),定位流獲取檔案大小fteel()、rewind()/fseek(),處理錯誤資訊perror()/strerror()
#include <stdio.h> #include <errno.h> #include <string.h> int get_file_size(const char *file); int main(int argc, const char *a
java w3c解析xml檔案,獲取指定節點內容,讀取外部配置檔案。
原始碼: package com.ys.adage.utils; import com.ys.adage.message.CodeObjectResult; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.
使用AddPermission,獲取Android6.o許可權,附上一個自定義的dialog,簡單實用。
先來看看效果。。 1.新增AddPermission的依賴 gitbub地址:https://github.com/yanzhenjie/AndPermission implementation ‘com.yanzhenjie:permission:2.0.0-rc1
C#如何操控FTP,獲取FTP檔案或資料夾列表,獲取FTP檔案大小,FTP上傳,FTP刪除檔案,FTP新建資料夾、刪除資料夾
C#如何操控FTP 出處:http://www.cnblogs.com/rond/archive/2012/07/30/2611295.html,http://www.cnblogs.com/rond 關於FTP的應用免不了要對FTP進行增刪查改什麼的。通過搜尋,整理和修改
切面的用法,獲取切點的引數,以及返回值
監聽到了impl下面的所有的方法 ps:注意 由@Before註解定義的方法會在 execution() 表示式內的方法被呼叫之前執行 由@After註解定義的方法會在 execution()表示式內的方法被呼叫
資料庫思想——從資料庫取出日期,獲取日期的月份,並在檢視中迴圈顯示
index.php: public function index() { $sql=db('users') ->field('rtime') ->select(); foreach($sql as
微信網頁授權,獲取微信code,獲取access_tocken,獲取使用者資訊
微信開發中,經常有這樣的需求:獲得使用者頭像、繫結微訊號給使用者發信息.. 那麼實現這些的前提就是授權! 1.配置安全回撥域名: 在微信公眾號請求使用者網頁授權之前,開發者需要先到公眾平臺官網中的“開發 - 介面許可權 - 網頁服務 - 網頁帳號 - 網
微信公眾號開發,獲取token,獲取公眾號粉絲,獲取Unionid,傳送客戶訊息
public class WeChatUtil { /** * 獲取token */ private static String ACCESSTOKENURL = "https://api.weixin.qq.com/cgi-bin/t
微信網頁授權,獲取微信code,獲取access tocken 獲取使用者資訊
微信開發中,經常有這樣的需求:獲得使用者頭像、繫結微訊號給使用者發信息.. 那麼實現這些的前提就是授權!1.配置安全回撥域名:在微信公眾號請求使用者網頁授權之前,開發者需要先到公眾平臺官網中的“開發 - 介面許可權 - 網頁服務 - 網頁帳號 - 網頁授權獲取使用者基本資訊”的配置選項中,修改授權回撥域名,值
shell中獲取字串長度的方法,獲取陣列元素個數,獲取陣列元素,陣列遍歷
有一個變數var,其值為abbbbsdadhkajsd,設它的長度為len,則用shell獲取此字串的長度,方法如下: len=${#var} 有一個數組A=(a b c d e f) ${A[0]}代表陣列A中的第一個元素a, ${A[@]}是陣列A中的全部元素, ${#
網易頁面的網路爬蟲,獲取網易頁面的所有文字資訊
#coding=utf-8 #--------------------------------------- # 程式:網易爬蟲 # 作者:ewang # 日期:2016-7-6 # 語言:Python 2.7 # 功能:獲取網易頁面中的文字資訊並儲存到