不務正業做了點前端事,uapp 一個能讓uniapp離線打包更簡單高效的腳手架

扣丁禪師發表於2022-03-27

uapp為啥誕生

社群大多是 laravel 後端,但應該也有不少做全棧的,但願 uapp 能幫助到你。

uniapp是一個基於Vue同構技術的多平臺前端框架,對公司或創業者來說,只需要有一個會Vue的前端,就可以同時寫App(android/ios),H5,快應用,微信/QQ/抖音/飛書/百度/支付寶等各家小程式,維護一套程式碼可以釋出10多個平臺。有以下幾大好處:

  • 釋出多個平臺獲取更多流量
  • 一旦熟悉,開發效率極高
  • 至少省 1 / 3 研發成本,商業試錯成本更低
  • 即使當前不需要釋出多平臺,同樣花時間寫程式碼,為什麼不選擇複用價值更高的方法呢

但 uniapp 官方釋出的離線包裡只有 DEMO,對於一個新的專案,需要手動更改的配置較多,且除錯基座和正式發版共用一個配置,維護起來也很不方便。uapp 就是我們在實踐了一些產品後,積累的一些經驗,分離了除錯和釋出的配置,也方便通過命令加入自動化整合。

為什麼不使用線上打包呢?

uniapp 線上打包,一般無法滿足靈活的需求,比如:

  • 沒法在團隊裡實施自動化整合(自動構建、單元測試、釋出)。
  • 有些包是冗餘的,線上打包不能控制具體打入哪些包。
  • 線上打包有大小限制,超過需要單獨付費,因為特別佔用官方伺服器資源。
  • 寫uniapp外掛擴充套件時,必須有離線工程才方便除錯,且可以自己控制是否釋出外掛。我們也是在寫 ffmpeg 擴充套件時,遇到些許不便。

先安裝 uappsdk

1、 安裝 uapp 命令

npm install -g uapp

# 初始化或更新 uappsdk
uapp sdk init

2、下載 uniapp 離線打包的 SDK

注意和.uappsdk區分開,此處的uniapp離線包的SDK是指dcloud 官方釋出的

android 離線打包SDK:

nativesupport.dcloud.net.cn/AppDoc...

ios 離線打包SDK:

nativesupport.dcloud.net.cn/AppDoc...

解壓其中的SDK目錄,放入 .uappsdk 資料夾裡,最終 .uappsdk 資料夾結構如下:

> $HOME/.uappsdk/
.
├── android
│   ├── SDK # -> 這裡是Android的SDK
│   └── libs
├── ios
│   ├── SDK # -> 這裡是iOS的SDK
└── templates
    └── manifest.json

SDK 相關檔案都放在當前使用者的 $HOME/.uappsdk 目錄下。

需要引入哪些模板,請務必仔細閱讀官方的 SDK 模組依賴說明,包含多了會影響APP稽核,少了會影響功能使用。

.uappsdk 目錄下預設包含的第三方依賴包,僅含有微信授權登入,蘋果授權登入,基礎功能等。不包含廣告、通知等相關依賴,因為廣告和通知類的sdk,在稽核時需要特別提交資料跟蹤說明,比較麻煩。

如不是必須,最好不包含。如果確實需要,可以自行手動新增,參照如下模組依賴說明。

android 模組依賴說明:

針對 android,僅需提取必用的依賴包放入 $HOME/.uappsdk/android/libs 裡。
nativesupport.dcloud.net.cn/AppDoc...

ios 模組依賴說明:

nativesupport.dcloud.net.cn/AppDoc...

下載離線打包工程模板

1. 下載 android 離線工程模板

git clone https://github.com/uappkit/uapp-android.git

2. 下載 ios 離線工程模板

git clone https://github.com/uappkit/uapp-ios.git

3. 工程下常見命令

# 讀取 manifest 中的配置,並更新基本資訊
uapp manifest {uni-app 工程目錄}/src/manifest.json
uapp manifest

# 更新 HBuilderX 本地打包資源
# 如果通過 HBuilderX 重新編譯,或者通過 uniapp-cli 命令重新編譯的資源,可以通過 prepare 命令更新到離線 APP 工程中,用於 APP 重新打包釋出。
uapp prepare

# 釋出離線打包基座到 HBuilderX 下
uapp publish debug

manifest.json 相關配置

注意: uapp.* 引數 是 uapp 根據需要擴充套件出來的, 非 dcloud 官方標準.

原工程裡的 manifest.json 內的引數,大多是給 hbuiderx 雲打包用的。編譯後生成的終極釋出包,裡面的 manifest.json 已被去除了無關資料,所以不用擔心引數暴露問題。

{
  "name": "uapp",
  "appid": "__UNI__ECA8F4D",
  "versionName": "1.0.1",
  "versionCode": "1000000",
  "uapp": {
    /* name, package, versionName, versionCode 如果需要平臺差異化定義, 可以加字首 android.xxx, ios.xxx */
    /* 例如 android.name, android.package, ios.package, ios.versionCode ... */
    "name": "μAppKit",
    "package": "com.code0xff.uapp",
    "android.appkey": "b4ab7d1c668cbb3b257aeeabd75c29da",
    "ios.appkey": "aa215ff1522abe39cb7ccec5943eeb92",
    "info": "npm info uapp"
  },
  "app-plus": {
    "distribute": {
      "sdkConfigs": {
        "oauth": {
          "weixin": {
            "appid": "wx95039516c9f72e50",
            "appsecret": "123456",
            "UniversalLinks": "https://uapp.code0xff.com/"
          }
        }
      }
    }
  }
}

如何申請 dcloud_appkey

nativesupport.dcloud.net.cn/AppDoc...

如何申請微信 appid

登入微信開發者平臺建立APP,稽核過後,獲取 weixin.appid, weixin.appsecret 等引數,用於微信登入,分享,支付等相關引數

open.weixin.qq.com/

跨端開發注意事項

uniapp.dcloud.io/matter.html

uapp 使用幫助

doc/help.txt

技術問題加群

遇到技術問題,可加微信入群交流

微信:yinqisen

本作品採用《CC 協議》,轉載必須註明作者和本文連結
尊道貴德 / 多行佈施

相關文章