Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Kivy a to Z -- 一個簡單的通過adb同步Android系統文件的工具

Kivy a to Z -- 一個簡單的通過adb同步Android系統文件的工具

編輯:關於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)


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved