2月16日,DevEco Studio小助手在華為開(kāi)發(fā)者論壇分享了DevEco Studio 3.1 Beta1版本發(fā)布信息,該版本與Harmony OS SDK 3.1.0 Developer Beta1版本配套,與HarmonyOS模擬器鏡像3.1.0 Developer Beta1版本配套,與OpenHarmony 3.2.10.6版本配套。該版本在Canary1基礎(chǔ)上新增了功能型特性和技能型特性,并解決了Canary1版本出現(xiàn)的一些問(wèn)題。其中最具有代表的兩大特性為端云一體化開(kāi)發(fā)和HarmonyOS 3.1 x86本地手機(jī)模擬器,接下來(lái)將對(duì)這兩個(gè)特性做詳細(xì)說(shuō)明。
關(guān)于DevEco Studio安裝將不在過(guò)多的贅述,這里只說(shuō)明一下多版本的安裝,在安裝向?qū)遁d以前版本界面不做勾選,直接點(diǎn)擊Next按鈕進(jìn)行后續(xù)操作。
安裝完成后,在安裝目錄D:\\\\Huawei\\\\DevEco Studio 3.1.0.200\\\\bin
目錄下右鍵devecostudio64.exe
文件,發(fā)送到桌面快捷方式,以便于能夠快速打開(kāi)。
由于官方保密協(xié)議限制,關(guān)于本地模擬器內(nèi)容暫不分享,請(qǐng)自行體驗(yàn)
2 端云一體化
之前本人在OpenHarmony/HarmonyOS應(yīng)用程序中集成了AppGallery Connect中的認(rèn)證服務(wù)做應(yīng)用程序的登錄入口,而HarmonyOS 3.1 Beta1更進(jìn)一步提升了開(kāi)發(fā)體驗(yàn),依托AppGakkery Connect的Serverless云服務(wù)開(kāi)放接口,通過(guò)DevEco Studio的云開(kāi)發(fā)能力,開(kāi)發(fā)者可以在創(chuàng)建工程時(shí)通過(guò)選擇云開(kāi)發(fā)模板,即可體驗(yàn)端云一體化協(xié)同開(kāi)發(fā),關(guān)于端云一體化詳細(xì)介紹可參見(jiàn)端云一體化開(kāi)發(fā),這里關(guān)于概念性的不在贅述。
2.1 創(chuàng)建端云一體化示例應(yīng)用
使用DevEco Studio創(chuàng)建端云一體化示例應(yīng)用程序HelloCloud,選擇模板為Empty Ability with CloudDev。
端云一體化需要關(guān)聯(lián)云開(kāi)發(fā)資源,需要在DevEco Studio中使用已實(shí)名認(rèn)證的華為開(kāi)發(fā)者賬號(hào)登錄。
登錄完成后在Team下拉框中選擇開(kāi)發(fā)團(tuán)隊(duì),若提示以下錯(cuò)誤信息,則說(shuō)明未在AppGallery Connect中創(chuàng)建對(duì)應(yīng)的應(yīng)用,因此需要先去AppGallery Connect中創(chuàng)建對(duì)應(yīng)的應(yīng)用。點(diǎn)擊錯(cuò)誤信息中的AppGallery Connect鏈接跳轉(zhuǎn)到創(chuàng)建應(yīng)用界面。
首先添加一個(gè)項(xiàng)目,然后添加一個(gè)應(yīng)用,配置如下:
在AppGallery Connect中創(chuàng)建應(yīng)用完成后,回到DevEco Studio創(chuàng)建工程向?qū)Вこ滔驅(qū)?huì)自動(dòng)查詢(xún)?cè)摻M織下,包名下的云端相匹配的應(yīng)用信息。
HelloCloud工程創(chuàng)建完成后,在主界面Project頁(yè)簽中會(huì)顯示詳細(xì)工程目錄,包括端開(kāi)發(fā)工程(Application)、云開(kāi)發(fā)工程(CloudProgram)、端側(cè)公共庫(kù)(External Libraries)。
- 端開(kāi)發(fā)工程主要用于開(kāi)發(fā)應(yīng)用端側(cè)業(yè)務(wù)代碼;
- 云開(kāi)發(fā)工程主要用于為端側(cè)應(yīng)用用到的云函數(shù)、云數(shù)據(jù)庫(kù)等。
- clouddb:云數(shù)據(jù)庫(kù)工程目錄
- cloudfunctions:云函數(shù)工程目錄
創(chuàng)建端云一體化應(yīng)用程序并關(guān)聯(lián)云開(kāi)發(fā)資源后,DevEco Studio會(huì)自動(dòng)初始化配置并開(kāi)啟云開(kāi)發(fā)相關(guān)服務(wù),如認(rèn)證服務(wù)、云函數(shù)、云數(shù)據(jù)庫(kù)、云托管、API網(wǎng)關(guān)。服務(wù)開(kāi)通狀態(tài)可在Event Log窗口查看,也可以在AppGallery Connect控制臺(tái)查看。
相較于我之前發(fā)布的集成AppGallery Connect認(rèn)證服務(wù)實(shí)現(xiàn)登錄而言,端云一體化開(kāi)發(fā)更加便捷,創(chuàng)建應(yīng)用完成后會(huì)端側(cè)應(yīng)用自動(dòng)集成agconnect-services.json配置文件以及相關(guān)云服務(wù)最新版本HarmonyOS SDK,云端自動(dòng)集成云數(shù)據(jù)庫(kù)SDK。
2.2 端云一體化開(kāi)發(fā)體驗(yàn)
使用端云一體化開(kāi)發(fā),可以讓團(tuán)隊(duì)協(xié)同開(kāi)發(fā)更簡(jiǎn)單,同時(shí)可以更大程度節(jié)省企業(yè)開(kāi)發(fā)成本。接下來(lái)以云函數(shù)為例,更多請(qǐng)參見(jiàn)官網(wǎng)。
2.2.1 創(chuàng)建云函數(shù)
打開(kāi)云端工程,在cloudfunctions
目錄右鍵選擇New --> Cloud Function
,輸入云函數(shù)名稱(chēng),自動(dòng)生成ts文件。
云函數(shù)創(chuàng)建完成后需要在function-config.json
函數(shù)配置文件中配置觸發(fā)器(會(huì)自動(dòng)完成HTTP觸發(fā)器配置),當(dāng)前可配置HTTP、CLOUDDB、AUTH、CLOUDSTORAGE、CRON五種觸發(fā)器,每種觸發(fā)器配置規(guī)則不同。HTTP觸發(fā)器屬性如下所示:
參數(shù) | 說(shuō)明 |
---|---|
type | 觸發(fā)器類(lèi)型,配置為"http" |
enableUriDecode | 觸發(fā)器是否啟用decode。true:?jiǎn)⒂茫籪alse:不啟用。 |
authFlag | 是否鑒權(quán),默認(rèn)為true。 |
authAlgor | 鑒權(quán)算法,默認(rèn)為HDA-System。 |
authType | HTTP觸發(fā)器的認(rèn)證類(lèi)型。apigw-client:API客戶(hù)端鑒權(quán)(Client)端適用。cloudgw-client:API客戶(hù)端鑒權(quán)(Server端適用)。 |
在函數(shù)入口文件addition-test.ts
中完善函數(shù)業(yè)務(wù)邏輯。
// myHandler為入口方法名稱(chēng)
// event 調(diào)用方法傳遞的事件對(duì)象,JSON格式
// context 函數(shù)運(yùn)行時(shí)上下文對(duì)象,封裝了日志接口、回調(diào)接口、環(huán)境變量env對(duì)象等
// callback 事件處理結(jié)果
// logger 記錄日志
let myHandler = async function (event, context, callback, logger) {
// do something here
let res = new context.HTTPResponse({
"faas-content-type": "json"
}, "application/json", "200");
var body = {
code: 0,
message: "",
data: null
}
var _body = JSON.parse(event.body);
var username = _body.username;
var password = _body.password;
if (username !== 'admin') {
body.code = 10001;
body.message = "賬號(hào)不存在!";
} else if (username === 'admin' && password !== '123456') {
body.code = 10002;
body.message = "密碼錯(cuò)誤!";
} else {
body.code = 200;
body.message = "登錄成功!";
body.data = {
username: username
}
}
res.body = body;
callback(res);
};
export { myHandler };
2.2.2 部署函數(shù)
完善函數(shù)代碼之后,可以將函數(shù)部署到AppGallery Connect控制臺(tái),支持單個(gè)部署和批量部署。其中單個(gè)部署選中具體需要部署的函數(shù),批量部署則選中cloudfunctions
目錄,右鍵選擇Deploy Function
進(jìn)行部署。
部署完成后,可在AppGallery Connect控制臺(tái)中云函數(shù)服務(wù)頁(yè)面查看。
2.2.3 編寫(xiě)運(yùn)行測(cè)試示例
在ets/services
目錄下編寫(xiě)云函數(shù)回調(diào)方法:
// services/ArgAlgFunc.ts
import agconnect from '@hw-agconnect/api-ohos';
import "@hw-agconnect/function-ohos";
import { getAGConnect } from './AgcConfig';
export function login(context, reqBody: any): Promise<any> {
return new Promise((resolve, reject) => {
getAGConnect(context);
let functionResult;
let functionCallable = agconnect.function().wrap('argalg-$latest');
functionCallable.call(reqBody).then((ret: any) => {
functionResult = ret.getValue();
resolve(functionResult);
}).catch((error: any) => {
reject(error);
})
})
}
在ets/pages
目錄下構(gòu)建調(diào)用云函數(shù)頁(yè)面:
import { login } from '../services/ArgAlgFunc';
import prompt from '@system.prompt';
@Entry
@Component
struct ArgAlg {
@State result: string = "";
@State username: string = "";
@State password: string = "";
getFunctionResult = () => {
let reqBody = {
"username": this.username,
"password": this.password
}
login(getContext(this), reqBody).then((ret) => {
this.result = JSON.stringify(ret)
if (ret.body.code === 200) {
prompt.showToast({
message: `登錄成功,當(dāng)前賬號(hào)為:${ret.body.data.username}`,
duration: 5000
})
} else {
prompt.showToast({
message: `登錄失敗,原因?yàn)椋?span id="a5mgapgs4i" class="hljs-subst">${ret.body.message}`,
duration: 5000
})
}
}).catch((err) => {
this.result = JSON.stringify(err);
prompt.showToast({
message: `出現(xiàn)異常,原因?yàn)椋?span id="a5mgapgs4i" class="hljs-subst">${err}`,
duration: 5000
})
})
}
build() {
Column() {
TextInput({ placeholder: '請(qǐng)輸入用戶(hù)名'})
.fontSize(16).placeholderFont({ size: 16 })
.onChange((value: string) => {
this.username = value;
})
TextInput({ placeholder: '請(qǐng)輸入密碼'})
.fontSize(16).placeholderFont({ size: 16 })
.onChange((value: string) => {
this.password = value;
})
Button('登錄')
.width(200).height(54)
.fontSize(16)
.onClick(() => {
this.getFunctionResult();
})
Text(`Info: ${this.result}`).fontSize(16)
}
.width('100%').height('100%')
.padding({ top: 16 })
}
}
注:需要更改EntryAbility.ts
中onWindowStageCreate()
方法中初始加載頁(yè)面為pages/ArgAlg
。切記在調(diào)用云函數(shù)的時(shí)候,需要發(fā)布一個(gè)正式版本才能夠響應(yīng)。
2.3 運(yùn)行效果
審核編輯 黃宇
-
函數(shù)
+關(guān)注
關(guān)注
3文章
4346瀏覽量
63012 -
模擬器
+關(guān)注
關(guān)注
2文章
883瀏覽量
43440 -
云服務(wù)
+關(guān)注
關(guān)注
0文章
836瀏覽量
39064 -
HarmonyOS
+關(guān)注
關(guān)注
79文章
1983瀏覽量
30630 -
OpenHarmony
+關(guān)注
關(guān)注
25文章
3751瀏覽量
16660
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
【云智易申請(qǐng)】一體化機(jī)柜監(jiān)控設(shè)計(jì)
什么是機(jī)電一體化
機(jī)電一體化系統(tǒng)
手把手教你使用HarmonyOS本地模擬器
DevEco Studio 3.1 Beta1版本發(fā)布——新增六大關(guān)鍵特性,開(kāi)發(fā)更高效
#DevEco Studio 3.1 Beta1更新—支持本地模擬器【API9】
DevEco Studio 3.1 Beta新特性知多少
HarmonyOS應(yīng)用端云一體化開(kāi)發(fā)主要流程
HarmonyOS元服務(wù)端云一體化開(kāi)發(fā)快速入門(mén)(上)
HarmonyOS元服務(wù)端云一體化開(kāi)發(fā)快速入門(mén)(下)
鴻蒙原生應(yīng)用/元服務(wù)開(kāi)發(fā)-新版本端云一體化模板體驗(yàn)反饋
HarmonyOS本地模擬器重磅來(lái)襲!
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>本地</b><b class='flag-5'>模擬器</b>重磅來(lái)襲!](https://file.elecfans.com/web2/M00/1A/94/pYYBAGF8nvKAStPhAAAMTy1sBZM787.png)
HarmonyOS中DevEco Studio本地模擬器體驗(yàn)
![<b class='flag-5'>HarmonyOS</b>中DevEco Studio<b class='flag-5'>本地</b><b class='flag-5'>模擬器</b>體驗(yàn)](https://file.elecfans.com/web2/M00/1C/46/poYBAGGLIhiAPPh_AAAftVu_ieY280.png)
淺析初次使用DevEco Studio本地模擬器后的體驗(yàn)
![淺析初次使用DevEco Studio<b class='flag-5'>本地</b><b class='flag-5'>模擬器</b>后的體驗(yàn)](https://file.elecfans.com/web2/M00/22/CF/poYBAGGpcD-AK9h3AAAftVu_ieY397.png)
HarmonyOS本地模擬器的版本演進(jìn)與使用方法
![<b class='flag-5'>HarmonyOS</b><b class='flag-5'>本地</b><b class='flag-5'>模擬器</b>的版本演進(jìn)與使用方法](https://file.elecfans.com/web2/M00/32/91/pYYBAGIYY6uAZ_AAAAF7GR5I6tM967.png)
評(píng)論