尝试Capacitor(Vue+Android)混合开发

简介: 尝试Capacitor(Vue+Android)混合开发

前言:


Capacitor介绍:


  1. Capacitor是一个开源的并且在Native端运行的跨平台的web应用。
  2. 使用JavaScript、HTML和CSS创建跨平台iOS、Android和渐进式Web应用程序。
  3. 很好的将Cordova迁移到Capacitor,因为它99%的向后兼容Cordova。


来自Vue3文档中的一张截图:

1.png

来自capacitorjs网站的一张截图:

2.png开始前注意: 前端开发环境和安卓开发环境的依赖还需自行安装


尝试一下走起:



1. 准备一个前端环境:


  1. 创建项目:yarn create vite
  2. 安装依赖:cd .\v3-native-demo\ & yarn
  3. 首次编译:yarn build


2. 准备Capacitor环境:


文档地址:capacitorjs.com/solution/vu…


  1. 安装核心模块:npm i @capacitor/core
  2. 安装脚手架:npm i @capacitor/cli
  3. 初始化项目:npx cap init <project-name> <package-name> --web-dir=dist


3. 准备Android环境:


文档地址:capacitorjs.com/docs/gettin…


  1. 安装安卓环境依赖:npm install @capacitor/android
  2. 添加安卓环境到项目:npx cap add android
  3. 使用AS打开安卓项目:npx cap open android,默认AndroidSDK目录可能找不到,执行后AS会自动检索SDK目录进行更新。
  4. 编译安卓项目到模拟器:npx cap run android


4. 官方插件使用(@capacitor/toast):


文档地址:capacitorjs.com/docs/apis


  1. 安装插件依赖:npm install @capacitor/toast
  2. 同步代码:npx cap sync
  3. 更新前端:
import { Toast } from '@capacitor/toast';
const showHelloToast = async () => {
  await Toast.show({
    text: 'Hello!',
  });
};
复制代码


5. 自定义安卓插件:


插件简单指南:capacitorjs.com/docs/androi…完整插件指南:capacitorjs.com/docs/plugin…


  1. 定义插件:
package cn.it200.v3demo;
import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;
@CapacitorPlugin(name = "Echo")
public class EchoPlugin extends Plugin {
    @PluginMethod()
    public void echo(PluginCall call) {
        String value = call.getString("value");
        JSObject ret = new JSObject();
        ret.put("value", value);
        call.resolve(ret);
    }
}
复制代码


  1. 注册插件MainActivity=>onCreate():
public class MainActivity extends BridgeActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        registerPlugin(EchoPlugin.class);
    }
}
复制代码


  1. 在前端代码整合调用:
// 整合
import { registerPlugin } from '@capacitor/core';
export interface EchoPlugin {
  echo(options: { value: string }): Promise<{ value: string }>;
}
const Echo = registerPlugin<EchoPlugin>('Echo');
export default Echo;
// 调用
const { value } = await Echo.echo({ value: 'Hello World!' });
console.log('Response from native:', value);
复制代码


结语:


通过上面的一顿操作后发现,从和Cordova还是很相似的,插件的注册和我自己框架的方式类似也是通过注解+反射来实现的,但是每次修改完前端代码后不能很方便的同步到模拟器上不知道要怎么办?ReactNative都可以监听重新编译的,你们知道有类似的功能吗?



相关文章
|
8月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1415 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
8月前
|
移动开发 JavaScript 应用服务中间件
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1014 5
【06】优化完善落地页样式内容-精度优化-vue加vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
8月前
|
移动开发 Rust JavaScript
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1113 4
【01】首页建立-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
|
9月前
|
开发工具 Android开发
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
883 11
X Android SDK file not found: adb.安卓开发常见问题-Android SDK 缺少 `adb`(Android Debug Bridge)-优雅草卓伊凡
|
8月前
|
移动开发 Android开发
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【03】建立隐私关于等相关页面和内容-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
387 0
|
9月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
1167 6
|
11月前
|
安全 数据库 Android开发
在Android开发中实现两个Intent跳转及数据交换的方法
总结上述内容,在Android开发中,Intent不仅是活动跳转的桥梁,也是两个活动之间进行数据交换的媒介。运用Intent传递数据时需注意数据类型、传输大小限制以及安全性问题的处理,以确保应用的健壯性和安全性。
661 11
|
JavaScript Linux 网络安全
Termux安卓终端美化与开发实战:从下载到插件优化,小白也能玩转Linux
Termux是一款安卓平台上的开源终端模拟器,支持apt包管理、SSH连接及Python/Node.js/C++开发环境搭建,被誉为“手机上的Linux系统”。其特点包括零ROOT权限、跨平台开发和强大扩展性。本文详细介绍其安装准备、基础与高级环境配置、必备插件推荐、常见问题解决方法以及延伸学习资源,帮助用户充分利用Termux进行开发与学习。适用于Android 7+设备,原创内容转载请注明来源。
4867 77
|
11月前
|
移动开发 Java 编译器
Kotlin与Jetpack Compose:Android开发生态的演进与架构思考
本文从资深Android工程师视角深入分析Kotlin与Jetpack Compose在Android系统中的技术定位。Kotlin通过空安全、协程等特性解决了Java在移动开发中的痛点,成为Android官方首选语言。Jetpack Compose则引入声明式UI范式,通过重组机制实现高效UI更新。两者结合不仅提升开发效率,更为跨平台战略和现代架构模式提供技术基础,代表了Android开发生态的根本性演进。
440 0
|
12月前
|
安全 Java Android开发
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡
481 0
为什么大厂要求安卓开发者掌握Kotlin和Jetpack?深度解析现代Android开发生态优雅草卓伊凡