UNI-APP 踩坑记录

sass-loader

A new version of sass-loader is available. Please upgrade for best experience.

Refer

1
2
yarn upgrade-interactive --latest
yarn add -D sass-loader@latest

vue-cli NVUE 报错

could not find a binding for your current environment: OS X 64-bit with Node.js 8.x

Refer

1
2
3
cd /Applications/HBuilderX.app/Contents/HBuilderX/plugins/node
mv node node-v8
ln -s /usr/local/bin/node /Applications/HBuilderX.app/Contents/HBuilderX/plugins/node/node

查看安卓证书信息

生成证书

1
2
3
4
5
# 简易版
keytool -genkey -v -keystore key.jks -keyalg RSA -keysize 2048 -validity 10000 -alias key

# 完整版
keytool -genkeypair -keyalg RSA -keysize 1024 -sigalg MD5withRSA -alias key -keystore /root/key.jks -storepass 123456 -keypass 123456 -dname "CN=laijw,OU=Antman,O=Antman,L=Huizhou,ST=Guangdong,C=CN"

获取证书 md5,sha1 等信息

1
keytool -list -v -keystore test.keystore

命令行打包

1
2
3
4
5
# 打 Release 包
gradlew assembleRelease

# 获取安卓手机所有包名
adb shell pm list package

Android Studio 下载 gradle 慢

1.使用下载工具下载gradle

gradle的官网下载地址是 https://services.gradle.org/distributions/,打开网址后下载complete版本的gradle。复制下载链接到迅雷下载即可。

2.替换本地gradle

完全关闭AS,包括正在下载gradle的进程也需要关闭。进入到本地的gradle存储目录,我的MAC是/Users/Seven/.gradle/wrapper/dists,linux系统的话应该是在个人用户目录下。

把gradle-2.14.1-all.zip文件复制到 gradle-2.14.1-all/8bnwg5hd3w55iofp58khbp6yv 目录下,同时把该目录下的其他文件删除掉。这个8bnwg5hd3w55iofp58khbp6yv是由AS自动生成的,不能更改。

重新打开AS,会自动解压并生成文件。至此gradle更新完成。

Mac 安装软件显示无法打开,因为APPLE无法检查其是否包含恶意软件

1
sudo spctl --master-disable

mac 微信多开

1
open -n /Applications/WeChat.app/Contents/MacOS/WeChat

Xcode 相关操作快捷键

1
Control + 6: 代码结构树

Mac 安装cocoapods

一些官网的连接

1
2
3
4
5
6
7
Rvm 官网 : https://www.rvm.io/
Ruby 官网 :https://rubygems.org/
CocoaPods 官网 :https://cocoapods.org/
Rvm 安装指南 :https://rvm.io/rvm/install
Homebrew 官网 :http://brew.sh/index_zh-cn.html
ruby 镜像 - taobao:https://ruby.taobao.org/
ruby 镜像 - china:https://gems.ruby-china.org/

Cocoapods 安装

CocoaPods是用gem ruby实现的,要想使用它首先需要有gem ruby的环境。且 MAC 的 OS X系统默认已经可以运行ruby。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
gem -v
gem sources

# 下面步骤中我们会用国内的镜像源:
gem sources --r https://rubygems.org/
gem sources --a https://gems.ruby-china.com
sudo gem install cocoapods
pod setup

# 使用-更新

# 1.只安装新增的库,已经安装的库不更新
pod install --verbose --no-repo-update

# 2.只更新指定的第三方库,其他库不更新
pod update xxx --verbose --no-repo-update

# 3.把Podfile里所有的库更新重新安装
pod install

Uniapp 打开安卓原生 Activity

参考官方离线打包文档

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// 打开安卓原生 Activity
openActivity(item) {
  //获取宿主上下文
  var main = plus.android.runtimeMainActivity();
  //通过反射获取Android的Intent对象
  var Intent = plus.android.importClass("android.content.Intent");
  //通过宿主上下文创建 intent
  var intent = new Intent(main.getIntent());
  //设置要开启的Activity包类路径  a0201.tianyin.uniapp.MainActivity换掉你自己的界面
  intent.setClassName(main, "a0201.tianyin.uniapp.SG25_08.sky_allHomeActivity");
  //开启新的任务栈 (跨进程)
  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  //向原生界面传值操作
  intent.putExtra("uni_key",item);
  //开启新的界面
  main.startActivity(intent);
},

离线打包

Uniapp 官方文档

App离线开发工具包,即App离线SDK,是把App运行环境(runtime)封装为原生开发调用接口,开发者可以在自己的 Android 及 iOS 原生开发环境配置工程使用,包括 Android离线开发SDK 及 iOS离线开发SDK。

Android

安卓离线打包整体步骤:

  • 下载 SDK
  • 用 Android Studio 打开 HBuilder-Hello 目录
  • 将HBuilderX中的项目导出,将导出的资源复制到assets->apps下
  • 修改dcloud_control.xml文件

IOS

IOS离线打包整体步骤:

  • 下载 SDK
  • 用 Xcode 打开 HBuilder-Hello 目录
  • 将本地打包App资源拷贝到项目目录下的 Pandora -> apps 路径下
  • 打开 Xcode 工程目录下的control.xml文件,修改appid值

UniApp 整合原生工程

Android

安卓离线打包整体步骤:

  • 下载 SDK
  • 用 Android Studio 打开 HBuilder-Hello 目录
  • 将HBuilderX中的项目导出,将导出的资源复制到assets->apps下
  • 修改dcloud_control.xml文件
  • 将原生工程中的java和assets合并到项目中
  • UniApp端使用

UniApp 使用 Native.js调用安卓原生 Activity 实现代码

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// 打开安卓原生 Activity
openActivity(item) {
  //获取宿主上下文
  var main = plus.android.runtimeMainActivity();
  //通过反射获取Android的Intent对象
  var Intent = plus.android.importClass("android.content.Intent");
  //通过宿主上下文创建 intent
  var intent = new Intent(main.getIntent());
  //设置要开启的Activity包类路径  a0201.tianyin.uniapp.MainActivity换掉你自己的界面
  intent.setClassName(main, "a0201.tianyin.uniapp.SG25_08.sky_allHomeActivity");
  //开启新的任务栈 (跨进程)
  intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  //向原生界面传值操作
  intent.putExtra("uni_key",item);
  //开启新的界面
  main.startActivity(intent);
},

IOS

IOS离线打包整体步骤:

  • 下载 SDK
  • 用 Xcode 打开 HBuilder-Hello 目录
  • 将本地打包App资源拷贝到项目目录下的 Pandora -> apps 路径下
  • 打开 Xcode 工程目录下的control.xml文件,修改appid值
  • 在 Xcode 中引入framework和bundle
  • Hbuilder nativeplugins引入framework插件,编写插件package.json
  • 在vue页面中通过 uni.requireNativePlugin 将插件引入,方法中添加执行事件
  • 在 Xcode 中配置开发证书,点击运行

adb 远程调试

基于 QtScrcpy

  • 安卓手机端在开发者选项中打开usb调试
  • 通过usb连接安卓手机到电脑
  • 点击刷新设备,会看到有设备号更新出来
  • 点击获取设备IP
  • 点击启动adbd [adb tcpip 5555]
  • 无线连接 [adb connect 192.168.0.151:5555]
  • 再次点击刷新设备,发现多出了一个IP地址开头的设备,选择这个设备
  • 启动服务

备注:启动adbd以后不用再连着usb线了,以后连接断开都不再需要,除非安卓adbd停了需要重新启动