简体中文
uni-app x的Android基础库体积是7M,打包后的apk体积是基础库的体积加上开发者的代码及代码引用的模块的体积。有些模块涉及so库,覆盖的cpu指令越多,包体积越大。
在uni-app js引擎版中,内置模块如video,是开发者在manifest.json中手动勾选配置的。
但在uni-app x中,不需要手动配置。
HBuilderX3.93版本起,编译器支持扫描代码,摇树treeShaking,自动引入或剔除不需要的内置模块。
如应用中没有使用video组件相关功能,将不再包含video内置模块,减少安装包体积。
摇树注意事项:
当你打包自定义基座时,如果你的工程代码没有使用video、定位、相册、摄像头等涉及三方sdk或敏感权限的api,打出的自定义基座包就不会包含这些组件和api的功能,那么在这些自定义基座上运行时,调用相关的组件和api就会报错。
此时您需要在工程中写相关的代码,如引用video组件或调用定位api,保存代码后重新打包自定义基座,才会包含相关模块。
您在工程中下载的ext api、三方uts插件也同理,没有引用就不会打进去。
摇树不支持 provider
机制,定位(uni-getLocation) 和 支付(uni-payment) 模块需要手动配置使用 Provider 依赖的三方SDK模块。
uni-ad
uni-ad广告联盟模块(HBuilderX4.0+
)
注意:此模块仅包含基础广告模块,配置聚合广告平台需手动配置,详情参考uni-ad章节
uni-canvas
canvas画布组件模块(HBuilderX4.25+
)
uni-chooseLocation
使用地图选择位置模块(HBuilderX4.33+
)
uni-cloud-client 调用uniCloud云函数/云对象模块
uni-createInnerAudioContext
音频模块(HBuilderX4.33+
)
uni-createRequestPermissionListener
监听权限申请模块(HBuilderX4.0+
)
注意:HBuilderX4.0版本新增,仅App-Android平台支持。
uni-createWebviewContext 创建 web-view 组件的上下文对象模块
uni-facialRecognitionVerify uni实人认证模块
uni-fileSystemManager
文件管理模块(HBuilderX3.99+
)
uni-getLocation 定位模块
注意:此模块仅包含定位provider管理功能,需手动配置使用的定位实现模块,详情参考uni-getlocation章节
uni-getNetworkType 获取网络类型模块
uni-getProvider
获取服务供应商模块(HBuilderX4.11+
)
uni-installApk
安装apk模块(HBuilderX3.99+
)
注意:仅App-Android平台支持。
uni-map-tencent
map地图组件模块(HBuilderX4.31+
)
uni-media 多媒体相关API模块
uni-network 网络请求(文件上传/下载)模块
uni-payment uni-payment请求支付模块
注意:此模块仅包含基础支付模块,需手动配置支付方式,详情参考uni-payment章节
uni-push
uni-push统一推送模块(HBuilderX3.97+
)
uni-shareWithSystem
系统分享模块(HBuilderX4.33+
)
uni-verify
App一键登录模块(HBuilderX3.99+
)
uni-video video视频组件模块
uni-virtualPayment
虚拟支付模块(HBuilderX4.25+
)
uni-websocket WebSocket模块
再次强调,以上模块不属于ext组件或api,是内置模块。但如果你的代码中没有使用这些组件和api,打正式包或自定义基座时会被摇掉。
注意
uts插件中暂不支持摇树,如果uts插件中使用了以上模块,需在使用此uts插件的 uni-app x 项目 manifest.json 文件的 app -> distribute -> modules 下手动添加对应节点:
//以下示例手动添加 uni-media 模块
modules:{
"uni-media":{}
}
开屏广告兼容性
Web | Android | iOS |
---|---|---|
x | 3.99 | 4.22 |
uni-ad 是DCloud提供的聚合广告服务,使用前需先登录 uni-ad 广告联盟 开通。
在uni-app x客户端,uni-ad是一个独立模块。该SDK已经在工信部完成SDK备案,确保隐私合规。
广告包括很多形式,其中有的需要开发代码调用,比如激励视频广告,另参考:uni.createRewardedVideoAd
使用开屏广告不需要调用任何API,应用启动时会自动拉取并展示开屏广告。
这也导致 uni-ad 模块无法参与摇树。需要开发者在 manifest.json 中手动配置,打包后才能生效。
使用 uni-ad 模块需在 manifest.json 文件中添加 uni-ad 节点,并配置使用的广告 SDK。
Tips
为确保隐私合规及广告的正常展示,开发者需要在用户同意隐私政策时,主动调用UTSAndroid.setPrivacyAgree(true)。参考代码:
// #ifdef APP-ANDROID
UTSAndroid.setPrivacyAgree(true)
// #endif
Tips
HBuilderX4.31 支持打包界面直接勾选广告渠道,参考App打包配置。
在 app -> distribute -> modules 下添加 uni-ad 节点:
modules:{
"uni-ad":{
"gdt":{},
"gm":{},
"ks":{},
"sigmob":{},
"bd":{}
}
}
其中 uni-ad 下的节点表示要聚合的广告平台:
标识 | 广告平台名称 | Web | Android | iOS |
---|---|---|---|---|
gdt | 腾讯优量汇广告联盟 | x | 3.99 | 4.22 |
gm | 穿山甲GroMore | x | 3.99 | 4.22 |
ks | 快手广告联盟 | x | 3.99 | 4.22 |
bd | 百度百青藤广告联盟 | x | 3.99 | 4.22 |
sigmob | Sigmob广告联盟 | x | 3.99 | 4.22 |
hw | 华为鲸鸿动能 | x | 4.31 | x |
bz | AdScope倍孜广告 | x | 4.31 | x |
zy | Octopus章鱼移动广告 | x | 4.31 | 4.31 |
fl | 泛连 | x | 4.31 | x |
jl | 聚力阅盟 | x | 4.31 | x |
gg | google AdMob | x | 4.31 | 4.31 |
pg | Pangle | x | 4.31 | 4.31 |
inmobi | inMobi | x | 4.31 | 4.31 |
ironsource | ironSource | x | 4.31 | 4.31 |
liftoff | Liftoff | x | 4.31 | 4.31 |
meta | Meta Audience Network | x | 4.31 | 4.31 |
mintegral | Mintegral | x | 4.31 | 4.31 |
unity | Unity Ads | x | 4.31 | 4.31 |
添加相应的节点,云端打包就会将对应的广告平台 SDK 打包到最终安装包中。
注意:
armeabi-v7a
和arm64-v8a
两个CPU平台。注意事项
开屏广告展示前会先显示splash启动界面
,等待开屏广告服务器返回数据后渲染开屏广告,超过2.5秒未成功加载广告则不显示开屏广告,直接进入应用首页。
app平台默认启动界面
为白色(暗黑模式下为黑色),为了避免等待加载开屏广告时白屏,建议开通开屏广告后在manifest中配置启动界面
,详情参考splash启动界面
广告SDK在运行时可能会下载apk安装文件,占用手机的存储空间。下表列举了广告SDK的apk下载路径。开发者可以按需删除指定apk文件。
Tips
cache
或files
目录下,直接删除可能会造成应用部分功能异常。广告平台名称 | apk缓存路径 |
---|---|
腾讯优量汇广告联盟 | /sdcard/Android/data/应用包名/cache/com_qq_e_download/apk |
穿山甲GroMore | /sdcard/Android/data/应用包名/files/Download |
快手广告联盟 | /sdcard/Android/data/应用包名/files/ksadsdk/Download |
百度百青藤广告联盟 | /sdcard/Android/data/应用包名/files/bddownload |
Sigmob广告联盟 | /data/data/应用包名/cache/wind/webCache/ |
AdScope倍孜广告 | /sdcard/Android/data/应用包名/files/Beizi/download/ |
Octopus章鱼移动广告 | /sdcard/Android/data/应用包名/files/Octopus/download/ |
泛连 | /data/data/应用包名/cache/ |
HBuilderX 4.11+ 新增支持 uni-payment 请求支付
在uni-app x客户端,uni-payment是一个独立模块。需要开发者在 manifest.json 中手动配置,并提交云端打包后才能生效。
使用 uni-payment 模块需在 manifest.json 文件中添加如下配置:
在 app -> distribute -> modules 下添加 uni-payment 节点:
modules:{
"uni-payment": {
"alipay": {},//支付宝支付
"wxpay": {//微信支付
"android": {},
"ios": {
"appid": "wxd569c7238830733b",
"universalLink": "https://uniappx.dcloud.net.cn/ulink/"
}
}
}
}
其中 uni-payment 下的节点表示要聚合的支付方式:
标识 | 支付方式 |
---|---|
alipay | 支付宝支付 |
wxpay | 微信支付 |
添加相应的节点,云端打包就会将对应的支付 SDK 打包到最终安装包中。
alipay
节点表示应用云端打包包含支付宝SDKappid
:微信开放平台申请的应用ID(AppID)universalLink
:iOS平台的通用链接(Universal Link),通用链接配置参考:https://uniapp.dcloud.net.cn/tutorial/app-ios-capabilities.html#通用链接-universal-link
注意:通用链接必须与微信开放平台 “管理中心” > “应用详情” > “开发信息” 中的“Universal Links”项中配置一致app-ios平台支付模块需HBuilderX4.18及以上版本
HBuilderX 4.25+ 新增支持 provider 机制的获取定位API(支持system、tencent定位)
在uni-app x客户端,uni-getLocation是一个独立模块。需要开发者在 manifest.json 中手动配置,并提交云端打包后才能生效。
使用 uni-getLocation 模块需在 manifest.json 文件中添加如下配置:
其中 uni-getLocation 下的节点表示要聚合的定位方式:
标识 | 定位方式 |
---|---|
system | 系统定位 |
tencent | 腾讯定位 |
添加相应的节点,云端打包就会将对应的定位 SDK 打包到最终安装包中。
在 app -> distribute -> modules 下添加 uni-getLocation 节点:
modules:{
"uni-getLocation":{
"system":{},
"tencent":{}
}
}
使用腾讯定位SDK需到 腾讯位置服务 官网申请TencentLBSAPIKey,并配置到应用中。
需在项目根目录下的 Info.plist 中配置,包括以下内容:
配置教程参考: iOS原生配置文件Info.plist文档
以下为配置示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>TencentLBSAPIKey</key>
<string>腾讯位置服务官网申请的Key</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>允许使用定位权限吗</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>允许仅在app运行期间使用定位权限</string>
<key>NSLocationTemporaryUsageDescriptionDictionary</key>
<dict>
<key>PurposeKey</key>
<string>这里需要您临时授权高精度定位权限,一次临时授权时效仅app一个周期内, 每次硬启动都需要临时授权</string>
</dict>
<key>UIBackgroundModes</key>
<array>
<string>location</string>
</array>
</dict>
</plist>
在项目根目录下添加 AndroidManifest.xml 文件,详情参考:Android原生应用清单文件。将申请的 key 配置到项目 AndroidManifest.xml 的 application 节点中,如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
>
<application>
<!-- 将申请到的 key 配置在 android:value 属性中 -->
<meta-data android:name="TencentMapSDK" android:value="您申请的Key" />
</application>
</manifest>
使用腾讯地图需到 腾讯位置服务 官网申请TencentLBSAPIKey,并配置到应用中。
需在项目根目录下的 Info.plist配置腾讯地图的 TencentLBSAPIKey,然后 iOS 需要打自定义基座才可以生效。
配置教程参考: iOS原生配置文件Info.plist文档
以下为配置示例:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>TencentLBSAPIKey</key>
<string>腾讯位置服务官网申请的Key</string>
</dict>
</plist>
在项目根目录下添加 AndroidManifest.xml 文件,详情参考:Android原生应用清单文件。将申请的 key 配置到项目 AndroidManifest.xml 的 application 节点中,如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"
>
<application>
<!-- 将申请到的 key 配置在 android:value 属性中 -->
<meta-data android:name="TencentMapSDK" android:value="您申请的Key" />
</application>
</manifest>