最近折腾 cordova 遇到的问题

1. A valid provisioning profile for this executable was not found.

这个问题,在网上搜了很久,有很多种可能会导致这个问题。我遇到这个问题的解决方案是:

File > Workspace Settings > Set Build system to “Legacy Build System”

2. Cannot read property ‘semver’ of null

  • find the path /platforms/android/cordova/lib/emulator.js
  • find the line avd.target = 'Android ' + level.semver + ' (API level ' + api_level + ')';
  • replace it with avd.target = 'Android ' + (level ? level.semver : '') + ' (API level ' + api_level + ')';

3. 如果 build 的时候显示 Error: spawn EACCES

这个错误说明你正在使用的程序没有执行权限,通过给 cordova 命令增加 --verbose 参数,可以看到是哪个程序执行不了,然后给这个程序加上执行权限即可

4. cordova build 之前先配置好环境变量

详细的安装配置需要去看下 cordova 的官方文档,这里只是强调下环境变量的配置。这里分享下我的环境变量配置:

1
2
3
export JAVA_HOME=/Applications/Android\ Studio.app/Contents/jre/jdk/Contents/Home
export ANDROID_HOME=/Users/ety001/Library/Android/sdk
export PATH=${PATH}:${JAVA_HOME}/bin:${ANDROID_HOME}:${ANDROID_HOME}/platform-tools:${ANDROID_HOME}/tools:${ANDROID_HOME}/tools/bin

把上面的配置加到你的 ~/.bashrc 或者如果你要用的是 zsh 的话就是 ~/.zshrc

5. 代码更新

代码修改后,需要先 npm run build ,也就是先把 js 编译好,编译好后的静态文件会在项目根目录的 www 目录中,再执行 cordova prepare -d 就会把静态文件复制到各个 platformwww 目录里面。

6. 如何使用 Safari 和 Chrome 调试 app

  • ios的话,先在手机上找到 “设置” => “Safari浏览器” => “高级” => 把 “Web 检查器” 选中,然后用手机线把手机和电脑连接,电脑上打开 “Safari 浏览器”,”偏好设置” => “高级” => 选中 “在菜单栏显示开发菜单”,最后打开手机上的 App,这样在 Safari 的 “开发” 菜单中就能看到你的手机名的菜单了,选中其中的 app 名字就能打开 inspect 进行调试了。
  • android的话,也差不多的流程,在 Chrome 浏览器里访问 chrome://inspect,使用 debug 模式打开模拟器里要调试的 app 后,在 Chrome 浏览器里就能看到信息了,点击 inspect 就能打开针对这个 app 的调试窗口。需要注意的是,调试窗口里面的调试器需要翻墙,可以先用浏览器访问 https://chrome-devtools-frontend.appspot.com/serve_rev/@180870/devtools.html ,然后把这个网址加入到白名单里面,再回到 inspect 就可以看到调试界面了(这里我折腾了一天多,最终才发现是墙的问题😂)。