python指令碼**如下:
#!/usr/bin/env python
# coding: utf-8
import os,tempfile,subprocess,os,hashlib,operator
import sys
import shutil
import zipfile
import time
rootpath = os.path.abspath(os.path.join(os.getcwd(),"../../.."))
filepath = rootpath+"/zprojects/longcheer-binary"
filename = "packages.xml"
file = filepath+os.sep+filename
sourcedir = os.path.abspath(os.curdir)
sourcedirfiles = os.listdir(sourcedir)
fileexist = 3
fileexistbutnull = 5
filenotexist = 7
def isfileexists(): //判斷packages.xml是否存在
if os.path.exists(file):
if os.path.getsize(file):
print "file exists and is not null"
size=os.path.getsize(file)
os.system('ls -lh %s' %(file))
return fileexist //如果檔案存在並且不是null,返回fileexist
else:
print ("file exists but is null")
os.system('ls -lh %s' %(file))
return fileexistbutnull //如果檔案存在但是null,返回fileexistbutnull
else:
print ("file doesn't exist")
return filenotexist //返回檔案不存在
for name in sourcedirfiles: //先遍歷當前路徑下的所有apk
if '.apk' == name[-4:]: //判斷是不是apk
shutil.copyfile(sourcedir+os.sep+name,targetdir+os.sep+name) //如果是apk就開始拷貝
def createapkdirectory(): //建立解壓apk的資料夾,解壓後的資料夾名稱用該apk的名稱來命名
for name in sourcedirfiles:
if '.apk' == name[-4:]: //判斷該檔案是否為apk,name[-4:]這個取的是名稱的後四位
if(os.path.exists(name[0:-4])): //如果資料夾已經存在,刪掉
for f in os.listdir(sourcedir+os.sep+name[0:-4]):
filepath = os.path.join(name[0:-4],f)
if os.path.isfile(filepath):
os.remove(filepath)
print filepath+" was removed!"
elif os.path.isdir(filepath):
shutil.rmtree(filepath,true)
print "directory: "+filepath+" was removed"
else :
os.mkdir(name[0:-4]) //如果不存在就建立新的
def unzipapkfiles(): //此方法是解壓apk
for name in sourcedirfiles:
if '.apk' == name[-4:]:
fz = zipfile.zipfile(sourcedir+os.sep+name,'r') //讀取apk,取到所有檔名稱
for file in fz.namelist():
if(file.startswith("lib")): //判斷是否為lib庫,如果是lib再進行解壓
fz.extract(file,name[0:-4])
print name+" 已經解壓完成!"
def readpackagesandwrite(): //向packages.xml中進行寫入,因為apk有很多的庫檔案,所以我預設arm64-v8a優先,其次是armeabi-v7a,最後是armeabi,中間新增的都是packages.xml寫入的格式,
print "readpackagesandwrite"
fp=open(file,"a+")
for name in sourcedirfiles:
if(os.path.isdir(name)):
list =
fpath = ""+"\n"
fp.write(fpath)
fp.write(fapkpath)
for f in os.listdir(sourcedir+os.sep+name):
if(os.path.isdir(sourcedir+os.sep+name+os.sep+f)):
for libfiles in os.listdir(sourcedir+os.sep+name+os.sep+f):
if "arm64-v8a" in list:
for libs in os.listdir(sourcedir+os.sep+name+os.sep+f+os.sep+libfiles):
fp.write(libspath);
else :
if "armeabi-v7a" in list:
for libs in os.listdir(sourcedir+os.sep+name+os.sep+f+os.sep+libfiles):
fp.write(libspath);
else :
if "armeabi" in list:
for libs in os.listdir(sourcedir+os.sep+name+os.sep+f+os.sep+libfiles):
fp.write(libspath);
fp.write("")
fp.write("\n")
fp.close()
print "內建apk已完成,請檢查packages.xml!"
if __name__ =='__main__':
i***ists = isfileexists()
if(i***ists == fileexist):
copyapk(targetdirectory)
createapkdirectory()
unzipapkfiles()
readpackagesandwrite()
指令碼執行完成後,去檢視一下packages.xml,是不是按照指定格式寫入,packages.xml中寫入資訊如下: c練習題 龍旗控股
龍旗控股 1 windows nt下的32位機執行環境下 char str welcome to 51 cc int array char p str int n int func int a 請計算 strlen str sizeof str sizeof array sizeof p sizeo...
城頭變換Android旗
android裝置的更新換代比f1賽車的更新換代還要頻繁。每個月都會有新的機型面世,lgoptimus 2x samsung galaxy s htc sensation xl,motorola droid razr,samsung galaxy nexus 一大堆讓你應接不暇的名字,但這對於使用者...
C 使用Xamarin開發Android應用程式
微軟移動跨平台開發 構建面向 android ios 和 windows phone應用 vs支援安裝負載 vs2017下安裝 c 開發android應用教程 c 使用xamarin開發可移植移動應用終章 11.獲取裝置資訊與常用元件,開源乙個可開發模版.閱讀全文 c 使用xamarin開發可移植移...