Kivy a to Z -- 一个简单的通过adb同步Android系统文件的工具
2014-08-15 21:49
656 查看
来兴趣时写了些Kivy的代码,调试却总感觉不是很方便。直接打包到public.mp3的方式太繁锁,用文件共享的软件又发现没有一个好用的,
用samba filesharing本来也只是慢,但是更新的版本之后就一直提示说wifi没有tethering,意思是wifi热点没有打开,但是打开了还是提示没有tethering。
找了个叫什么卓*力的文件管理器,下载了samba插件后输入用户名和密码死活不对,被搞得实在恼火,花了点时间写了个通过adb同步安卓文件的工具,用着也挺爽的。
事件为什么总是要搞得这么复杂呢?简简单单多好?愚蠢的人类啊。
sync.py
把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)
补充:
发现adb已经提供了同步的命令:sync,用法如下:
指定同步的目录,该目录包含system或者data目录:
set ANDROID_PRODUCT_OUT=.\android
同步 system和data目录:
adb sync
只同步system目录:
adb sync system
只同步data目录:
adb sync data
从上面也可以看到,adb sync只能同步data和system目录,所以本脚本还是有利用价值的。
用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)
补充:
发现adb已经提供了同步的命令:sync,用法如下:
指定同步的目录,该目录包含system或者data目录:
set ANDROID_PRODUCT_OUT=.\android
同步 system和data目录:
adb sync
只同步system目录:
adb sync system
只同步data目录:
adb sync data
从上面也可以看到,adb sync只能同步data和system目录,所以本脚本还是有利用价值的。
相关文章推荐
- 转载:Adb远程连接Android系统(通过网络使用ADB(Connect to android with wifi))
- adb shell获取root权限 因为开发需要,我经常会用到adb这个工具(Android Debug Bridge),我们都知道adb shell默认是没有root权限的,修改系统文件就很不方便
- 通过adb打开Android系统中data文件夹下的app,database的的文件
- Android 实现一个简单的文件上传工具
- 曾经在linux中用交叉编译工具编了一个可执行文件在android系统的板子上跑,无法执行
- Android 通过adb命令同步手机(user_debug版本系统)和电脑时间
- 通过一个简单的文章系统学习MVC3+Linq搭建网站--项目文件结构介绍(3)
- 一个简单的系统配置文件使用DTD和XSD两种方式描述
- 在进行嵌入式开发之前,首先要建立一个交叉编译环境,这是一套编译器、连接器和libc库等组成的开发环境。文章通过一个具体的例子说明了这些嵌入式交叉编译开发工具的制作过程。 随着消费类电子产品的大量开发和应用和Linux操作系统的不断健壮和强大,嵌入式系统越来
- adb shell下使用命令行删除android系统中指定文件和文件夹
- Android编译系统中头文件搜索路径顺序的一个问题
- Android2.3.3系统开发一个在线OTA功能下载文件功能
- 深入浅出linux之如何打开文件1(写一个最简单文件系统)
- 通过网络使用ADB ( Connect to android with ADB over TCP )
- 一个简单文件系统的实现
- 一个查找替换文件的简单工具
- 在Android系统中修改Android.mk使其同时编译rgb2565和rgb2888(向out/host/linux-x86/bin/下新增加一个工具命令)
- 用adb命令安装APK文件到android系统
- 深入浅出linux之如何打开文件2(写一个最简单文件系统) .
- ETL是通过一个简单编程工具联系的三个独立数据中心功能。ETL代表什么?