
























本文原创发布在华为开发者联盟社区,欢迎前往原帖【有搜必应】HarmonyOS TOP5热搜技术问题解析第五期 ,直接与知识贡献者进行交流。
本期热搜揭秘:
【编译工具】通过 build haps 编译生成的 HAP 包,应如何安装?
【系统】从 Windows 11 的 IPSec 第二层隧道协议(L2TP/IPsec)切换到鸿蒙系统后,应选择哪一种协议?
【编译工具】modelVersion、targetSdkVersion、compatibleSdkVersion 分别是什么意思?
期待您在论坛中继续发声:无论是提出新的疑惑、发表见解、或分享实战经验,都会为鸿蒙社区注入前行的力量,也是让我们做得更好的动力!若您存在疑惑,可使用社区-问答-“我要提问题”进行提问。问答专区-华为/鸿蒙开发者论坛
往期问题回顾:
问题一:通过 build haps 编译生成的 HAP 包,应如何安装?
通过 build haps 编译生成的 HAP 包,应如何安装?
解决方案:
场景一:单HAP包或HSP包安装
# 安装一个HAP
hdc install E:\example.hap
# 安装一个HSP
hdc install E:\example.hsp
# 安装一个HAP
bm install -p /data/app/ohos.app.hap
# 覆盖安装一个HAP
bm install -p /data/app/ohos.app.hap -r
# 安装一个应用间共享库
bm install -s xxx.hsp
使用DevEco Testing工具,连接真机后,选择实用工具,点击开始投屏,点击右侧安装应用即可选择HAP包进行安装。
场景二:多个HAP包或HSP包同时安装
# 同时安装HAP和应用内共享库
bm install -p /data/app/
简化安装步骤,可以将签名后的hap与应用内共享库hsp放在同一目录下,执行脚本安装,脚本实现参考:
@echo off
setlocal EnableDelayedExpansion
set current_dir=%~dp0
echo %current_dir%
hdc shell rm -rf data/local/tmp/421e6d0e2f3d4c709f77e43e8c57cfb3
hdc shell mkdir data/local/tmp/421e6d0e2f3d4c709f77e43e8c57cfb3
for /r “%current_dir%” %%i in (*.hsp *.hap) do (
echo %%~nxi
echo %%i
hdc file send %%i “data/local/tmp/421e6d0e2f3d4c709f77e43e8c57cfb3/%%~nxi”
)
hdc shell bm install -p data/local/tmp/421e6d0e2f3d4c709f77e43e8c57cfb3
hdc shell rm -rf data/local/tmp/421e6d0e2f3d4c709f77e43e8c57cfb3
echo Install Done!
@pause
如果HSP是应用间共享库,可使用bm install [-p filePath] [-s hspDirPath]命令同时安装HAP和应用间共享库。
# 同时安装使用方应用和其依赖的应用间共享库
bm install -p aaa.hap -s xxx.hsp yyy.hsp
原链接:通过 build haps 编译生成的 HAP 包,应如何安装?
问题二:WebView 如何拦截特定域名的请求?
WebView 如何拦截特定域名的请求?
解决方案:
【背景知识】
Web组件:提供具有网页显示能力的Web组件,@ohos.web.webview提供Web控制能力。
【参考方案】:
可参考网页访问拦截示例,使用Web组件实现特定网页访问拦截。
Web({ src: this.url, controller: this.controller })
.onLoadIntercept((event) => {
let url = event.data.getRequestUrl(); // 获取访问目标网址
if (UrlUtils.canUrlAccess(url)) { // 判断是否能够访问该url
return false;
} else {
this.controller.loadUrl($rawfile(‘blocked.html’)); // 禁止访问,则跳转至拦截页
return true;
}
})
问题三:layoutWeight如何实现宽度拉伸?
layoutWeight如何实现宽度拉伸?
解决方案:
【背景知识】
layoutWeight(value: number | string):设置组件的布局权重,使组件在父容器(Row/Column/Flex)的主轴方向按照权重分配尺寸。
【解决方案】
在HarmonyOS开发中,Row、Column和Flex支持通过layoutWeight属性动态调整子元素尺寸占比的核心容器,适用于需要灵活布局的场景:
Row() {
Button(‘左侧’).layoutWeight(2) // 占据2/3宽度
Button(‘右侧’).layoutWeight(1) // 占据1/3宽度
}
Column() {
Text(‘顶部’).layoutWeight(1) // 占据1/2高度
Text(‘底部’).layoutWeight(1) // 占据1/2高度
}
Flex({ direction: FlexDirection.Row }) {
Text(‘左’).layoutWeight(3) // 水平方向占比3/5
Text(‘右’).layoutWeight(2) // 水平方向占比2/5
}
问题四:从 Windows 11 的 IPSec 第二层隧道协议(L2TP/IPsec)切换到鸿蒙系统后,应选择哪一种协议?
针对鸿蒙系统的VPN 原先WIN11的IPsec 的第二层隧道协议(L2TP/IPsec),切换为鸿蒙之后应该是选择哪一个
解决方案:
切换HarmonyOS可以选择添加 L2TP/IPSec PSK 或者 L2TP/IPSec RSA替代L2TP/IPSec。
【背景知识】
VPN,即虚拟专用网络(Virtual Private Network),是在公用网络上建立专用网络的一种技术。在VPN网络中,任意两个节点间的连接并非依赖传统专用网络所需要的端到端的物理链路,而是构建在公用网络服务商提供的平台(如Internet)之上的逻辑网络。用户数据在这一逻辑链路中进行传输。
【解决方案】
VPN功能支持以下几种协议:
查看路径如下:
手机系统设置->VPN->添加VPN网络->类型。 选择L2TP/IPSec PSK 或者 L2TP/IPSec RSA。
原链接:从 Windows 11 的 IPSec 第二层隧道协议(L2TP/IPsec)切换到鸿蒙系统后,应选择哪一种协议?
问题五:modelVersion、targetSdkVersion、compatibleSdkVersion分别是什么意思?
modelVersion、targetSdkVersion、compatibleSdkVersion分别是什么意思?
解决方案:
modelVersion
含义:标识开发态版本号(即当前开发环境使用的 DevEco Studio 配套工具版本)。
说明:
compatibleSdkVersion
含义:标识应用/元服务运行所需兼容的最低SDK版本,应用/元服务不能安装在低于该版本的设备。当前支持的版本参考所有HarmonyOS版本。相关字段与应用兼容性关系参见应用兼容性说明。
说明:
targetSdkVersion
含义:标识应用/元服务运行所需目标SDK版本,是系统提供的前向兼容手段。如果新SDK版本中API行为发生变更,将应用/元服务安装到新系统后,可通过该字段提供向前兼容手段,在新系统版本保持老的API行为。
如未配置,默认与compileSdkVersion保持一致。当前支持的版本参考所有HarmonyOS版本。相关标签与应用兼容性关系参见应用兼容性说明。
说明:
modelVersion不需要跟targetSdkVersion对应,由于compatibleSdkVersion字段即标识应用/元服务运行所需兼容的最低SDK版本,所以如果改动这些版本号,需要真机或者模拟器版本兼容最低compatibleSdkVersion版本。
原链接:modelVersion、targetSdkVersion、compatibleSdkVersion 分别是什么含义?
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。