[teemo][20160926][Python][CyouTools]检查APK SDK Version
由于系统从Android L升级到Android M
关于权限管理的部分让许多Android L上的APK在Android M上过不了GTS测试
所以在软件发布前要检查apk是否会影响GTS测试。
具体逻辑,一句话:检查apk权限列表,包含敏感权限的就要检查sdk version,报错就退出。
1 #!/usr/bin/python 2 ''' 3 use this script like: 4 ./xxx/CyouCheck.py xxxx.apk 5 ''' 6 import os 7 import time 8 import sys 9 import re 10 import commands 11 Sdk_Version = 23 12 permission_conf=["android.permission.READ_CONTACTS","android.permission.WRITE_CONTACTS","android.permission.READ_CALENDAR","android.permission.WRITE_CALENDAR","android.permission.SEND_SMS","android.permission.RECEIVE_SMS","android.permission.READ_SMS","android.permission.RECEIVE_WAP_PUSH","android.permission.RECEIVE_MMS","android.permission.READ_CELL_BROADCASTS","android.permission.READ_EXTERNAL_STORAGE","android.permission.WRITE_EXTERNAL_STORAGE","android.permission.ACCESS_FINE_LOCATION","android.permission.ACCESS_COARSE_LOCATION","android.permission.READ_PHONE_STATE","android.permission.CALL_PHONE","android.permission.READ_CALL_LOG","android.permission.WRITE_CALL_LOG","com.android.voicemail.permission.ADD_VOICEMAIL","android.permission.USE_SIP","android.permission.PROCESS_OUTGOING_CALLS","android.permission.RECORD_AUDIO","android.permission.CAMERA","android.permission.BODY_SENSORS","android.permission.GET_ACCOUNTS"] 13 if __name__ == '__main__': 14 aapt_path = os.path.dirname(sys.argv[0])+"/aapt" 15 print "" 16 print "start>>>>>" 17 if not sys.argv[1] or not (sys.argv[1][-4:].upper()==".APK"): 18 print "ERROR:please input an APK file path!" 19 exit(-1) 20 app_path=sys.argv[1] 21 if not os.path.isfile(app_path): 22 print "APK path:%s ,seems not very good,i can't get this file!" % app_path 23 app_path = "%s/%s" % (os.getcwd(),os.path.split(app_path)[1]) 24 if not os.path.isfile(app_path): 25 print "!i tried but i can't get this file!" 26 exit(-1) 27 else: 28 print "do you mean this APK:%s ?" % app_path 29 print "aapt tool path:%s\napk file path:%s" %(aapt_path,app_path) 30 print "aapt cmd:%s\n" % ("%s d badging %s" % (aapt_path,app_path)) 31 print "CyouCheck is working >>>" 32 status, output = commands.getstatusoutput("%s d badging %s" % (aapt_path,app_path)) 33 is_permission_error = 0 34 for i in range(0,len(permission_conf)): 35 match = re.search(permission_conf[i], output) 36 if match: 37 is_permission_error += 1 38 print "\t\tSensitive Android Permission>> %s" % permission_conf[i] 39 if is_permission_error > 0: 40 print "\n\t WARNING:This APK has some Sensitive Android Permission!" 41 else: 42 print "\n\t Haha,Good!There seems no Sensitive Android Permission!" 43 print "" 44 match=re.search(r"targetSdkVersion:'(\d+)" ,output) 45 match2=re.search(r"sdkVersion:'(\d+)" ,output) 46 is_sdk_error=0 47 if match or match2: 48 if match: 49 target_sdk_version=int(match.group(1)) 50 print "targetSdkVersion>>>%s\n" % target_sdk_version 51 if target_sdk_version<Sdk_Version: 52 is_sdk_error=1 53 print "\t WARNING:This SDK Version maybe not very good!" 54 elif match2: 55 sdk_version=int(match2.group(1)) 56 print "sdkVersion>>>%s" % sdk_version 57 if sdk_version<Sdk_Version: 58 is_sdk_error=1 59 print "\t WARNING:This SDK Version maybe not very good!" 60 else: 61 print "WARNING: something wrong seems happened,i can't get SDK Version!" 62 exit(-1) 63 print "result>>>" 64 if is_permission_error>0 and is_sdk_error>0: 65 print "\n\t ERROR:This APK has some Sensitive Android Permission,and it's SDK Version < 23,please contact Perso Team!!!" 66 else: 67 print "\n\t Haha,this apk is OK for GTS test!"
-------------
@小早4myself
-------------

浙公网安备 33010602011771号