轉自 duanshuilu.com
以下是HBuilderX manifest.json配置說明大全,涉及的較全面,如果不方便查看;
可以直接 Ctrl+ F 在頁面查找相應字段配置。
概述
manifest.json文件是5+移動App的配置文件,用於指定應用的顯示名稱、圖標、入口頁面等信息。用戶可通過HBuilder|HBuilderX的可視化界面視圖進行配置,也可在源碼視圖中根據以下規範直接修改。
manifest.json文件根據w3c的webapp規範制定,plus節點下內容爲HTML5 Plus擴展規範,其下包括iOS和Android子節點,內容來源分別爲iOS和Android原生打包所要求的參數,用於對5+移動App打包爲ipa或apk安裝包進行配置。
manifest.json
以下是完整的manifest.json配置文件,在HBuilder|HBuilderX中切換到“源碼視圖”按以下規範進行手動配置。
{
"id": "H512345", //必填
"name": "應用名稱", //必填
"version": {
"name": "1.0", //必填,推薦使用.分割,如1.0
"code": "10" //必填,純數字
},
"launch_path": "入口頁面", //必填
"description": "應用描述信息", //可選
"icons": { //可選,以分辨率爲索引鍵名
"72": "圖標路徑"
},
"developer": { //選填,開發者信息
"name": "開發者名稱",
"email": "開發者郵箱地址",
"url": "開發者網站"
},
"screenOrientation": [ //應用支持的屏幕方向
"portrait-primary", //豎屏
"portrait-secondary", //豎屏(反向),上下顛倒
"landscape-primary", //橫屏,Home鍵在右側
"landscape-secondary" //橫屏(反向),Home鍵在左側
],
"permissions": { //5+模塊,uni-app項目對應節點爲"app-plus" -> "modules"
"Accelerometer": {
"description": "加速度傳感器"
}
},
"plus": { // 5+擴展配置, uni-app項目對應節點爲"app-plus"
"allowsInlineMediaPlayback":"true|false", //可選,是否允許video標籤非全屏播放
"appWhitelist": [ //可選,應用白名單列表(Android平臺爲apk下載地址,iOS平臺爲appstore地址)
],
"arguments": "", //可選,預設應用的啓動參數
"cache": { //可選,緩存配置
},
"cers": { //可選,異常錯誤反饋配置
},
"channel": "", //可選,渠道信息
"confusion": { //可選,原生js文件混淆配置
},
"distribute": { //必選,雲端打包配置
},
"error": { //可選,錯誤頁面配置
},
"locales": { //可選,國際化配置
}
"nativePlugins": { //可選,原生插件相關配置
},
"popGesture": "none|close|hide", //可選,側滑返回功能配置
"kernel": { //可選,Webview渲染內核配置
},
"runmode": "normal|liberate", //可選,運行模式
"safearea": { //可選,安全區域配置
},
"schemeWhitelist":[ //可選,Scheme白名單列表
],
"splashscreen": { //可選,splash界面配置
},
"ssl": { //可選,SSL配置
},
"softinput": { //可選,軟鍵盤配置
},
"statusbar": { //可選,系統狀態欄配置
},
"useragent": { //可選,UA配置
},
"launchwebview": { //可選,應用首頁配置
},
"secondwebview": { //可選,應用雙首頁配置
},
"uni-app": { //可選,uni-app應用的配置
},
"compatible": { //可選,編譯器兼容性配置
},
"wap2app": { //可選,wap2app相關配置
},
}
}
id
應用標識(AppID),在可視化“基礎配置”項中。
name
應用名稱,打包爲apk/ipa安裝到手機上顯示的名稱。
version
應用版本信息,包括版本名稱和版本號。
- name
版本名稱,字符串類型,用於顯示的版本字符串。可通過5+API plus.runtime.version獲取版本名稱。
本地離線打包配置:Android平臺,iOS平臺。 - code
版本號,數字類型(正整數),操作系統使用,新版本的值要大於老版本,否則無法正常安裝。可通過5+API plus.runtime.versionCode獲取版本號。
本地離線打包配置:Android平臺,iOS平臺
launch_path
應用入口頁面(首頁)地址,相對於應用資源根目錄(默認爲根目錄的index.html)。也可以是網絡地址(需以http/https開頭)。
description
應用描述信息。
icons
應用的圖片配置(暫未使用)。
developer
開發者信息,可選內容。
- name
開發者名稱 - email
開發者郵箱地址 - url
開發者網站地址
screenOrientation
應用支持的屏幕方向,字符串數組類型,配置需要支持的方向,可取值:
- portrait-primary
豎屏 - portrait-secondary
豎屏(反向),山下顛倒 - landscape-primary
橫屏,Home鍵在右側 - landscape-secondary
橫屏(反向),Home鍵在左側
permissions
要使用的模塊配置,不要手動修改,應該在HBuilderX中manifest.json的可視化界面“(App)模塊權限配置”項的“打包模塊配置”下勾選
支持以下模塊:
模塊標識 | 模塊名稱 |
---|---|
Bluetooth | 低功耗藍牙 |
Contacts | 通訊錄 |
Fingerprint | 指紋識別 |
iBeacon | iBeacon |
LivePusher | 直播推流 |
Maps | 地圖 |
Messaging | 短彩信、郵件 |
OAuth | 登錄鑑權 |
Payment | 支付 |
Push | 消息推送 |
Speech | 語言識別 |
Statistic | 統計 |
SQLite | 數據庫 |
VideoPlayer | 視頻播放 |
plus
5+擴展配置,uni-app項目對應爲”app-plus”節點
allowsInlineMediaPlayback
是否允許html頁面中video標籤非全屏播放,僅iOS平臺有效
Boolean類型,值爲true表示允許,false表示不允許,默認值爲不允許。
html頁面的video標籤必須添加webkit-playsinline屬性才支持非全屏播放,如下示例:
<video controls="controls" src="http://.../x.mp4" webkit-playsinline>
此配置與VideoPlayer(視頻播放)控件功能無關
appWhitelist
應用中可直接安裝原生應用的白名單地址(url)。
- Android平臺
url地址如果是下載apk的鏈接,不在此白名單列表中的url下載apk將會被攔截(彈出toast提示“當前環境不支持下載未許可的apk文件”) - iOS平臺
url地址如果是跳轉到appstore,不在此白名單列表中的url跳轉將會被攔截(彈出toast提示“當前環境不支持下載未許可的應用”)"plus": { //uni-app項目對應節點名稱爲"app-plus" "appWhitelist":[ "http://www.dcloud.io/streamapp/streamapp.apk", "itms://itunes.apple.com/cn/app/liu-ying-yong/id793135951" ], // ... }
以上白名單機制僅在流應用環境中限制,發佈爲獨立App時忽略此配置
arguments
應用啓動時的5+默認參數
String類型,可選。
在5+中可通過plus.runtime.arguments獲取,如果外部調用應用時傳入了參數,則覆蓋此默認參數。
cache
應用的緩存配置信息,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"cache":{
"mode": ""
},
// ...
}
mode
Webview窗口默認使用的緩存模式,可取值:
- “default”
根據cache-control決定是否使用緩存數據,如果存在緩存並且沒有過期則使用本地緩存資源,否則從網絡獲取; - “cacheElseNetwork”
只要存在緩存(即使過期)數據則使用,否則從網絡獲取; - “noCache”
不使用緩存數據,全部從網絡獲取; - “cacheOnly”
僅使用緩存數據,不從網絡獲取(注:如果沒有緩存數據則會導致加載失敗)。
默認爲”default”。
cers
應用的異常崩潰與錯誤報告系統配置信息,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"cers":{
"crash": ""
},
// ...
}
crash
是否提交程序異常崩潰信息。
Boolean類型,true表示提交,false表示不提交,默認值爲true。
channel
渠道標記,字符串類型。
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"channel": "google",
// ...
}
注意:不要直接修改此配置,參考渠道包打包配置教程
confusion
應用的JS文件原生混淆配置
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"confusion": {
"description": "JS原生混淆",
"resources": {
"js/common.js": {
},
"js/immersed.js": {
}
}
},
// ...
}
- description
原生混淆配置描述信息 - resources
要混淆的JS文件列表,JSON對象,以要混淆的js文件路徑(相對路徑)爲鍵名,值爲空JSON對象即可
注意:confusion節點是在plus節點之下,uni-app項目由於需要編譯暫不支持原生混淆
iOS平臺使用WKWebview不支持原生混淆,HBuilderX2.2.5(alpha)版本開始調整默認使用WKWebview,使用WKWebview時雲端打包將忽略原生混淆配置(即不混淆)
error
定義窗口加載錯誤時的處理邏輯,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"error":{
"url": "本地錯誤頁面地址"
},
// ...
}
- url
窗口加載錯誤時(如本地頁面不存在,或者無法訪問的網絡地址)跳轉的頁面地址,僅支持本地頁面地址。設置爲“none”則關閉跳轉到錯誤頁面功能,此時頁面顯示Webview默認的錯誤頁面內容。默認使用5+ Runtime內置的錯誤頁。
locales
雲端打包國際化配置,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"locales":{
"zh": {//中文(簡體)
"name": "應用名稱",
"android": {
"strings": { //Android平臺自定義字符串
}
},
"ios": {
"privacyDescription": { //iOS平臺隱私訪問描述信息
},
"infoPlist": { //iOS平臺自定義InfoPlist.strings
}
}
},
"zh-TW": {//中文繁體(臺灣)
},
"zh-HK": {//中文繁體(香港)
},
"en": {
}
},
// ...
}
nativePlugins
uni原生插件配置,JSON對象數組
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"nativePlugins": [
{
"%PluginID%": {
}
}
],
// ...
}
注意:不要直接修改此配置,推薦在HBuilderX的可視化界面中操作
popGesture
應用中Webview窗口側滑返回功能的默認效果,字符串類型
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"popGesture": "none",
// ...
}
可取以下值:
- “none”
默認Webview窗口無側滑返回功能,側滑時無任何響應 - “close”
默認webview窗口側滑返回關閉,用戶側滑後窗口自動關閉,關閉窗口的邏輯與調用 close()方法一致。 - “hide”
默認webview窗口側滑返回隱藏,即用戶側滑後窗口自動隱藏,隱藏窗口的邏輯與調用其hide()方法一致。
默認值爲”none”。manifest.json中配置的爲默認項, 在應用中可以通過WebviewStyles的popGesture屬性動態修改。
注意:Android平臺僅在流應用環境下支持側滑返回。
kernel
Webview窗口使用的內核,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"kernel": {
"ios": "WKWebview",
"recovery": "restart|reload|none"
},
// ...
}
ios
iOS平臺Webview窗口默認使用的內核,可取值:
- “WKWebview”
iOS8.0及以上系統默認使用WKWebview內核 - “UIWebview”
使用UIWebview內核
默認值爲UIWebview。
HBuilderX2.2.5(alpha)版本開始調整默認爲WKWebview
recovery
Webview內核崩潰後的恢復處理邏輯,僅iOS平臺非uni-app項目使用WKWebview內核時生效,uni-app項目可自動恢復(推薦轉換爲uni-app項目)。
當WKWebview崩潰後,Webview頁面的JS上下文將丟失,也無法渲染DOM內容(白屏)
可配置以下值:
- “restart”
重啓應用,關閉所有頁面重新打開應用首頁,可通過(plus.runtime.isRecovery)來判斷應用是否恢復重啓 - “reload”
重新加載當前WKWebview(崩潰的WKWebview)頁面,頁面中JS上下文中所有數據丟失,在當前Webview中可通過plus.webview.isRecovery判斷是否恢復重新加載,在其它Webview中可監聽recovery事件來判斷 - “none”
不做任何操作
創建Webview窗口時可設置kernelRecovery屬性單獨設置某個窗口的恢復處理邏輯
runmode
應用的運行模式,字符串類型
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"runmode": "liberate"
// ...
}
可取值:
- “normal”
正常運行模式。 - “liberate”
釋放資源運行模式,應用在第一次啓動時將解壓自帶資源到SDcard,正常情況不推薦使用該模式。該模式的缺點:第一次啓動更慢,耗費時間先解壓、容易被三方清理軟件清理。該模式有用的場景:此模式下File API纔可正常訪問_www應用資源,以及在某些Android rom訪問本地頁面時url地址中包含?帶參數,但不推薦使用這種跨頁傳參方式,推薦使用其他方式跨頁傳參
注意:wap2app 應用固定爲 liberate,不支持自定義。
safearea
iOS劉海屏設備(iPhoneX)的安全區域配置
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"safearea": {
"background":"#CCCCCC",
"bottom":{
"offset":"auto"
},
"left": {
"offset":"auto"
},
"right: {
"offset":"auto"
}
},
// ...
}
background
安全區域外的背景顏色,默認值爲”#FFFFFF”
bottom
底部安全區域配置,包括以下屬性
- offset
底部安全區域偏移,”none”表示不空出安全區域,”auto”自動計算空出安全區域,默認值爲”none”left
左側安全區域配置(橫屏顯示時有效),包含的屬性與bottom一致。
right
右側安全區域配置(橫屏顯示時有效),包含的屬性與bottom一致。
schemeWhitelist
配置應用中URL Scheme白名單(非http、https、file),字符串數組
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"schemeWhitelist": [
"streamapp"
],
// ...
}
僅允許白名單中的scheme跳轉,不在白名單中URL Scheme鏈接將會被攔截(攔截後不做任何處理)。
默認白名單爲:
‘sms’, ‘tel’, ‘mailto’, ‘callto’, ‘weixin’, ‘alipay’, ‘alipays’, ‘alipayqr’, ‘weibo’, ‘mqq’, ‘mqqapi’, ‘qqmap’, ‘baidumap’, ‘amap’, ‘iosamap’, ‘streamapp’
iOS默認白名單還包括”itms”等跳轉appstore。
splashscreen
程序啓動界面配置信息,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"splashscreen": {
"autoclose": "false",
"event": "loaded",
"target": "default",
"waiting": "true",
"delay": "500",
"ads": {
"background": "#FFFFFF",
"image": "logo.png"
}
},
// ...
}
包括以下字段:
- autoclose
是否自動關閉程序啓動界面,布爾類型。
默認爲true,即自動關閉程序啓動界面,否則需要在應用中顯式調用plus.navigator.closeSplashscreen方法來關閉。 - event
觸發自動關閉splash界面的事件類型,字符串類型,可取值:
“titleUpdate”表示當首頁Webview的titleUpdate事件觸發時自動關閉splash界面;
“rendering”表示當首頁Webview的rendering事件觸發時自動關閉splash界面;
“loaded”:表示當首頁Webview的loaded事件觸發時自動關閉splash界面。
默認值爲loaded。 - target
設置雙首頁模式下,定義目標webview觸發event類型自動關閉splash界面,可取值:
“default”根據首頁Webview的event事件關閉splash;
“second”:根據第二個首頁Webview的event事件關閉splash。
默認值爲”default”。 - waiting
是否在程序啓動界面顯示等待雪花,布爾類型。
默認爲false,即不顯示等待雪花。 - delay
啓動界面在應用的首頁面加載完畢後延遲關閉的時間,單位爲毫秒,數字類型。
默認不延遲,即首頁面加載完畢後立即關閉。 - ads
開屏廣告配置信息,JSON格式對象
包括以下屬性:
background:設置背景顏色
image:設置底部圖片地址,相對應用資源目錄路徑,不支持網絡地址,建議分辨率720×256(要求png格式,背景透明,留出邊距,在不同分辨率手機上會自動等比例縮放處理)
ssl
應用ssl相關設置
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"ssl": {
"untrustedca": "accept|refuse|warning"
},
// ...
}
包括以下字段:
- untrustedca
配置應用中https請求時,如果服務器返回非受信證書的處理邏輯,字符串類型,可取值:
“accept” – 接受此非受信證書,繼續訪問;
“refuse” – 拒絕此非 受信證書,停止訪問;
“warning” – 彈出警告提示框提醒用戶,由用戶確定是否繼續訪問。
默認值爲”accept”。
softinput
軟鍵盤相關配置,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"softinput": {
"navBar": "auto|none",
"auxiliary": true|false,
"mode": "adjustResize|adjustPan"
},
// ...
}
包括以下字段:
- navBar
軟鍵盤上導航條的顯示模式,字符串類型(僅iOS平臺支持):
“auto” – 表示系統默認值(即顯示導航條);
“none” – 表示不顯示。
默認值爲”auto”。 - auxiliary
是否開啓輔助輸入功能,Boolean類型
true表示開啓,false表示關閉,默認值爲true。 - mode
彈出系統軟鍵盤模式,字符串類型,可取值:
“adjustResize” – 表示彈出軟鍵盤時自動調整窗口大小;
“adjustPan” – 表示彈出軟鍵盤時自動移動滾動窗口使得輸入框可見(Android平臺可能會出現軟鍵盤蓋住輸入框的情況)。
默認值爲”ajustResize”。
iOS平臺可通過WebviewStyles的softinputMode屬性對單個窗口進行控制
statusbar
應用啓動後的系統狀態欄樣式,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"statusbar": {
"immersed": "none|suggestedDevice|supportedDevice",
"style": "dark|light",
"background": "#RRGGBB"
},
// ...
}
包括以下字段:
- immersed
定義應用是否使用沉浸式狀態欄樣式,String類型,可取值:
“none” – 非沉浸式狀態欄樣式;
“suggestedDevice” – 沉浸式狀態欄,僅在支持設置狀態欄前景色樣式的設備上生效(Android5.0的小米&魅族、Android6.0及以上,iOS在所有設備上生效);
“supportedDevice” – 沉浸式狀態欄,在所有支持沉浸式狀態欄設備上生效(與之前的true一致,Android4.4及以上)。
默認值爲”false”。
-style
系統狀態欄樣式(前景顏色),字符串類型,可取以下值:
“dark” – 深色前景色樣式(即狀態欄前景文字爲黑色),此時background建議設置爲淺顏色;
“light” – 淺色前景色樣式(即狀態欄前景文字爲白色),此時background建設設置爲深顏色。
可通過plus.navigator.setStatusBarStyle()動態調整。注:Android5.0(小米&魅族)和Android6.0及以上系統支持,iOS7.0及以上系統支持
-background
系統狀態欄背景顏色,字符串類型,#RRGGBB格式,顏色值格式爲”#RRGGBB”,如”#FF0000″爲紅色。
默認使用系統樣式,通常iOS平臺默認爲light樣式;Android平臺默認爲dark(各ROM廠商存在差異)。
可通過plus.navigator.setStatusBarBackground()動態調整。
注:僅在immersed屬性值設置爲false時有效。
useragent(useragent_android/useragent_ios)
應用中http請求的userAgent信息,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"useragent": {
"value": "要設置的默認userAgent值",
"concatenate": "true|false"
},
"useragent_android": {
"value": "android平臺要設置的默認userAgent值",
"concatenate": "true|false"
},
"useragent_ios": {
"value": "ios平臺要設置的默認userAgent值",
"concatenate": "true|false"
},
// ...
}
包括以下字段:
- value
自定義userAgent值,字符串類型 - concatenate
是否將value值作爲追加值連接到系統默認userAgent值之後,布爾類型:
“true” – 表示追加模式,若value不以空格字符開頭,則在其前面自動添加空格字符;
“false” – 表示覆蓋模式,即value值作爲完整userAgent使用。
默認爲false,即覆蓋默認userAgent值。
useragent_android和useragent_ios分別配置對Android和iOS平臺生效。
注:爲了保證運行環境的一致性,建議concatenate設置爲true。
launchwebview
應用首頁Webview的配置信息,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"launchwebview": {
"plusrequire": "ahead|normal|later|none",
"injection": "true|false",
"overrideresource": [{
"match":"區配攔截的資源url地址",
"redirect":"攔截資源的重現向地址",
"mime":"攔截資源的數據類型",
"encoding":"攔截資源的數據編碼",
"header":"攔截資源的http頭數據"
}],
"overrideurl": {
"mode": "allow|reject,攔截模式",
"match": "匹配攔截規則",
"exclude": "none|redirect,排除攔截理規則"
},
"replacewebapi": {
"geolocation": "none|alldevice|auto, 重寫標準定位API"
},
"geolocation": "none|replace|auto, 重寫標準定位API",
"subNViews": [{
"id": "原生子View控件的標識",
"styles": "JSON對象,原生子View控件樣式",
"tags": "JSON數組對象,原生子View控件上繪製的元素"
}],
"titleNView": {
"backgroundColor": "#RRGGBB, 標題欄背景顏色",
"titleText": "標題欄標題文字內容",
"titleColor": "#RRGGBB, 標題欄標題文字顏色",
"titleSize": "17px,標題字體大小,默認大小爲17px",
"autoBackButton": "true|false,是否顯示標題欄上返回鍵",
"backButton": "JSON對象,標題欄上返回鍵樣式",
"buttons": [{
"color": "按鈕上的文字顏色",
"colorPressed": "按鈕按下狀態的文字顏色",
"float": "按鈕在標題欄上的顯示位置",
"fontWeight": "按鈕上文字的粗細",
"fontSize": "按鈕上文字的大小",
"fontSrc": "按鈕上文字使用的字體文件路徑",
"text": "按鈕上顯示的文字"
}],
"splitLine": "JSON對象,標題欄底部分割線樣式"
},
"statusbar": {
"background": "#RRGGBB格式字符串,沉浸式狀態欄樣式下系統狀態欄背景顏色"
},
"top": "0px|10%,Webview的頂部偏移量",
"height": "0px|10%,Webview窗口高度",
"bottom": "0px|10%, Webview的底部偏移量,僅在未同時設置top和height屬性時生效",
"backButtonAutoControl": "none|hide|close,運行環境自動處理返回鍵的控制邏輯",
"additionalHttpHeaders": "JSON數據,額外添加HTTP請求頭數據"
},
// ...
}
包括以下字段:
overrideresource
配置應用首頁的攔截資源請求處理邏輯,可包含多條配置項,json支持以下屬性:
- match
區配攔截的資源url地址,支持正則表達式,與WebviewOverrideResourceOptions的match屬性功能一致; - redirect
攔截資源的重現向地址,僅支持本地資源地址,如”_www”、”_doc”、”_downloads”、”_documents”等開頭的路徑,與WebviewOverrideResourceOptions的redirect屬性功能一致; - mime
攔截資源的數據類型,RFC2045/RFC2046/RFC2047/RFC2048/RFC2049規範中定義的數據類型,與WebviewOverrideResourceOptions的mime屬性功能一致; - encoding
攔截資源的數據編碼,默認值”UTF-8″,與WebviewOverrideResourceOptions的encoding屬性功能一致; - header
攔截資源的http頭數據,JSON格式數據,與WebviewOverrideResourceOptions的encoding屬性功能一致;
**注:以上配置項與Webview的overrideResourceRequest方法作用一致,配置項可參考規範
overrideurl
配置應用首頁的攔截鏈接請求處理邏輯,支持以下屬性:
- mode
攔截模式,可取值:
“allow” – 表示滿足match屬性定義的條件時不攔截url繼續加載,不滿足match屬性定義的條件時攔截url跳轉並觸發callback回調;
“reject” – 表示滿足match屬性定義的提交時攔截url跳轉並觸發callback回調,不滿足match屬性定義的條件時不攔截url繼續加載;
默認值爲”reject”。 - match
匹配攔截規則,支持正則表達式,默認值爲對所有URL地址生效(相當於正則表達式“.*”)。
如果mode值爲”allow”則允許區配的URL請求跳轉,mode值爲”reject”則攔截區配的URL請求。 - exclude
排除攔截理規則,可取值:
“none” – 表示不排除任何URL請求(即攔截處理所有URL請求);
“redirect” – 表示排除攔截處理301/302跳轉的請求(謹慎使用,非a標籤的href觸發的URL請求可能會誤判斷爲302跳轉);
默認值爲”none”。
titleNView
配置應用首頁的標題欄,配置此屬性則首頁顯示標題欄,支持以下屬性:
- backgroundcolor
標題欄背景顏色,字符串類型,格式爲“#RRGGBB”,默認值爲灰黑色(#1B1A1F) - titletext
標題欄標題文字內容,默認值爲當前加載頁面的標題 - titlecolor
標題欄標題文字顏色,字符串類型,格式爲“#RRGGBB”,默認值爲白色(#FFFFFF)
secondwebview
應用雙首頁模式配置,添加此字段則表明應用採用雙首頁模式運行,應用啓動除了創建默認入口頁外還創建第二個Webview,此字段配置第二個Webview的配置信息,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"secondwebview": {
"launch_path": "加載頁面地址",
"id": "Webview窗口標識",
"mode": "front|child|behind|parent,Webview顯示模式",
"top": "0px|10%,Webview的頂部偏移量",
"height": "0px|10%,Webview窗口高度",
"bottom": "0px|10%, Webview的底部偏移量",
"plusrequire": "ahead|normal|later|none,控制JS注入時機",
"injection": "true|false,是否提前注入js",
"overrideresource": [{
"match":"區配攔截的資源url地址",
"redirect":"攔截資源的重現向地址",
"mime":"攔截資源的數據類型",
"encoding":"攔截資源的數據編碼",
"header":"攔截資源的http頭數據"
}],
"overrideurl": {
"mode": "allow|reject,攔截模式",
"match": "匹配攔截規則",
"exclude": "none|redirect,排除攔截理規則"
},
"replacewebapi": {
"geolocation": "none|alldevice|auto, 重寫標準定位API"
},
"geolocation": "none|replace|auto, 重寫標準定位API",
"subNViews": [{
"id": "原生子View控件的標識",
"styles": "JSON對象,原生子View控件樣式",
"tags": "JSON數組對象,原生子View控件上繪製的元素"
}],
"titleNView": {
"backgroundColor": "#RRGGBB, 標題欄背景顏色",
"titleText": "標題欄標題文字內容",
"titleColor": "#RRGGBB, 標題欄標題文字顏色",
"titleSize": "17px,標題字體大小,默認大小爲17px",
"autoBackButton": "true|false,是否顯示標題欄上返回鍵",
"backButton": "JSON對象,標題欄上返回鍵樣式",
"buttons": [{
"color": "按鈕上的文字顏色",
"colorPressed": "按鈕按下狀態的文字顏色",
"float": "按鈕在標題欄上的顯示位置",
"fontWeight": "按鈕上文字的粗細",
"fontSize": "按鈕上文字的大小",
"fontSrc": "按鈕上文字使用的字體文件路徑",
"text": "按鈕上顯示的文字"
}],
"splitLine": "JSON對象,標題欄底部分割線樣式"
},
"statusbar": {
"background": "#RRGGBB格式字符串,沉浸式狀態欄樣式下系統狀態欄背景顏色"
},
"backButtonAutoControl": "none|hide|close,運行環境自動處理返回鍵的控制邏輯",
"additionalHttpHeaders": "JSON數據,額外添加HTTP請求頭數據"
},
// ...
}
包括以下字段:
launch_path
第二個Webview窗口加載的頁面地址,支持網絡地址和本地地址
id
第二個Webview窗口標識,默認值爲%APPID%__second
mode
第二個Webview窗口顯示模式,可取值:
- child
表示作爲launchwebview的子窗口 - front
表示與launchwebview平級並在其前顯示 - behind
表示與launchwebview平級並在其後顯示
默認值爲”front”。
top
第二個Webview窗口的頂部偏移量
可取值像素值或百分比,如”0px”、”10%”。
height”
第二個Webview窗口的高度
可取值像素值或百分比,如”0px”、”50%”。
bottom
第二個Webview窗口的底部偏移量
可取值像素值或百分比,如”0px”、”10%”。
其它屬性與launchwebview下一致
uni-app
僅uni-app項目生效
uni-app應用的配置,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"uni-app": {
"nvue": {
"flex-direction": "row|row-reverse|column|column-reverse"
}
},
// ...
}
包括以下字段:
nvue
nvue頁面的flex-direction默認值,字符串類型,可取值:
“row”、”row-reverse”、”column”、”column-reverse”
默認值爲”row”。
compatible
僅uni-app項目生效
uni-app應用兼容性配置,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"compatible": {
"ignoreVersion": true,
"runtimeVersion": "兼容的uni-app運行環境版本號,多個版本使用,分割",
"compilerVersion": "兼容的編譯器版本號"
},
// ...
}
當uni-app運行環境與編譯環境不一致時,會彈出可能存在兼容性問題的提示框。
wap2app
wap2app應用配置,JSON格式對象
"plus": { //uni-app項目對應節點名稱爲"app-plus"
"wap2app": {
"launchError": "tip|none"
},
// ...
}
包括以下字段:
launchError
應用首頁加載錯誤處理邏輯,”tip”表示彈出提示框(無法連接服務器,請檢查網絡設置),”none”表示不處理(跳轉到錯誤頁面),默認值爲”tip”。
plus->distribute
雲端打包配置項,uni-app項目對應爲”app-plus” -> “distribute”節點
"plus": {
"distribute": {
"debug": "true|false,是否開啓調試功能",
"syncDebug": "true|false, 是否爲真機運行基座",
"apple": {
"appid": "", //iOS包名(Bundle ID)
"mobileprovision": "", //iOS打包使用的profile文件
"password": "", //iOS打包使用的證書密碼
"p12": "", //iOS打包使用的證書
"devices": "iphone|ipad|universal", //iOS支持的設備類型
"urlschemewhitelist": [ //iOS平臺應用訪問白名單
""
],
"UIBackgroundModes": ["audio","location"],//iOS應用後臺運行模式
"urltypes": [ //iOS平臺url scheme配置
],
"frameworks": [ //iOS平臺依賴的系統庫
"CoreLocation.framework"
],
"deploymentTarget": "9.0", //iOS支持的最低版本
"privacyDescription": { //iOS隱私描述
}
"idfa":"true|false", //是否使用廣告標識符,默認值爲false
"capabilities": { //應用的能力配置(Capabilities)
}
},
"google":{
"packagename":"", //Android包名
"keystore":"", //Android簽名證書
"password":"", //Android簽名證書密碼
"aliasname":"", //Android簽名證書別名
"locale": "default", //應用的語言,默認值爲default(系統語言),如en_US表示使用英語(美國)
"schemes":[ //Android平臺url scheme配置
],
"theme":"程序使用的主題",
"abiFilters":[ //支持的CPU類型
"armeabi", "armeabi-v7a", "x86"
],
"custompermissions":"true|false",
"permissions":[ //Android平臺使用的權限
""
],
"permissionPhoneState": { //Android平臺讀取設備信息權限配置
"request": "always|once|none", //申請權限策略
"prompt": "" //用戶拒絕時彈出提示框上的內容
},
"permissionExternalStorage": { //Android平臺讀寫存儲權限配置
"prompt": "" //用戶拒絕時彈出提示框上的內容
},
"minSdkVersion":"apk支持的最低版本", //Android平臺最低版本
"targetSdkVersion":"apk的目標版本" //Android平臺目標版本
},
"icons":{ //應用圖標配置
},
"splashscreen":{ //應用啓動圖片配置
},
"plugins":{ // 第三方sdk配置
}
}
}
apple
iOS平臺打包配置,uni-app項目對應爲”app-plus” -> “distribute” -> “ios”節點
其中appid、mobileprovision、password、p12、devices爲iOS打包基礎配置,點擊HBuilderX菜單的”發行” -> “原生App-雲打包”打開的“App雲端打包”中配置:
urlschemewhitelist
設置應用訪問白名單
UIBackgroundModes
應用後臺運行模式配置,如後臺播放音樂、後臺定位等
urltypes
iOS平臺URL Schemes配置
frameworks
設置應用要引用的系統庫(framework),字符串數組。
在使用native.js時使用,通知App雲端打包在編譯應用時引用對於的系統framework庫,以便native.js能成功調用其中的API。
如要調用蘋果遊戲相關API,則需要引用”GameKit.framework”。
"frameworks": [ //iOS平臺依賴的系統庫
"GameKit.framework"
],
deploymentTarget
設置應用支持的最低版本,可取值:
- iOS8:
‘8.0’, ‘8.1’, ‘8.2’, ‘8.3’, ‘8.4’ - iOS9:
‘9.0’, ‘9.1’, ‘9.2’, ‘9.3’ - iOS10:
‘10.0’, ‘10.1’, ‘10.2’, ‘10.3’ - iOS11:
‘11.0’, ‘11.1’, ‘11.2’, ‘11.3’, ‘11.4’ - iOS12:
‘12.0’, ‘12.1’, ‘12.2’, ‘12.3’, ‘12.4’ - iOS13:
‘13.0’, ‘13.1’
privacyDescription
iOS平臺隱私描述,請在HBuilderX的manifest.json可視化界面“(App)模塊權限配置”中進行配置。
idfa
iOS平臺應用是否使用IDFA(廣告標識)
capabilities
iOS平臺打包時Capabilities配置,json類型數據,配置應用的capabilities數據(根據XCode規範分別配置到entitlements和plist文件中)
"capabilities": {
"entitlements": { // 合併到工程entitlements文件的數據(json格式)
},
"plists": { // 合併到工程Info.plist文件的數據(json格式)
}
},
Android平臺打包配置,uni-app項目對應爲”app-plus” -> “distribute” -> “android”節點
其中packagename、keystore、password、aliasname爲Android打包基礎配置,點擊HBuilderX菜單的”發行” -> “原生App-雲打包”打開的“App雲端打包”中設置:
schemes
Android平臺URL Schemes配置
theme
Android平臺應用要使用的系統主題名稱
abiFilters
Android平臺配置支持的CPU類型
permissions
Android平臺使用到的權限,請在HBuilderX的manifest.json可視化界面“(App)模塊權限配置”中的“Android打包權限配置”中勾選。
permissionExternalStorage
HBuilderX2.5.0+版本支持
Android平臺應用啓動時申請讀寫手機存儲權限配置
支持以下字段
- prompt
當用戶拒絕授權讀寫手機存儲權限時彈出提示框上顯示的內容。
permissionPhoneState
HBuilderX2.3.8+版本支持
Android平臺應用啓動時申請讀取設備信息權限配置
支持以下字段
- request
申請權限策略,可配置以下值:
“always” – 一直申請讀取設備信息權限,用戶必須授權允許,否則一直彈出提示框,直到用戶允許;
“once” – 申請一次讀取設備信息權限,不管用戶是否允許
“none” – 不申請讀取設備信息權限 - prompt
配置request值爲”always”時有效,當用戶拒絕授權讀取設備信息權限時彈出提示框上顯示的內容。
minSdkVersion & targetSdkVersion
minSdkVersion爲應用兼容的最低Android版本(API等級)
targetSdkVersion爲應用適配的Android版本(API等級)
icons
應用圖標配置,json格式數據,分別包含Android和iOS平臺的配置項:
"icons":{
"ios":{
"appstore":"必選, 1024x1024, 提交app sotre使用的圖標",
"iphone":{
"normal": "可選,57x57,iPhone3/3GS程序圖標,低於iOS7不再支持",
"retina": "可選,114x114,iPhone4程序圖標,低於iOS7不再支持",
"app@2x[retina7]": "可選,120x120,iOS7+程序圖標(iPhone4S/5/6/7/8)",
"app@3x[retina8]": "可選,180x180,iOS7+程序圖標(iPhone6plus/7plus/8plus/X)",
"spotlight-normal": "可選,29x29,iPhone3/3GS Spotlight搜索程序圖標,低於iOS7不再支持",
"spotlight-retina": "可選,58x58,iOS5/6 Spotlight搜索程序圖標(iPhone4S),低於iOS7不再支持",
"spotlight@2x[spotlight-retina7]": "可選,80x80,iOS7+ Spotlight搜索圖標(iPhone5/6/7/8)",
"spotlight@3x[spotlight-retina8]": "可選,120x120,iOS7+ Spotlight搜索圖標(iPhone6plus/7plus/8plus/X)
"settings-normal": "可選,29x29,iPhone4設置頁面程序圖標,低於iOS7不再支持",
"settings@2x[settings-retina]": "可選,58x58,iOS5+ Settings設置圖標(iPhone5/6/7/8)",
"settings@3x[settings-retina8]": "可選,87x87,iOS5+ Settings設置圖標(iPhone6plus/7plus/8plus/X)",
"notification@2x": "可選,40x40,iOS7+ 通知欄圖標(iPhone5/6/7/8)",
"notification@3x": "可選,60x60,iOS7+ 通知欄圖標(iPhone6plus/7plus/8plus/X)"
},
"ipad":{
"normal": "可選,72x72,iPad普通屏幕程序圖標,低於iOS7不再支持",
"retina": "可選,144x144,iPad高分屏程序圖標,低於iOS7不再支持",
"app[normal7]": "可選,76x76,iOS7+程序圖標",
"app@2x[retina7]": "可選,152x152,iOS7+程序圖標(高分屏)",
"proapp@2x": "可選,167x167,iOS9+程序圖標(iPad Pro)",
"spotlight-normal": "可選,50x50,iPad Spotlight搜索程序圖標,低於iOS7不再支持",
"spotlight-retina": "可選,100x100,iPad高分屏Spotlight搜索程序圖標,低於iOS7不再支持",
"spotlight[spotlight-normal7]": "可選,40x40,iOS7+ Spotlight搜索圖標",
"spotlight@2x[spotlight-retina7]": "可選,80x80,iOS7+ Spotlight搜索圖標(高分屏)",
"settings[settings-normal]": "可選,29x29,iOS5+ 設置圖標",
"settings@2x[settings-retina]": "可選,58x58,iOS5+ 設置圖標(高分屏)",
"notification": "可選,20x20,iOS7+ 通知欄圖標",
"notification@2x": "可選,40x40,iOS7+ 通知欄圖標(高分屏)"
}
},
"android":{
"ldpi": "可選,48x48", //已廢棄
"mdpi": "可選,48x48", //已廢棄
"hdpi": "可選,72x72",
"xhdpi": "可選,96x96",
"xxhdpi": "可選,144x144",
"xxxhdpi": "可選,192x192"
}
},
雲端打包時要求所有圖標路徑都相對於應用下”.manifest”目錄。
提交雲端打包時需做路徑轉換,請在HBuilderX的manifest.json可視化界面“(App)圖標配置”中操作設置
splashscreen
應用啓動圖配置,json格式數據,分別包含Android和iOS平臺的配置項:
"splashscreen":{
"ios":{
"iphone":{
"default": "可選,320x480,iPhone3(G/GS)啓動圖片", // portrait480h,兼容老設備,將廢棄
"retina35": "可選,640x960,3.5英寸設備(iPhone4/4S)啓動圖片,支持iPhone4/4S時必選", // portrait480h@2x
"retina40": "可選,640x1136,4.0英寸設備(iPhone5/5S)啓動圖片,支持iPhone5/5S顯示時必選", // portrait-568h@2x
"retina40l":"可選,1136x640,4.0英寸設備(iPhone5/5S)橫屏啓動圖片,支持iPhone5/5S橫屏顯示時必選", // landscape-568h@2x
"retina47": "可選,750x1334,4.7英寸設備(iPhone6/7/8)啓動圖片,支持iPhone6/7/8時必選", // portrait-667h@2x
"retina47l": "可選,1334x750,4.7英寸設備(iPhone6/7/8)橫屏啓動圖片,支持iPhone6/7/8橫屏顯示時必選", // landscape-667h@2x
"retina55": "可選,1242x2208,5.5英寸設備(iPhone6/7/8Plus)啓動圖片,支持iPhone6/7/8Plus時必選", // portrait-736h@3x
"retina55l": "可選,2208x1242,5.5英寸設備(iPhone6/7/8Plus)橫屏啓動圖片,支持iPhone6/7/8Plus橫屏顯示時必選", // landscape-736h@3x
"iphonex": "可選,1125x2436,5.8英寸設備(iPhoneX/XS)啓動圖片,支持iPhoneX/XS時必選", // portrait-812h@3x
"iphonexl": "可選,2436x1125,5.8英寸設備(iPhoneX/XS)橫屏啓動圖片,支持iPhoneX/XS橫屏顯示時必選", // landscape-812h@3x
"portrait-896h@2x": "可選,828x1792,6.1英寸設備(iPhoneXR)啓動圖片,支持iPhone XR(iOS12+)時必選",
"landscape-896h@2x": "可選,1792x828,6.1英寸設備(iPhoneXR)iPhoneXR橫屏啓動圖片,支持iPhone XR(iOS12+)橫屏顯示時必選",
"portrait-896h@3x": "可選,1242x2688,6.5英寸設備(iPhoneXS Max)啓動圖片,支持iPhone XS Max(iOS12+)時必選",
"landscape-896h@3x": "可選,2688x1242,6.5英寸設備(iPhoneXS Max)橫屏啓動圖片,支持iPhone XS Max(iOS12+)橫屏顯示時必選"
},
"ipad":{
"portrait": "可選,768x1004,iPad豎屏無狀態欄啓動圖片(兼容iOS5/6),僅支持iOS5/6的iPad時必選", //兼容老設備iOS5/6,將廢棄
"portrait-retina": "可選,1536x2008,iPad高分屏豎屏無狀態欄啓動圖片(兼容iOS5/6),僅支持iOS5/6的iPad時必選", //兼容老設備iOS5/6,將廢棄
"landscape": "可選,1024x748,iPad橫屏無狀態欄啓動圖片(兼容iOS5/6),僅支持iOS5/6的iPad時必選", //兼容老設備iOS5/6,將廢棄
"landscape-retina": "可選,2048x1496,iPad高分屏橫屏啓動圖片(兼容iOS5/6),僅支持iOS5/6的iPad時必選", //兼容老設備iOS5/6,將廢棄
"portrait7": "可選,768x1024,9.7/7.9英寸iPad/mini豎屏啓動圖片 ,支持iPad/mini(iOS7+)時必選", // portrait-1024h
"landscape7": "可選,1024x768,9.7/7.9英寸iPad/mini橫屏啓動圖片,支持iPad/mini(iOS7+)橫屏顯示時必選", // landscape-1024h
"portrait-retina7": "可選,1536x2048,9.7/7.9英寸iPad/mini高分屏豎屏圖片,支持iPad/mini(iOS7+)時必選", // portrait-1024h@2x
"landscape-retina7": "可選,2048x1536,9.7/7.9英寸iPad/mini高分屏橫屏啓動圖片,支持iPad/mini(iOS7+)橫屏顯示時必選", // landscape-1024h@2x
"portrait-1112h@2x":"可選,1668x2224,10.5英寸iPad Pro豎屏啓動圖片,支持10.5英寸iPad Pro(iOS8+)時必選",
"landscape-1112h@2x":"可選,2224x1668,10.5英寸iPad Pro橫屏啓動圖片,支持10.5英寸iPad Pro(iOS8+)橫屏顯示時必選",
"portrait-1194h@2x":"可選,1668x2388,11英寸iPad Pro豎屏啓動圖片,支持11英寸iPad Pro(iOS10+)時必選",
"landscape-1194h@2x":"可選,2388x1668,11英寸iPad Pro橫屏啓動圖片,支持11英寸iPad Pro(iOS10+)橫屏顯示時必選",
"portrait-1366h@2x":"可選,2048x2732,12.9英寸iPad Pro豎屏啓動圖片,支持12.9英寸iPad Pro(iOS10+)時必選",
"landscape-1366h@2x":"可選,2732x2048,12.9英寸iPad Pro橫屏啓動圖片,支持12.9英寸iPad Pro(iOS10+)橫屏顯示時必選"
}
},
"android":{
"ldpi": "必選,320x442,低密度屏幕啓動圖片",
"mdpi": "必選,240x282,中密度屏幕啓動圖片",
"hdpi": "必選,480x762,高密度屏幕啓動圖片",
"xhdpi": "必選,720x1242,720P高密度屏幕啓動圖片",
"xxhdpi": "必選,1080x1882,1080P高密度屏幕啓動圖片"
}
},
雲端打包時要求所有圖標路徑都相對於應用下”.manifest”目錄。
提交雲端打包時需做路徑轉換,請在HBuilderX的manifest.json可視化界面“(App)啓動圖配置”中操作設置
plugins
第三方SDK配置,json格式數據
鍵名爲模塊名稱,如下爲“個推”配置數據:
"plugins":{ // 第三方sdk配置
"push": { // 模塊名稱
"igexin":{ // 個推SDK參數配置
"appid": "pPyZWvH3Fa6PXba10aJ009", // 個推的appid
"appkey": "b7dOGlNPHR7pqwUxDhpTi4", // 個推的appkey
"appsecret": "IxVYAT9qws8dlNElaTMvg1", // 個推的appsecret
"icons": { // 推送圖片配置
"push": { // push圖標,規格與應用圖片一致,不配置則默認使用push圖標
"ldpi": "可選,48x48",
"mdpi": "可選,48x48",
"hdpi": "可選,72x72",
"xhdpi": "可選,96x96",
"xxhdpi": "可選,144x144",
"xxxhdpi": "可選,192x192"
},
"small": { // 小圖標,png格式圖片,僅使用alpha圖層
"ldpi": "可選,18*18",
"mdpi": "可選,24*24",
"hdpi": "可選,36*36",
"xhdpi": "可選,48*48",
"xxhdpi": "可選,72*72"
},
"description": "推送圖標"
}
}
}
}
請在HBuilderX的manifest.json可視化界面“(App)SDK配置”中操作設置