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

來源:互聯網
上載者:User

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

來興趣時寫了些Kivy的代碼,調試卻總感覺不是很方便。直接打包到public.mp3的方式太繁鎖,用檔案分享權限設定的軟體又發現沒有一個好用的,

用samba filesharing本來也只是慢,但是更新的版本之後就一直提示說wifi沒有tethering,意思是wifi熱點沒有開啟,但是開啟了還是提示沒有tethering。

找了個叫什麼卓*力的檔案管理工具,下載了samba外掛程式後輸入使用者名稱和密碼死活不對,被搞得實在惱火,花了點時間寫了個通過adb同步安卓檔案的工具,用著也挺爽的。


事件為什麼總是要搞得這麼複雜呢?簡簡單單多好?愚蠢的人類啊。


sync.py

import osfrom os.path import join, getsizeimport pickleimport subprocessfile_info = Nonedef 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)


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.