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

3.1 第一個鴻蒙應用實現需求
編寫兩張頁面,實現在第一張頁面點擊按鈕跳轉到第二張頁面。在Java UI框架中,提供了兩種編寫布局的方式:在XML中聲明UI布局和在代碼中創建布局。這兩種方式創建出的布局沒有本質差別,都是我們需要熟悉方式,所以我們將通過XML的方式布局第一張頁面,然后再通過代碼的方式布局第二張頁面。
3.2 用XML布局第一張頁面
1. 打開layout下面的“ability_main.xml”文件
2. 在“ability_main.xml”文件中創建一個文本和一個按鈕
- 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. 創建按鈕的背景
按鈕的背景是通過“background_button”來指定的。右鍵點擊“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. 創建Feature Ability
2. 代碼編寫界面
- public class SecondAbilitySlice extends AbilitySlice {
- @Override
- public void onStart(Intent intent) {
- super.onStart(intent);
- // 聲明布局
- DependentLayout myLayout = new DependentLayout(this);
- // 設置頁面布局大小和背景色
- myLayout.setWidth(MATCH_PARENT);
- myLayout.setHeight(MATCH_PARENT);
- ShapeElement element = new ShapeElement();
- element.setRgbColor(new RgbColor(255, 255, 255));
- myLayout.setBackground(element);
- // 創建一個文本
- Text text = new Text(this);
- text.setText("Nice to meet you.");
- text.setTextSize(55);
- text.setTextColor(Color.BLACK);
- // 設置文本的布局
- 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 實現頁面跳轉
- 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) {
- // 為按鈕設置點擊回調
- button.setClickedListener(new Component.ClickedListener() {
- @Override
- public void onClick(Component component) {
- Intent secondIntent = new Intent();
- // 指定待啟動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接口實現啟動另一個頁面
- }
- });
- }
- }
- @Override
- public void onActive() {
- super.onActive();
- }
- @Override
- public void onForeground(Intent intent) {
- super.onForeground(intent);
- }
- }
文章配套視頻課程《鴻蒙手機應用開發入門》https://edu.51cto.com/course/26133.html
©著作權歸作者和HarmonyOS技術社區共同所有,如需轉載,請注明出處,否則將追究法律責任
https://harmonyos.51cto.com/#zz