如果我们不对项目设置图标,则我们看到最终生成的app的图标为默认的机器人图标,事实上,我们是可以设置火山app自定义的图标的。你只需要准备一个jpg或png等的图标文件即可。 本例程相对上一个例程代码上没有做什么修改,但是设置好了程序的图标,图标文件放在项目文件夹seticon_day9\src\icon\chat.jpg文件夹下的chat.jpg文件。 设置方法很简单,点击菜单的项目-当前项目属性,在程序图标一栏选择图标路径即可,尽量是英文路径,避免出现报错,若报错,可以考虑下是不是含有中文的问题。 然后附上咱们的源码下载地址:
链接:https://pan.baidu.com/s/1jmK456l8ewn32-aXyM4nNg 提取码:f374
上面讲的比较简单,就不多说什么了,大家看源码效果就好。 下面我来讲一个今天遇到的无法在调试时把app推送安装到夜神模拟器的问题和解决方案。 首先我们需要了解到,将app推送到模拟器是什么原理。其实是通过安卓的adb工具来推送的。adb这款工具在安卓的sdk包的tools中,可以通过它来使用命令行的方式调试一些安卓程序,获取一些高级的信息。在火山程序中的应用,应该仅仅是用来连接模拟器和推送app。 在火山app的调试窗口我们可以看到例如连接到设备:127.0.0.1:62001这样的提示。这个地址即为设备的本地连接地址。62001表示夜神模拟器的默认端口地址,其他模拟器有其他的地址。但夜神模拟器也不仅仅只有62001这个端口地址,这里还有些坑和需要了解的知识,后面我会详述。 在火山中可以在工具-选项-安卓项目管理器-全局-欲连接到的设备地址一栏填入62001来表示夜神模拟器。如果留空这里的设置,则默认查找目前在线的设备来推送,当然如果你只有一个模拟器设备的话,推送的自然是正确的了。 我这次遇到的问题是,夜神模拟器提醒我升级软件,我进行了升级,升级完成后我发现在调试火山程序时提示连接失败了,说找不到设备。我想我明明开着夜神模拟器呀?怎么会连接不成功呢。 经过查资料和测试,最后发现的原因是,adb的版本在夜神模拟器里提供的跟在安卓adk提供的不一样。 首先我们使用cmd(我用的是管理员模式,下同)进入安卓的adb所在目录:voldev\plugins\vprj_android\sdk\android\platform-tools,这里面有个adb.exe,前面是火山程序的安装路径,大家按自己电脑的来。 输入命令: 显示的版本号为1.0.39(你可能是其他的显示),而我来到夜神模拟器的安装目录:Nox\bin,前面的部分为夜神模拟器的安装路径,大家按自己的来。 输入下述两个命令: - adb version
- nox_adb version
复制代码显示的版本结果均为1.0.36,这里就表示不一样了。 最后经过测试的确是版本不同的原因(吐槽一句adb还真是有点儿傻傻的)。 解决方案是把大家的版本号变成一样即可。 我这里是修改的安卓sdk中的adb.exe,首先添加.bak后缀名把原有的备份,以防万一,然后把夜神模拟器安装bin目录中的adb.exe复制过来。 此时已经可以正常用火山IDE来调试app了。
同时我也发现了另外一个事情,就是这次正常连接后,看到火山的调试窗口显示的端口信息不再是62001了。而是62025。为什么呢。 首先本质原因是因为我的打开的模拟器是多开的。夜神模拟器是支持多开的,我新建了一个用来做课程演示用。如果你打开的模拟器是它安装时默认创建的那个,通常来讲端口就是62001,如果打开的是你新建的后面的多开的模拟器,则端口可能会有变化。 可以通过下述cmd命令来查看当前的模拟器端口和地址(先进入adb的目录或将adb目录加入环境变量): 我们可以看到会展示地址为127.0.0.1:62025。 我们可以用下述命令来连接到该端口地址: - adb connect 127.0.0.1:62025
复制代码如果你现在确实打开着这台模拟器的话,则会返回结果: - already connected to 127.0.0.1:62025
复制代码我们还可以用系统端口查询的方法来知道现在是什么端口被占用着,后面这些命令不需要进入adb目录或使用adb,用的是系统自带的程序,我们可以用这里学到的知识来查询其他端口的占用情况。 如果查看现在电脑上所有端口的占用情况,可以用如下命令: 如果需要实现我们上述的查询目的,首先我们需要打开任务管理器,比如夜神模拟器,在进程选项卡,找到NoxVMHandel Frontend这个名称,然后打开PID列的显示,获取它的PID,比如本例为13736。
然后在cmd中输入如下代码来查询: - netstat -ano|findstr "13736"|findstr "ESTABLISHED
复制代码用来查找含有13736以及ESTABLISHED那一行,因为打开该端口被占用时,状态为ESTABLISHED。我们可以看到返回: - TCP 127.0.0.1:62025 127.0.0.1:54625 ESTABLISHED 13736
复制代码其中每一列分别表示的含义为:协议,本地地址,外部地址,状态,PID,其中这个本地地址就是adb要连接的地址了。 此处仅做研究和了解,不是重点知识,大家看个故事看一看即可。
|