aaa1

news/2025/3/21 6:29:26/文章来源:https://www.cnblogs.com/dakongyiwgy/p/18780944

Uniapp、uniappx笔记

App平台

云端打包

Uniappx原生SDK

android
studio原生工程配置https://doc.dcloud.net.cn/uni-app-x/native/use/android.html

配置uts插件

教程 https://doc.dcloud.net.cn/uni-app-x/native/use/androiduts.html

uts插件资源位于unpackage/resource/app-android/uni_modules,uts插件指前端封装的uni_modules插件;android
uts插件指根据编译后的uts插件生成的安卓原生模块(需要按规则合并到android
studi新建的android library)

{width="5.7625in"
height="6.011805555555555in"}

上图官方文档,下两图我实际工程

{width="4.995833333333334in"
height="9.686805555555555in"}

上左图hello
uvue是HbuilderX新建的uniappx工程,uts-nativepage是新建的uts插件。整个工程可以编译生成本地资源,如图中文字所示,用于android
studio开发。每一个UTS插件对应android项目中的一个 lib module.

上右图uniapp3是android studio工程(空activity,但我用带导航的activity)

,app是父模块,子模块有uniappx(建议改名hello uvue,用于合并上左图hello
uvue工程)、uts-nativepage(用于合并上左图hello
uvue/uni_modules/uts-nativepage插件),模块依赖关系如下:

app依赖所有子模块,uniappx依赖uts-nativepage

上右图android studio工程uniapp3的库依赖关系如下:

uniappx依赖Uniappx/libs(其中包含了aar库,都是uniappx的SDK安卓版),uniappx依赖uts-nativepage/lib(其中包含了uts-nativepage所依赖的jar、so库)

Uniappx依赖uts-nativepage/lib,因为uniapp调用了uts-nativepage

uts-nativepage依赖Uniappx/lib,因为SDK是公共库,uts-nativepage也用了

uniappx的SDK放在Uniappx/lib因为其合并了hello uvue,比较好理解

剩下的就是三个工程的build.gradle文件的配置,androidmainfest.xml配置,还有复制资源资源

混编插件在Android studio打包:.so 分为不同平台,比如libs\arm64-v8a
libs\armeabi-v7a libs\x86 libs\x86_64 ,然后设置

E:\workspace\android\Uniapp3\uts-nativepage\build.gradle

android {

sourceSets {

main {

jniLibs.srcDirs = ['./libs']

}

}

Uts插件

https://doc.dcloud.net.cn/uni-app-x/native/use/androiduts.html

每一个UTS插件对应android项目中的一个 lib module.

第二步 集成原生代码

Kotlin/Java语言中,存在包名
的概念,类似swift的命名空间。为了让我们的原生代码可以被UTS使用,我们需要确保原生代码的包名是正确的:

大多数情况下,我们建议混编代码的包名与UTS插件默认包名保持一致,这样在UTS调用原生代码时,可以省去手动引入包名的步骤。

UTS是Kotlin语言的上游语言。所有Kotlin代码中的:类、对象、函数、变量,均可以在uts中直接使用。但反过来,虽然可以在Kotlin中调用UTS代码,但这是不安全的

以hello
uts/uni_modules/uts-nativepage为例,utssdk/app-android/NativeLib.kt包名package
uts.sdk.modules.utsDemoMem
与uts插件的utssdk\app-android\AndroidManifest.xml的package="io.dcloud.uni_modules.utsNativepage">
不一样,

uts引入kotlin就需要import KotlinObject from 'xxx.xxx.KotlinObject';
反过来kotlin引入uts需要import io.dcloud.uts.console // kt或java代码

如果需要在原生环境和UTS环境/uvue环境中互传数据,建议转换为标准内置对象实现后再进行传递。

hello uts混编实例调用流程

E:/workspace/uni/hello uts/pages/SystemAPI/SystemAPI.vue uniapp优先调用

E:/workspace/uni/hello uts/pages/SystemAPI/SystemAPI.uvue uniappx调用

import { gotoDemoActivity,sayHelloFromJar,sayHelloFromSO } from
"@/uni_modules/uts-nativepage";

...

methods: {

​ testNativeSO() {

​ let ret = [sayHelloFromSO]{.mark}();

​ --》

E:/workspace/uni/hello
uts/uni_modules/uts-nativepage/utssdk/app-android/index.uts

​ export function [sayHelloFromSO]{.mark}():string {

​ let nativeLib = new NativeLib()

​ return nativeLib.[stringFromJNI]{.mark}()

​ -》

E:/workspace/uni/hello
uts/uni_modules/uts-nativepage/utssdk/app-android/NativeLib.kt

external fun [stringFromJNI]{.mark}(): String

companion object {

​ // Used to load the 'nativelib' library on application startup.

​ init {

​ System.loadLibrary("[nativelib]{.mark}")

​ }

​ -》

E:/workspace/uni/hello
uvue/uni_modules/uts-nativepage/utssdk/app-android/libs/x86_64/[libnativelib]{.mark}.so

我是黑体字
我是微软雅黑
我是华文彩云
我是红色
我是绿色
我是蓝色
我是尺寸
我是黑体,绿色,尺寸为5

背景色yellow
import sys
ssl._create_default_https_context = ssl._create_unverified_contextrootPath = os.path.abspath(os.path.dirname(__file__))
with open(os.path.join(rootPath,"cnblogs.json"),"rb") as f:config = json.loads(f.read())

你要改色的文字

$\textcolor{red}{这里输入你要改变颜色的文字}$

$\textcolor{Yellow}{Yellow}$

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/901518.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

wpa_supplicant/hostapd --- 控制接口库

官网: https://w1.fi/wpa_supplicant/只需要源码的这两个文件:

go-gRPC微服务调用

协议介绍 RPC协议RPC(远程过程调用协议),通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC假定某些协议的存在,例如TCP/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发包括网络分布式多程序在内的应用…

突破性技术:制药冻干机实现EtherCAT与Profinet网关模块无缝监控集成

案例分享:冻干机 EtherCAT 转 Profinet 实现温湿度监控 在现代医药生产过程中,冻干机作为关键设备,对温湿度的控制与监测尤为重要。某医药企业在其冻干机系统升级中,面临一个典型的通讯挑战:主控制系统采用 EtherCAT 协议,而现场的温湿度监控系统及其他过程控制设备则基于…

java-JNDI(二)-高版本绕过

JNDI 高版本的绕过 为了防止 JNDI 攻击,Oracle 对 JNDI 的远程类加载漏洞(如 LDAP 或 RMI 协议的远程代码执行(RCE))进行了限制 com.sun.jndi.rmi.object.trustURLCodebase=false com.sun.jndi.cosnaming.object.trustURLCodebase=false com.sun.jndi.ldap.object.trustUR…

tile

dsfTechnorati Tags: gjhgsdhttp://dfdfdfddfdfdfdsfdfdf

电视机顶盒刷机,更改固件包教程

这几天捣鼓了很久的刷机包,终于学会了怎么把已经弄好的刷机包,更改成自己想要的桌面。下面是我整理好的详细教程,本教程所需工具:刷机包大全、MLK软件、mumu模拟器 刷机包大全: 链接: https://pan.baidu.com/s/1G0on4sV9QmpxPXLUSN5ttQ?pwd=5279 提取码: 5279 一.确定机顶…

Java技术栈面试八股文:掌握这九大关键领域

Java基础:这是Java开发的基石,包括Java语言的基本语法、数据类型、控制结构、面向对象编程(OOP)概念(如类、对象、继承、封装、多态)、异常处理、集合框架等。掌握这些基础知识对于理解更高级的Java特性至关重要。Java Web基础:涉及Java在Web开发中的应用,包括Servlet、…

Unity —— SpriteAtlas + Include in Build

前言在使用atlas Sprite的过程中,会忍不住产生一个疑问,atlas是做什么用的,这个include in Build的含义是什么呢,以及它是否应该被勾选。网上查阅到了很多资源,有的说这个选项大胆勾选,有的说这个选项勾选完后图集打包后的纹理在游戏启动后,会一直常驻内存,需要自己做好…

2025预测:PLM系统集成AI的7种智能决策应用场景

随着科技的飞速发展,产品生命周期管理(PLM)系统与人工智能(AI)的集成正逐渐成为企业提升竞争力的关键因素。这种集成不仅能够优化产品开发流程,还能在多个环节实现智能决策,为企业带来前所未有的价值。在2025 年,我们有望看到 PLM 系统集成 AI 后在众多领域展现出强大的…

PLM项目管理软件在汽车行业的应用案例

PLM项目管理软件在汽车行业的应用案例 汽车行业作为制造业的重要组成部分,面临着日益复杂的产品研发、生产管理等挑战。在这样的背景下,PLM(产品生命周期管理)项目管理软件应运而生,为汽车企业提升竞争力提供了有力支持。PLM项目管理软件涵盖了从产品概念设计到产品退役的…

java自学学习路线笔记+实践项目+面试八股文

基础知识巩固Java基础:掌握基本语法、数据类型、控制结构、面向对象等核心概念。推荐学习资源:韩顺平老师的B站课程。 Java进阶:深入学习集合框架、IO流、反射、注解等高级特性。 Java并发:理解线程、锁、并发工具类等,为高并发项目开发打基础。数据库技术MySQL:掌握SQL语…