HarmonyOS NEXT 系列之規范開發三方共享包

規范開發三方共享包

  • 〇、前言
  • 一、了解評分規則
  • 二、規范開發共享包
    • 1、規范開源協議名稱寫法
    • 2、將 oh-package.json5 文件補充完整
    • 3、補充 example 目錄
    • 4、基本的 README 和 CHANGELOG
  • 三、ohpm 包的源碼隔離特性

〇、前言

對于開發者來說,對外發布代碼制品,主要有兩種形式:構建成完整的應用上架到相關軟件商店中,構建成三方軟件包發布到中心倉庫,鴻蒙生態這邊也是如此,只不過,對于個人開發者來說,上架到華為的鴻蒙應用商店并不容易,因為必須提供軟著證書等有效證件,而這個軟著的申請本來就很費事,相比之下,發布共享包到 ohpm 中心倉庫,就顯得簡單可行了。

在這里插入圖片描述
如圖所示,我已經成功上架兩個軟件包到 ohpm 中心倉庫上了,因而積累了一定的經驗,下面就讓我向大家闡述如何規范地開發鴻蒙共享包。

一、了解評分規則

在這里插入圖片描述
如上所述,ohpm 中心倉有一套針對每個發布到倉庫中的軟件包的評分規則,滿分 50 分,共 5 種中得分規則。而我已經上架的軟件包,并未針對得分規則進行適配開發,因而只獲得了 15 分,也因此我重新發布了 lib_easyrouter v1.1.0(正在上架審核)。

評分高的軟件包,想必理所當然地會獲得更高的排名,他人在搜索的時候,更容易出現在第一分頁中。

總的來說,遵循 ohpm 軟件包評分規則,既是我們提高自己軟件包的排名的方法,也是我們進行規范開發的依據。

二、規范開發共享包

1、規范開源協議名稱寫法

既然,ohpm 中心倉有針對開源協議的評分點,那么,我們在選擇的時候,就要有的放矢;此前,我習慣性地使用 Mulan PSL v2 作為協議名稱,但是這種寫法并不符合SPDX規范,導致即便自己選擇的開源協議就在 SPDX License List中,也無法被 ohpm 中心倉的協議掃描工具所識別:

在這里插入圖片描述

因此,我們需要將 oh-package.json5文件中的 license 字段值,正確填寫為 MuLanPSL-2.0,類似的,其他開源協議的名稱填寫,也應當按照 SPDX License List 中列舉的樣子去填寫;如果你使用的開源協議,在 SPDX License List 中找不到,那么,說明它就不是 SPDX 規范的協議,此時,最好換一個。

2、將 oh-package.json5 文件補充完整

在 lib_easyrouter 的得分明細中,可以看到因為 oh-pakage.json 文件缺少內容而被扣分,主要就是少了 keywords 和 homepage,所以,針對性補充內容之后,就得到了一份內容完整的 oh-package.json5 文件:

{"name": "lib_easyrouter","version": "1.1.0","description": "一個以動態加載為核心實現跨模塊頁面路由功能的路由工具包","main": "Index.ets","keywords": ["跨模塊路由", "動態加載"],"homepage": "https://gitee.com/pengyoucongcode/EasyRouter","author": "***","license": "MulanPSL-2.0","repository": "https://gitee.com/pengyoucongcode/EasyRouter","dependencies": {"lib_log": "^1.0.0"}
}

3、補充 example 目錄

lib_easyrouter 另一個失分的地方,就是因為缺少 example 目錄,實際上,完善的軟件包也應當有一個提供功能演示的 example,所以,我在 v1.1.0 版本的 lib_easyrouter 中,針對性地加上了 example:
在這里插入圖片描述

4、基本的 README 和 CHANGELOG

如果你對自己發布的 ohpm 包,在中心倉上最終能獲得多少分并不在乎,但為了讓軟件包能夠成功上架,必須提供基本的說明文檔,也就是 README.md 和 CHANGELOG.md。

三、ohpm 包的源碼隔離特性

與 Maven、PyPi 和 NPM 等三方包管理系統所不同的是,ohpm 并不會直接將源碼暴露給其他引用者:
在這里插入圖片描述
以我自己發布的另一個鴻蒙共享包 lib_log 為例,可以看到下載的所謂源碼,都是 .d.ets 文件,而這種文件就跟 .d.ts 文件一樣,只是一種聲明文件,并不會包含具體的實現邏輯,類似于 C/C++ 的頭文件,所以,如果你沒有在 oh-package.json5 使用 repository 參數說明代碼倉庫所在,那么別人是無法知道你的實現代碼的。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90719.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90719.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90719.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[電網備考]計算機組成與原理

計算機系統概述 計算機發展歷程 從數據表示: 計算機可以分為數字計算機與模擬計算機 1946 第一臺電子數字計算機 ENIAC 在賓夕法尼亞大學誕生,標志進入電子計算機時代時間計算機發展階段1946-1958電子管計算機時代1958-1964晶體管計算機時代1964-1971集成電路計算機時代1971-至…

8.c語言指針

內存管理C語言中,棧內存(局部變量)自動分配/釋放,靜態區(全局、靜態變量)編譯時分配;堆內存需手動分配/釋放,核心函數有3個:malloc函數原型:void* malloc(siz…

使用GPU訓練模型

本文代碼詳解參考: 模型訓練基礎流程-CSDN博客 目錄 為什么要用GPU訓練模型 什么是CUDA 利用GPU訓練—方式一(.cuda()) 利用GPU訓練—方式二 (.to()) Google Colaboratory 為什么要用GPU訓練模型 用 GPU 訓練模型的核心原因是GPU 的硬件架構和計算特性&#…

Matlab學習筆記:自定義函數

MATLAB 學習筆記:自定義函數自定義函數是MATLAB編程的基礎,它允許你將重復代碼封裝成可重用的模塊,提高代碼的可讀性和效率。本筆記將覆蓋所有重點知識點,包括語法細節、輸入輸出處理、函數文件管理、錯誤處理等。我會用自然易懂的…

【數學建模 | Matlab】二維繪圖 和 三維繪圖

- 第 115 篇 - Date: 2025 - 07 - 23 Author: 鄭龍浩(仟墨) 續寫上一篇,如下文章: 【數學建模|Matlab】Matlab「基礎知識」和「基礎操作」 五 二維繪圖 1 舉例 % 二維平面繪圖(擴展至 -2π 到 2π) x …

MCP (Model Context Protocol) 與 HTTP API:大模型時代的通信新范式

MCP (Model Context Protocol) 與 HTTP API:大模型時代的通信新范式在數字世界的兩端,API 扮演著不可或缺的橋梁角色。我們熟知的 HTTP API 是 Web 互聯互通的基石,驅動著無數應用程序的交互。然而,隨著大型語言模型(L…

CentOS 搭建 Docker 私有鏡像倉庫

CentOS 搭建 Docker 私有鏡像倉庫 搭建 Docker 私有鏡像倉庫能為團隊提供高效、安全的鏡像管理方案。下面將詳細介紹每個步驟的操作細節,其中命令部分均用代碼塊展示。 一、環境準備 要搭建 Docker 私有鏡像倉庫,首先得確保服務器環境符合要求&#xff0…

Zookeeper的簡單了解

Zookeeper的簡單了解 Zookeeper是一個為分布式應用程序提供協調服務的中間件。 主要作用有三點:分布式鎖、注冊中心、配置管理、。 特點有讀寫速度快(內存存儲)、有監聽機制(用于發布訂閱)、保證了順序一致性&#xff…

Android Fragment 全解析

在 Android 開發中,Fragment 是構建靈活界面的核心組件 —— 它既能像 “迷你 Activity” 一樣包含布局和邏輯,又能靈活地嵌入到不同 Activity 中復用。無論是平板的多面板布局,還是手機的單頁切換,Fragment 都能讓界面適配更高效…

0-1BFS(雙端隊列,洛谷P4667 [BalticOI 2011] Switch the Lamp On 電路維修 (Day1)題解)

對于權重為0或1的路徑搜索中&#xff0c;使用雙端隊列可以對最短路問題進行時間復雜度的優化&#xff0c;由于優先隊列的O(longn)級別的插入時間&#xff0c;對于雙端隊列O(1)插入可以將時間復雜度減少至O(M); https://www.luogu.com.cn/problem/P4667 #include<bits/stdc…

基于LNMP架構的分布式個人博客搭建

1.運行環境主機主機名系統服務192.168.75.154Server-WebLinuxWeb192.168.75.155Server-NFS-DNSLinuxNFS/DNS2.基礎配置配置主機名&#xff0c;靜態IP地址開啟防火墻并配置部分開啟SElinux并配置服務器之間使用同ntp.aliyun.com進行時間同步服務器之間使用用ntp.aliyun.com進行時…

基于開源AI智能名片鏈動2+1模式S2B2C商城小程序的人格品牌化實現路徑研究

摘要&#xff1a;在數字化消費時代&#xff0c;人格品牌化已成為企業突破同質化競爭的核心策略。本文以開源AI智能名片、鏈動21模式與S2B2C商城小程序的融合為切入點&#xff0c;構建“技術賦能-關系重構-價值共生”的人格品牌化理論框架。通過分析用戶觸達、信任裂變與價值沉淀…

設計模式十一:享元模式(Flyweight Pattern)

享元模式是一種結構型設計模式&#xff0c;它通過共享對象來最小化內存使用或計算開銷。這種模式適用于大量相似對象的情況&#xff0c;通過共享這些對象的公共部分來減少資源消耗。基本概念享元模式的核心思想是將對象的內在狀態&#xff08;不變的部分&#xff09;和外在狀態…

Webpack/Vite 終極指南:前端開發的“渦輪增壓引擎“

開篇:當你的項目變成"俄羅斯套娃" "我的index.js怎么引入了87個文件?!" —— 這是每個前端開發者第一次面對復雜項目依賴時的真實反應。別擔心,今天我要帶你認識兩位"打包俠":老牌勁旅Webpack和新銳黑馬Vite 一、構建工具:前端世界的&qu…

Windows 下配置 GPU 用于深度學習(PyTorch)的完整流程

1. 安裝 NVIDIA 顯卡驅動 前往 NVIDIA官網 下載并安裝適合你顯卡型號&#xff08;如 5070Ti&#xff09;的最新版驅動。下載 NVIDIA 官方驅動 | NVIDIA安裝完成后建議重啟電腦。 2. 安裝 CUDA Toolkit 前往 CUDA Toolkit 下載頁。 選擇 Windows、x86_64、你的系統版本&#…

詳解力扣高頻SQL50題之180. 連續出現的數字【困難】

傳送門&#xff1a;180. 連續出現的數字 題目 表&#xff1a;Logs -------------------- | Column Name | Type | -------------------- | id | int | | num | varchar | -------------------- 在 SQL 中&#xff0c;id 是該表的主鍵。 id 是一個自增列。 找出所有至少連續…

VSCode 報錯 Error: listen EACCES: permission denied 0.0.0.0:2288

使用 npm run dev 啟動項目時報錯&#xff1a;error when starting dev server: Error: listen EACCES: permission denied 0.0.0.0:2288at Server.setupListenHandle [as _listen2] (node:net:1881:21)at listenInCluster (node:net:1946:12)at Server.listen (node:net:2044:…

[2025CVPR-圖象超分辨方向]DORNet:面向退化的正則化網絡,用于盲深度超分辨率

1. ?問題背景與挑戰? 盲深度超分辨率&#xff08;Blind Depth Super-Resolution, DSR&#xff09;的目標是從低分辨率&#xff08;LR&#xff09;深度圖中恢復高分辨率&#xff08;HR&#xff09;深度圖&#xff0c;但現有方法在真實場景下面臨顯著挑戰&#xff1a; ?已知…

關系與邏輯運算 —— 寄存器操作的 “入門鑰匙”

前言 哈嘍大家好&#xff0c;這里是 Hello_Embed 的新一篇學習筆記。在前文中&#xff0c;我們學習了如何用結構體指針操作硬件寄存器&#xff0c;而寄存器的配置往往離不開位運算和條件判斷 —— 比如通過邏輯運算精準修改某幾位的值&#xff0c;通過關系運算判斷硬件狀態。這…

使用 Python 將 CSV 文件轉換為帶格式的 Excel 文件

在日常的數據處理和報表生成工作中&#xff0c;CSV 格式因其簡潔性而被廣泛采用。但在展示數據時&#xff0c;CSV 文件往往缺乏格式和結構化樣式&#xff0c;不利于閱讀與分析。相比之下&#xff0c;Excel 格式&#xff08;如 .xlsx&#xff09;不僅支持豐富的樣式設置&#xf…