来兴趣时写了些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)
Kivy a to Z -- 一个简单的通过adb同步Android系统文件的工具,布布扣,bubuko.com
Kivy a to Z -- 一个简单的通过adb同步Android系统文件的工具
原文地址:http://blog.csdn.net/i2cbus/article/details/38590875