android自動打包流程詳細圖:
在前面一些部落格我們知道了如何通過命令列打包,如何通過eclipse打包,如何通過編寫shell指令碼來進行打包,但是這些都不能很好的跨平台進行打包。
因python本身具有很好的跨平台特性,故本博就是通過使用python來進行編寫跨平台打包指令碼,指令碼如下(build.py):
#最後執行:python build.py即可。!/bin/python
#import
osimport
reimport
sysimport
time
import
shutil
import
hashlib
build_root = os.path.dirname(os.path.abspath('
__file__'))
build_source_name = '
source
'build_apk_name = '
fullscreenactivity-release.apk
'release_apk_path = build_root + '
/release_apks
'publish_apks = build_root + '
/publish_apks
'android_sdk = os.environ.get('
android_sdk')
build_tool_ant_path = android_sdk + '
/tools/ant
'build_bin_path = '
bin'
build_bin_classes_path = '
classes
'source_dir = build_root + '
/' +build_source_name
rev_cmd = "
svn info
"rev_pattern = r"
last changed rev: ([0-9]*)"#
delete file folder
defdelete_file_folder(src):
ifos.path.isfile(src):
try:
os.remove(src)
except
:
pass
elif
os.path.isdir(src):
for item in
os.listdir(src):
itemsrc =os.path.join(src,item)
delete_file_folder(itemsrc)
try:
os.rmdir(src)
except
:
pass
#calc file md5
defcalcmd5(filepath):
with open(filepath,'rb
') as f:
md5obj =hashlib.md5()
md5obj.update(f.read())
hash =md5obj.hexdigest()
return
hash
#get source code from svn repository
defget_source_code():
if(os.path.exists(release_apk_path)):
print release_apk_path + '
exists!
'else
: os.makedirs(release_apk_path)
if(os.path.exists(source_dir)):
os.chdir(source_dir)
os.system(
'svn update')
else
: os.makedirs(source_dir)
os.chdir(source_dir)
os.system(
'svn checkout .')
#clear classes file folder
defclear_classes_folder():
classes_abs_path = source_dir + '
/' +build_bin_classes_path
if(os.path.exists(classes_abs_path)):
delete_file_folder(classes_abs_path)
else
: os.makedirs(classes_abs_path)
#get svn revision
defget_revision():
rev =os.popen(rev_cmd).read()
m =re.search(rev_pattern, rev)
if m ==none:
return
none
return m.group(1)
#get current time
defget_time():
return time.strftime('
%y-%m-%d_%h-%m-%s
', time.localtime(time.time()))
#ant build
defant_build():
os.system(
'android update project -p . --target android-19')
os.system(
'ant clean & ant release')
#copy apk file to target folder
defcopy_apk():
apk_file = source_dir + '
/' + build_bin_path + '
/' +build_apk_name
target_apk_file = release_apk_path + '
/' +build_apk_name
if(os.path.exists(apk_file)):
shutil.copyfile(apk_file, target_apk_file)
else
:
print apk_file + '
is not exists!'#
delete source code files
defdelete_source_file():
delete_file_folder(source_dir)
#publish apk
defpublish(date, rev):
if(os.path.exists(publish_apks)):
print publish_apks + '
exists!
'else
: os.makedirs(publish_apks)
md5 = calcmd5(release_apk_path + '
/' +build_apk_name)
apk_file = release_apk_path + '
/' +build_apk_name
publish_file = publish_apks + '
/' + date + '
_' + rev + '
_' + '
release.apk
'shutil.move(apk_file, publish_file)
delete_file_folder(release_apk_path)
#main function
defmain():
get_source_code()
clear_classes_folder()
rev =get_revision()
date =get_time()
ant_build()
copy_apk()
publish(date, rev)
if__name__ == '
__main__':
main()
Kivy跨平台開源框架之Android打包
打包成 android 可執行檔案的3種方式 1 可以使用 python for android 為 android 建立乙個包。2 可以使用 buildozer 工具自動完成整個過程。3 可以使用 kivy launcher 打包,這樣不用編譯就能執行 kivy 應用。對於新手,建議使用 buil...
全志平台編譯和打包系統(2)打包系統
1.前言 打包的好處 其他平台是將kernel uboot rootfs編譯好後直接分開燒寫到flash中,分開的話必然需要使用者在燒寫的時候,指定燒寫的bin檔案。把這些整合到乙個韌體檔案中的話,在燒寫這些到flash的時候會自動去韌體裡面搜尋需要的內容,這樣對使用者更透明。打包指令碼為liche...
原 C 跨平台呼叫C 的函式指標
此文主要講一下列子,通過列子就能很清楚的看到是如何用c 去呼叫c 的 的 列子 在c 的乙個標準win32 api 庫cclic.dll中有乙個函式void winapi getfunctionaddress unsigned int sn 此函式通過傳sn序號得到函式指標即乙個函式的位址.之後再通...