HarmonyOS 開発: 開発における一般的な問題のまとめ (1)

序文

本来、この記事では、静的共有パッケージのリモート依存関係の実現方法とアップロード方法、および静的共有パッケージ用のプライベートサーバーの構築について説明する必要がありましたが、組織管理と正式な申請が遅れたため、大変申し訳ありません。これに関しては、一部の文書の許可がまだ公開されていないため、説明はおそらく来年の2024年の第1四半期まで延期する必要がある 結局のところ、AOSPを放棄したHarmonyOSのアップグレードは、すべての開発者に公開されるわけではない2024 年の第 1 四半期までなので、急ぐ必要はありません。

お伝えしておかなければならないのは、HarmonyOS に関する記事はすべて最新の API9 に基づいて書かれているということです。API9 以下を勉強している場合、リモートサーバーやプライベートサーバーに関しては、正式にサポートされているのは npm パッケージです。ここでは概要は説明しません。 、開発者は、最新の API に基づいている必要があります。

一部の文書には閲覧権限がありません。公式メール返信:

一部の文書には閲覧権限がありません、とコミュニティは次のように答えました。

OpenHarmony サードパーティ ライブラリの中央倉庫の組織と管理が検討されています。

幸いなことに、リモート サーバーやプライベート サーバーがなくても、通常の学習や開発には影響せず、開発にはローカルの共有パッケージを使用できるため、ニーズを満たすことができます。

基本的な準備作業、これまでに整理した 4 つの記事は、今後の開発に必ず役立ちます。今日の記事は問題点をまとめたものです。開発者が早急に理解する必要がある問題は数多くあります。今後の展開 到着しました。

この記事の概要は次のとおりです。

1. アプリの名前とアイコンを変更する方法

2.メインエントランスページの変更方法

3. グローバル初期化操作の実行方法

4. ets ファイルと ts ファイルの違いは何ですか?

5. コンテキストContextを取得する

6. バージョン番号およびその他の情報を取得する

7. デバイス情報の取得方法

8. トーストをポップアップ表示する方法

9. 関連する概要

1. アプリの名前とアイコンを変更する方法

アプリ名を変更する

アプリケーションの名前を変更するには、Android プロジェクトでどのように変更されているかを確認してください。次に示すように、マニフェスト ファイル AndroidManifest.xml 内のアプリケーションの label 属性を変更するだけで済みます。

HarmonyOS プロジェクトでも、実際には同じくらい単純です。前に説明したプロジェクト構造では、Android のマニフェスト ファイル AndroidManifest.xml が HarmonyOS の module.json5 に似ていることがわかります。したがって、アプリケーション名の変更もここで行われます。ファイル内。

次のように場所を変更します。

アビリティには複数の UIAability が存在する場合があります。メインエントランスの UIAbility にアプリケーション名を設定する必要があります。他の UIAabilities に設定しても有効になりません。

ファイルの変更を選択する場合、Android の国際化操作に似た 3 つのオプションがあります。現在、中国語とアメリカ英語、およびデフォルトのベースの 3 つのファイルがあります。これは、デバイスのロケールが簡体字中国語、中国語の場合に意味します。ファイルが最初に照合されます。つまり、zh_CN です。デバイスの言語環境がアメリカ英語の場合、en_US が最初に照合されます。Base はデフォルトで存在するディレクトリです。他のディレクトリにリソースが見つからない場合は、base から検索されますもちろん、デフォルトの 3 言語に加えて、他の言語にも拡張できます。

国内市場のみを対象とする場合は、zh_CN の対応する値、つまり値を変更するだけで済みますが、国際市場の場合は、対応する情報も変更する必要があります。

アプリの画像を変更する

アプリケーション名の位置変更と同様に、メインエントランスであるUIAbilityも変更されます。

2.メインエントランスページの変更方法

メインエントランスはアプリ起動後に最初に表示されるページです AndroidではマニフェストファイルAndroidManifest.xmlのActivityに以​​下のタグを設定します。

 <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

HarmonyOS では異なります。 module.json5 の mainElement 属性を変更するだけです。

ここでの値は、能力で定義したものと一致している必要があり、値は 1 つだけであることに注意してください。

3. グローバル初期化操作の実行方法

後続の呼び出しを容易にするために、ネットワーク構成や一部のサードパーティ SDK など、事前に初期化する必要がある状況は数多くあります。Android では、通常、アプリケーション内にあります。もちろん、場合によっては、スタートアップページやメインページの操作にもありますが、HarmonyOS で操作するにはどうすればよいですか? Application に似た役割はありますか? 答えは「はい、AbilityStage を使用してください」です。

公式解釈:AbilityStage はモジュール レベルのコンポーネント コンテナーであり、アプリケーションの HAP は初めてロードされるときに、AbilityStage インスタンスを作成し、モジュールの初期化やその他の操作を行うことができます。

使い方は簡単、たったの2ステップです。

まず、AbilityStage ファイルを作成します。このファイルは、モジュールに対応する ets ディレクトリに作成できます。

デフォルトを忘れずにエクスポートしてください。これはプレフィックスとして使用する必要があります。エクスポートしないとクラッシュします。

import AbilityStage from '@ohos.app.ability.AbilityStage';

export default class MyAbilityStage extends AbilityStage {
  onCreate() {
    // 应用的HAP在首次加载的时,为该Module初始化操作
  }
}

2 番目に、関連する構成

module.json5 構成ファイルで、HAP ロードのエントリ ポイントとして srcEntry パラメーターを構成することにより、モジュールに対応するコード パスを指定します。

{
  "module": {
    "name": "entry",
    "type": "entry",
    "srcEntry": "./ets/myabilitystage/MyAbilityStage.ts",
    ...
  }
}

初期化メソッド以外にも、AbilityStage には多数のイベント コールバックが用意されているため、今後これに遭遇した場合は、公式 Web サイトで直接確認できます。

4. ets ファイルと ts ファイルの違いは何ですか?

プロジェクトを作成すると、ets ファイルだけでなく ts ファイルも存在することがわかりますが、プロジェクト開発時にどのような種類のファイルを作成すればよいのか、疑問に思う人も多いと思います。ets ファイルですか、それとも ts ファイルですか。

最初に説明する必要があるのは、ets ファイルです。これは ArkTS です。これは、HarmonyOS の主要なアプリケーション開発言語として推奨されています。ArkTS は、アプリケーション開発周りの TypeScript (略して TS) エコロジーをさらに拡張しました。ArkTS のすべての機能を継承しています。 TSとTSの核となるスーパーセットですので、実際の開発では全てのetsファイルを使って開発しても全く問題ありません、公式が挙げている様々なケースと同様に、全てのetsファイルが開かれます。

では、ts ファイルと ets ファイルは共存できるのでしょうか? もちろんそれは可能です。結局のところ、新しいプロジェクトには両方のファイルが存在します。私の日常の開発では、UI 層に関連して、通常 ets ファイルと、ツール ファイルなどの通常のファイルを作成します。主に ts に基づいています。もちろん、それは会社とあなた自身の選択に完全に依存します。

ファイルを作成するには次の 2 つの方法があります。

5. コンテキストContextを取得する

Androidではコンテキストは非常に重要で、ページやポップアップウィンドウへのジャンプやViewの作成など、ほぼ必ず使用されますが、HarmonyOSではそこまで比重は高くありませんが、アプリケーション固有の用途で使用されます。リソース、権限の要求と確認など。シーンも必要です。

ステージ モードでは、コンテキストを取得する方法が複数あります。

1. グローバルコンテキストを取得する

export default class App extends AbilityStage {
  
  private mAbilityStageContext = this.context
  
}

2. アビリティコンテキストを取得する

export default class EntryAbility extends UIAbility {

  private mUIAbilityContext = this.context
  
}

3. ApplicationContext コンテキスト

ApplicationContext モジュールは、アプリケーション内のコンポーネントのライフ サイクルを登録および登録解除するためのリスニング インターフェイスの提供など、アプリケーション レベルのコンテキスト機能を開発者に提供します。

let applicationContext = this.context.getApplicationContext();

6. バージョン番号およびその他の情報を取得する

ガイドパッケージ

import bundleManager from '@ohos.bundle.bundleManager';

以下のように共通属性を取得します

    let bundleFlags = bundleManager.BundleFlag.GET_BUNDLE_INFO_DEFAULT;
            try {
              bundleManager.getBundleInfoForSelf(bundleFlags).then((data) => {
                const versionCode=data.versionCode//应用包的版本号
                const versionName=data.versionName//应用包的版本文本描述信息
                const name=data.name//应用包的名称
                const vendor=data.versionCode//应用包的供应商
                const installTime=data.installTime//应用包安装时间
                const updateTime=data.updateTime//应用包更新时间

              }).catch(err => {
                hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed. Cause: %{public}s', err.message);
              });
            } catch (err) {
              hilog.error(0x0000, 'testTag', 'getBundleInfoForSelf failed: %{public}s', err.message);
            }

7. デバイス情報の取得方法

ガイドパッケージ

import deviceInfo from '@ohos.deviceInfo'

以下のように共通属性を取得します

const deviceType = deviceInfo.deviceType //设备类型
const manufacture = deviceInfo.manufacture //设备厂家名称
const brand = deviceInfo.brand //设备品牌名称
const osFullName = deviceInfo.osFullName //系统版本
const sdkApiVersion = deviceInfo.sdkApiVersion //系统软件API版本
const versionId = deviceInfo.versionId //版本ID
const udid = deviceInfo.udid //设备Udid,需要权限:ohos.permission.sec.ACCESS_UDID,该权限为系统权限,仅对系统应用开放。
const hardwareModel = deviceInfo.hardwareModel //硬件版本号
const productSeries = deviceInfo.productSeries //产品系列

8. トーストをポップアップ表示する方法

Toast に関しては更新と反復が頻繁に行われており、最新の API9 では次のコードが使用されています。

import promptAction from '@ohos.promptAction'

promptAction.showToast({            
    message: 'Message Info',
    duration: 2000,      
  });

パラメータ:

パラメータ名

タイプ

必須

説明する

オプション

トーストオプションの表示

はい

テキストポップアップオプション。

ShowToastOptions オブジェクト:

名前

タイプ

必須

説明する

メッセージ

文字列/リソース9+

はい

テキストメッセージが表示されました。デフォルトのフォントは「Harmony Sans」です。他のフォントの設定はサポートされていません。

間隔

番号

いいえ

デフォルト値は 1500ms で、値の範囲は 1500ms ~ 10000ms です。1500ms未満の場合はデフォルト値が使用され、10000msを超える場合は上限値が10000msとなります。

文字列/数値

いいえ

ポップアップウィンドウの境界線の位置を画面下から設定します。

9. 関連する概要

開発中には、まだ多くの問題が発生します。結局のところ、ほとんどの開発者はこの開発に慣れていません。その後の開発では、よくある問題や知識ポイントについても随時更新し、何らかのガイダンスを提供できるようにしたいと考えています。少しの援助。

おすすめ

転載: blog.csdn.net/ming_147/article/details/132920827