1、如何使用发布证书进行调试?
由于部分功能需要校验证书信息,所以需要使用调试证书和发布证书分别进行调试,但是使用发布证书后出现安装错误05/14 19:04:39: Install Failed: error: failed to install bundle.code:9568322error: signature verification failed due to not trusted app source.View detailed instructions.$ hdc shell rm -rf data/local/tmp/c07053e4cafe4f06bbbfecc3c2a697bbError while Deploy Hap。
规格问题;应用市场发布的发布证书,无法通过非应用市场渠道安装
如需要测试发布证书应用,可以考虑使用AGC->开放式测试
2、获取网络能力netBearType文档中定义为数组类型,是否是当前规格?
netBearType参数当wifi、蜂窝网络同时连接即双开场景下只会返回wifi的状态信息,使用时可能涉及多次调用情况定义为当前规格。
3、RichEditor上面有个Component,现在希望RichEditor和Component成为一个整体,能够自适应光标位置进行滚动,该如何实现?
RichEditor上面有个Component,现在希望RichEditor和Component成为一个整体,能够自适应光标位置进行滚动,应该如何实现,目前用Scroller无法获取RichEditor中光标的具体坐标(光标基于RichEditor的x和y位置),无法实现滚动。
用Scroll将RichEditor和Component包裹,通过onAreaChange的回调,调用scroller.scrollBy的能力,以此来改变滚动组件的高度。
参考代码:
@Entry
@Component
struct Index {
editorController = new RichEditorController()
scroller: Scroller = new Scroller()
build() {
Column() {
Scroll(this.scroller) {
Column() {
Image($r('app.media.startIcon'))
.width('100%')
.height(200)
.margin({ bottom: 20 })
RichEditor({ controller: this.editorController })
.id('RichEditor')
.width('100%')
.backgroundColor(Color.Yellow)
.onReady(() => {
this.editorController.addImageSpan($r("app.media.startIcon"),
{
imageStyle:
{
size: ["100px", "100px"]
}
})
this.editorController.addTextSpan('男生女生向前冲',
{
style:
{
fontColor: Color.Blue,
fontSize: 30
}
})
})
.onAreaChange((_, value) => {
if (_.height !== value.height) {
this.scroller.scrollBy(0, Number(value.height) - 200)
console.log('---_.height', _.height)
console.log('---value.height', value.height)
}
})
Button('getSpans-文字').onClick((event: ClickEvent) => {
let getSpans = this.editorController.getSpans({ start: 0 })
console.log('getSpans0' + JSON.stringify(getSpans[0]))
// 必须进行强转才能获取文字信息或者图片信息
let span0 = getSpans[0] as RichEditorTextSpanResult
console.log('文字相关的信息: ' + JSON.stringify(span0))
})
Button('getSpans-图片').onClick((event: ClickEvent) => {
let getSpans = this.editorController.getSpans({ start: 0 })
console.log('getSpans1' + JSON.stringify(getSpans[1]))
let span1 = getSpans[1] as RichEditorImageSpanResult
console.log('图片相关的信息: ' + JSON.stringify(span1))
})
Button('RichEditor获焦').onClick(() => {
focusControl.requestFocus('RichEditor')
})
}
}
.scrollable(ScrollDirection.Vertical) // 滚动方向纵向
.scrollBar(BarState.On) // 滚动条常驻显示
.scrollBarColor(Color.Gray) // 滚动条颜色
}
}
}
4、LocalStorage和APPStorage保存复杂对象会产生性能问题的原因?
关于LocalStorage和APPStorage保存复杂对象性能问题的两点疑问:
- 频繁读写:频繁读写复杂对象时,为什么会导致页面的性能变差,是LocalStorage会影响页面的渲染吗?
- 数据结构:LocalStorage和APPStorage会把数据保存到本地吗?应该在内存里边吧,为什么会有序列化和反序列化的过程?
LocalStorage的读写操作是同步的,即当读取或写入LocalStorage时,程序会阻塞等待操作完成才会继续执行后续代码,所以不推荐整改修改复杂对象,这个new创建的时长是会影响刷新效率的;
LocalStorage和APPStorage在本地读取复杂对象时,不会进行序列化。
5、无网络环境下使用同步方法获取网络状态报错?
无网环境调用同步方法请求无法解析拿到nethandle对应内容,方法内部执行到getCap时产生报错,可采用try-catch方式获取报错信息:
try {
let netHandle = connection.getDefaultNetSync();
let connectionproperties = connection.getConnectionPropertiesSync(netHandle);
} catch(err) {
console.info('error: ' + JSON.stringify(err));
}