最近一直在瞎搞、东西比较碎,不过主要是在研究 脚本批处理之类的,想着各种一键式操作。
而用模拟器来充当真机调试也是其中的一个环节,因为有涉及打安卓包到真机调试。
但是我又不想用手机来调,一是电脑一会手机晃的眼晕、二是一直运行游戏的,手机发热比较厉害。
另外还有一个好处,下载资源直接变成了拷贝,省去了下载的时间,调试起来快上不少。
起初
本来我是用模拟器下载下来,玩游戏的=、=,然而我发现并不好使用。然后准备卸载。
不过用来挂机还不错、省手机(发热损电池、还容易黄屏),然而还不如直接玩端游,
然而又没时间玩端游,所以还是学习吧~沉迷学习不要自拔。然后就卸载掉了。。。。
过了没多久又要真机调试、然后又把它下载回来了。。。正所谓事事难料。
然后开始研究用模拟器来调试 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的运行按钮,你会发现模拟器乖乖的躺在列表里等待你的选择。