最近一直在瞎搞、東西比較碎,不過主要是在研究 腳本批處理之類的,想著各種一鍵式操作。
而用模擬器來充當真機調試也是其中的一個環節,因為有涉及打安卓包到真機調試。
但是我又不想用手機來調,一是電腦一會手機晃的眼暈、二是一直運行游戲的,手機發熱比較厲害。
另外還有一個好處,下載資源直接變成了拷貝,省去了下載的時間,調試起來快上不少。
起初
本來我是用模擬器下載下來,玩游戲的=、=,然而我發現并不好使用。然后準備卸載。
不過用來掛機還不錯、省手機(發熱損電池、還容易黃屏),然而還不如直接玩端游,
然而又沒時間玩端游,所以還是學習吧~沉迷學習不要自拔。然后就卸載掉了。。。。
過了沒多久又要真機調試、然后又把它下載回來了。。。正所謂事事難料。
然后開始研究用模擬器來調試 apk包,效果還不錯~
至于eclipse 和 安卓studio帶的模擬器,大而慢,辯而日,笑而不語。
mumu模擬器
起初我是用的 逍遙模擬器,感覺還不錯,但是后來網易出了個mumu模擬器,
下載下來看了看,確實還不錯。還有mac版的,作為客戶端端,最喜歡的就是跨平臺的。
因為不同的軟件難免有不同的操作和快捷鍵、如果跨平臺就減少了不少成本去熟悉兩套東西,
用起來自己也舒服。畢竟mac和windows系統的快捷鍵,就讓我們已經很混亂了。
(ps:重命名~我回車,啪! 我擦,怎么進去了。 ctl+w,點點點,怎么關不掉。。。)
下載下來mumu模擬器,第一個感覺就是干凈。符合我的標準,我喜歡。
…..然后把逍遙模擬器,卸載了~就是這么無情。
然而雞賊的網易,用adb devices的時候是看不到模擬器的。(mac 重啟下adb,是可以看到的)
然后打開進程管理器。看到NemuHeadless.exe,大概率就是他了,查看下他連接的端口號
//tasklist | findstr xx 也可以看pid,就不用打開界面了
netstat -no | findstr 1184(PID) //查看pid占用的端口
發現是占用的22471, 然后
adb connect 127.0.0.1:22471
adb devices
本以為穩得很,然而卻沒有找到設備,哦買發克,于是我就去網上搜了搜,
結果搜到了mumu的論壇,也有人問同樣的問題,結果工作人員竟然是私密回復的!!!
哦買發發發發克!!,靠人不如靠自己,“于是我就注冊了一個號,問了同樣的問題”嗎?
怎么可能~ 于是我用nodepad++ 指定mumu的路徑 開始全局搜素 22471。
果不其然,讓我搜到了一個配置文件, myandrovm_vbox86.nemu 。
然后默默的搜了一波 adb,就一個字 “這波穩~”!
然后再重復一下 connect 7555, devices 果然可以看到模擬器了唔哈
本來想存一份,初始的安裝包,怕以后越做越大,加廣告啊什么的,歷史總會驚人的想死。
然而一看是個下載器。。。網易果然雞賊,古人誠不欺我。。。
adb 命令
1、先說下重新打包和安裝,因為比較是從打包開始的嘛
system('打包命令')
//包出來了、清下包資源
system('adb shell pm clear com.games.es')
//卸載包
system('adb uninstall com.games.es')
//重新重新安裝
system('adb install .\bin\debug\android\es-game-debug.apk')
//啟動應用
system('adb shell am start com.games.es/org.cocos2dx.cpp.AppActivity')
2、再說說更新資源
因為一般都是用腳本語言,所以不改動c++代碼的邏輯部分,直接把腳本和資源直接壓到
一個目錄,然后加上搜索路徑就可以了。
//刪除舊的
system('adb shell rm -rf /sdcard/es/')
//壓入新的
system('adb push _tmp/ /sdcard/es/')
//把臨時文件刪掉。建議先拷貝一份再進行操作,永遠不要動源文件,不然你會后悔的。。
system('rm -r _tmp/')
附加一段lua腳本的代碼示例
if not InSDCard and cc.FileUtils:getInstance():isFileExist("/sdcard/es/src/main.luac") then
InSDCard = true
package.loaded["main"] = nil
cc.FileUtils:getInstance():purgeCachedEntries()
//這樣只有sdcard路徑下有資源的時候才會添加,減少正常情況下對搜索路徑的遍歷
//雖然影響微乎其微,但是還是要有好的習慣
cc.FileUtils:getInstance():addSearchPath("/sdcard/es/res", true)
cc.FileUtils:getInstance():addSearchPath("/sdcard/es/src", true)
return require "main"
end
3、其他常用adb命令
adb kill-server //看也知道是關閉adb
adb start-server //看也知道是開啟adb,不過一般都直接 adb devices就自己開啟了
adb install/uninstall //上邊提到了
adb push/pull //上邊提到了 存到手機上和從手機上拷貝出來
adb shell //這個就厲害了 shell 的基本命令都能用
//比如搜個文件(不支持中文就比較尷尬了)
$>adb shell
$>find -name "*.luac" | grep "data"
$>exit
//還有兩個命令
adb shell pm [package manager] //包管理
adb shell am [activity manager] //活動管理。比較復雜,可以啟動/關閉應用、進行廣播等
結語
連接夜神模擬器的
1、關掉AS和夜神模擬器。同時去任務管理器里看下,adb.exe以及nox_adb.exe這2個進程有沒有在運行?有的話就結束掉。
2、找到SDK的目錄和夜神模擬器的目錄,將SDK目錄下的adb.exe文件,復制到夜神模擬器的目錄下,因為夜神模擬器目錄下原本的adb文件名字叫做nox_adb.exe,因此復制過去之后也得改名為nox_adb.exe。
3、這樣就將AS目錄下的adb文件和模擬器目錄下的adb文件完全同步了,版本號也一致了。此時,可以使用cmd命令查驗一下:
C:\Users\leon>adb version
Android Debug Bridge version 1.0.36
C:\Users\leon>nox_adb version
Android Debug Bridge version 1.0.36
4、重新打開AS和模擬器,待二者運行穩定之后,點擊AS的運行按鈕,你會發現模擬器乖乖的躺在列表里等待你的選擇。