鴻蒙應(yīng)用開發(fā)入門(二)開發(fā)環(huán)境搭建
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz
2.1 工具下載和安裝:
下載地址:https://developer.harmonyos.com/cn/develop/deveco-studio
安裝下一步.....就可以,沒有坑!
2.2 下載HarmonyOS SDK
DevEco Studio提供SDK Manager統(tǒng)一管理SDK和這個(gè)包依賴的工具鏈。通過SDK Manager能自動(dòng)下載各個(gè)語言對(duì)應(yīng)的SDK包。SDK Manager提供多種編程語言的SDK包,各SDK包的說明請(qǐng)參考:
1. Native:C/C++語言SDK包,默認(rèn)不自動(dòng)下載,需手動(dòng)勾選下載。
2. JS:JS語言SDK包,默認(rèn)不自動(dòng)下載,需手動(dòng)勾選下載。
3. Java:Java語言SDK包,首次下載SDK時(shí)默認(rèn)下載。
SDK對(duì)應(yīng)的工具鏈(SDK Tools)和預(yù)覽器:
1. Toolchains:SDK工具鏈,HarmonyOS應(yīng)用開發(fā)必備工具集,包括編譯、打包、簽名、數(shù)據(jù)庫管理等工具的集合,首次下載SDK時(shí)默認(rèn)下載。
2. Previewer:Lite Wearable預(yù)覽器,在開發(fā)過程中可以動(dòng)態(tài)預(yù)覽Lite Wearable應(yīng)用的界面呈現(xiàn)效果,默認(rèn)不自動(dòng)下載,需手動(dòng)勾選下載。
2.3 安裝IDE時(shí)候的坑1:一直加載gradle
1. 下載指定的gadle版本
可以到 官網(wǎng)下載或者借助網(wǎng)友提供的下載好的版本,直接下載使用。
2. 關(guān)閉DevEco studio,打開DevEco studio自動(dòng)生成的一個(gè)目錄
默認(rèn)在這個(gè)目錄:C:\Users\Administrator\.gradle\wrapper\dists\gradle-6.3-all\b4awcolw...這串字符不同電腦不一樣...u1obfh9i8
3. 下載好的zip文件放進(jìn)去
將下載好的gradle文件復(fù)制在以上文件夾內(nèi)(注意一定要放置在類似“b4awcolw...這串字符不同電腦不一樣...u1obfh9i8”目錄下),重啟軟件即可。
2.4 安裝IDE時(shí)候的坑2:模擬器刷不出來
開發(fā)應(yīng)用的時(shí)候需要模擬器跑效果,需要在DevEco Studio菜單欄,點(diǎn)擊Tools > HVD Manager開發(fā)模擬器,第一次打開,會(huì)自動(dòng)下載相關(guān)文件。然后要求用華為開發(fā)者賬號(hào)登錄認(rèn)證,開發(fā)者賬號(hào)要求實(shí)名認(rèn)證,沒有自行注冊(cè)認(rèn)證就好。
注意:瀏覽器一定要更新到最新版本,否則可能模擬器刷不出來。
2.5 推薦一個(gè)很好用的開源手機(jī)投屏工具scrcpy
1. 獲取地址:https://github.com/Genymobile/scrcpy
2. scrcpy簡介
簡單地來說,scrcpy就是通過adb調(diào)試的方式來將手機(jī)屏幕投到電腦上,并可以通過電腦控制手機(jī)設(shè)備。它可以通過USB連接,也可以通過Wifi連接(類似于隔空投屏),而且不需要任何root權(quán)限,不需要在手機(jī)里安裝任何程序。scrcpy同時(shí)適用于Linux,Windows和macOS。
3. 安裝和使用
1)綠色的下載到Windows某個(gè)目錄,然后將目錄添加到Path環(huán)境變量就可以了。
2)使用USB進(jìn)行連接設(shè)備
(1)手機(jī)通過USB連接到PC上,首次連接會(huì)彈出是否信任該電腦,點(diǎn)擊始終信任即可。
(2)運(yùn)行adb devices查看是否連接成功
(3)運(yùn)行“scrcpy -s 設(shè)備名稱” ,只有一臺(tái)設(shè)備直接scrcpy即可。
2.6 真機(jī)調(diào)試環(huán)境搭建步驟:
1)在IDE中生成簽名文件,以備用
2)進(jìn)入應(yīng)用開發(fā)頁面,進(jìn)入管理中心,進(jìn)入上架及推廣服務(wù)
3)進(jìn)入用戶與訪問,生成證書和管理設(shè)備(目前是受邀開發(fā)者可見),并且下載好證書已備用,添加設(shè)備需要UDID(獲取UDID的命令,adb shell dumpsys DdmpDeviceMonitorService)
4)在進(jìn)入我的項(xiàng)目,添加項(xiàng)目,添加應(yīng)用,注意應(yīng)用的包名必須和你自己的包名一樣
5)在我的項(xiàng)目,對(duì)應(yīng)的項(xiàng)目里,生成profile文件,下載以備用
6)cer、p12、p7b三個(gè)文件齊了,在項(xiàng)目的屬性,簽名設(shè)置上設(shè)置上,就可以在真機(jī)上調(diào)試運(yùn)行了

3.1 第一個(gè)鴻蒙應(yīng)用實(shí)現(xiàn)需求
編寫兩張頁面,實(shí)現(xiàn)在第一張頁面點(diǎn)擊按鈕跳轉(zhuǎn)到第二張頁面。在Java UI框架中,提供了兩種編寫布局的方式:在XML中聲明UI布局和在代碼中創(chuàng)建布局。這兩種方式創(chuàng)建出的布局沒有本質(zhì)差別,都是我們需要熟悉方式,所以我們將通過XML的方式布局第一張頁面,然后再通過代碼的方式布局第二張頁面。
3.2 用XML布局第一張頁面
1. 打開layout下面的“ability_main.xml”文件
2. 在“ability_main.xml”文件中創(chuàng)建一個(gè)文本和一個(gè)按鈕
- xmlns:ohos="http://schemas.huawei.com/res/ohos"
- ohos:width="match_parent"
- ohos:height="match_parent"
- ohos:background_element="#000000">
- ohos:id="$+id:text"
- ohos:width="match_content"
- ohos:height="match_content"
- ohos:text="Hello World"
- ohos:text_color="white"
- ohos:text_size="32fp"
- ohos:center_in_parent="true"/>
- ohos:id="$+id:button"
- ohos:width="match_content"
- ohos:height="match_content"
- ohos:text="Next"
- ohos:text_size="19fp"
- ohos:text_color="white"
- ohos:top_padding="8vp"
- ohos:bottom_padding="8vp"
- ohos:right_padding="80vp"
- ohos:left_padding="80vp"
- ohos:background_element="$graphic:background_button"
- ohos:below="$id:text"
- ohos:horizontal_center="true"
- />
3. 創(chuàng)建按鈕的背景
按鈕的背景是通過“background_button”來指定的。右鍵點(diǎn)擊“graphic”文件夾,選擇“New > File”,命名為“background_button.xml”。
- <?xml version="1.0" encoding="utf-8"?>
- <shape xmlns:ohos="http://schemas.huawei.com/res/ohos" ohos:shape="oval">
- <solid ohos:color="#007DFF"/>
- <corners ohos:radius="20"/>
- </shape>
3.3 用編程的方式布局第二張頁面
1. 創(chuàng)建Feature Ability
2. 代碼編寫界面
- public class SecondAbilitySlice extends AbilitySlice {
- @Override
- public void onStart(Intent intent) {
- super.onStart(intent);
- // 聲明布局
- DependentLayout myLayout = new DependentLayout(this);
- // 設(shè)置頁面布局大小和背景色
- myLayout.setWidth(MATCH_PARENT);
- myLayout.setHeight(MATCH_PARENT);
- ShapeElement element = new ShapeElement();
- element.setRgbColor(new RgbColor(255, 255, 255));
- myLayout.setBackground(element);
- // 創(chuàng)建一個(gè)文本
- Text text = new Text(this);
- text.setText("Nice to meet you.");
- text.setTextSize(55);
- text.setTextColor(Color.BLACK);
- // 設(shè)置文本的布局
- DependentLayout.LayoutConfig textConfig =
- new DependentLayout.LayoutConfig(MATCH_CONTENT,MATCH_CONTENT);
- textConfig.addRule(DependentLayout.LayoutConfig.CENTER_IN_PARENT);
- text.setLayoutConfig(textConfig);
- myLayout.addComponent(text);
- super.setUIContent(myLayout);
- }
- @Override
- public void onActive() {
- super.onActive();
- }
- @Override
- public void onForeground(Intent intent) {
- super.onForeground(intent);
- }
- }
3.4 實(shí)現(xiàn)頁面跳轉(zhuǎn)
- public class MainAbilitySlice extends AbilitySlice {
- @Override
- public void onStart(Intent intent) {
- super.onStart(intent);
- super.setUIContent(ResourceTable.Layout_ability_main);
- Button button = (Button) findComponentById(ResourceTable.Id_button);
- if (button != null) {
- // 為按鈕設(shè)置點(diǎn)擊回調(diào)
- button.setClickedListener(new Component.ClickedListener() {
- @Override
- public void onClick(Component component) {
- Intent secondIntent = new Intent();
- // 指定待啟動(dòng)FA的bundleName和abilityName
- Operation operation = new Intent.OperationBuilder()
- .withDeviceId("")
- .withBundleName("com.example.myapplication")
- .withAbilityName("com.example.myapplication.SecondAbility")
- .build();
- secondIntent.setOperation(operation);
- startAbility(secondIntent); // 通過AbilitySlice的startAbility接口實(shí)現(xiàn)啟動(dòng)另一個(gè)頁面
- }
- });
- }
- }
- @Override
- public void onActive() {
- super.onActive();
- }
- @Override
- public void onForeground(Intent intent) {
- super.onForeground(intent);
- }
- }
文章配套視頻課程《鴻蒙手機(jī)應(yīng)用開發(fā)入門》https://edu.51cto.com/course/26133.html
©著作權(quán)歸作者和HarmonyOS技術(shù)社區(qū)共同所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
https://harmonyos.51cto.com/#zz