[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!"
CyouTools

 

posted @ 2016-10-22 16:03  张庭岑  阅读(224)  评论(0)    收藏  举报