Kivy a to Z -- 一个简单的通过adb同步Android系统文件的工具
来兴趣时写了些Kivy的代码,调试却总感觉不是很方便。直接打包到public.mp3的方式太繁锁,用文件共享的软件又发现没有一个好用的,
用samba filesharing本来也只是慢,但是更新的版本之后就一直提示说wifi没有tethering,意思是wifi热点没有打开,但是打开了还是提示没有tethering。
找了个叫什么卓*力的文件管理器,下载了samba插件后输入用户名和密码死活不对,被搞得实在恼火,花了点时间写了个通过adb同步安卓文件的工具,用着也挺爽的。
事件为什么总是要搞得这么复杂呢?简简单单多好?愚蠢的人类啊。
sync.py
import os from os.path import join, getsize import pickle import subprocess file_info = None def compile_source(): for root, dirs, files in os.walk('.'): for f in files: if f in ['sync.py','dump.pkl']: continue if not f.endswith('.py'): continue p = join(root,f) size = os.path.getsize(p) fstat = os.stat(p) info = (size,fstat.st_mtime) if p in file_info and info == file_info[p]: if os.path.exists(p.replace('.py','.pyo')): continue print 'compile ',p print subprocess.check_output('python -OO -m py_compile '+p) def sync_source(): for root, dirs, files in os.walk('.'): for f in files: if f in ['sync.py','sync.pyo','dump.pkl']: continue # if f.endswith('.py'): # continue p = join(root,f) size = os.path.getsize(p) fstat = os.stat(p) info = (size,fstat.st_mtime) if p in file_info and info == file_info[p]: continue file_info[p] = info root_dir = '/mnt/sdcard/kivy/' # root_dir = '/mnt/shell/emulated/0/org.test.kivycatalog' cmd = ['adb','push',p,join(root_dir,p[2:].replace('\\','/'))] print ' '.join(cmd) print subprocess.check_output(cmd) with open('dump.pkl','wb') as f: pickle.dump(file_info,f) if __name__ == '__main__': try: with open('dump.pkl','rb') as f: file_info = pickle.load(f) except Exception,e: print e file_info = {} compile_source() sync_source()
把sync.py放到代码的根目录,执行,会自动把PC端已经修改的文件同步到安卓端,类似输出如下:
./sync.py
compile .\main.py
adb push .\main.py /mnt/sdcard/kivy/main.py
406 KB/s (5839 bytes in 0.014s)
adb push .\main.pyo /mnt/sdcard/kivy/main.pyo
403 KB/s (5372 bytes in 0.013s)
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。