uni-app x App 平台标准运行基座全解析:包名签名、功能模块与权限配置实战

发布时间:2026/9/19 22:10:57
uni-app x App 平台标准运行基座全解析:包名签名、功能模块与权限配置实战 uni-app x App 平台标准运行基座全解析包名签名、功能模块与权限配置实战【免费下载链接】uni-appA cross-platform framework using Vue.js项目地址: https://gitcode.com/gh_mirrors/un/uni-app本文以 uni-app xVue.js 跨平台框架的 App 平台运行基座机制为核心完整梳理标准基座在 Android 与 iOS 两端的包名、签名、Url Scheme、Capabilities 等身份信息逐一解读标准基座内置的二十余个功能模块并给出 Android 标准基座的完整权限清单。读者阅读后可明确标准基座与自定义基座的适用边界知道哪些 API 可直接在标准基座上真机调试、哪些能力必须打包自定义基座才能生效从而在 docs/tutorial/run-app.md 的真机运行流程中少走弯路。一、运行基座让代码跑起来的载体在 HBuilderX 中运行 iOS/Android 应用时DCloud 提供了运行基座App Playground的概念。运行基座是一个预先打包好的原生 App 壳开发者的代码可以动态运行在这个基座之上无需经过完整的打包流程即可把代码跑起来在手机上查看效果无需在本地配置原生的打包环境Android Studio / Xcode 工程降低入门门槛在原生层不变的前提下js 等动态代码可以在基座上动态加载实现热重载Hot Reload。以 uni-app x 为例Android 端将 uts 代码编译为 Kotlinkt后通过 dex 动态加载来实现热刷新详见 真机运行文档这意味着修改代码后差量同步到手机、界面即时刷新不必反复打包。运行基座分为两类类型使用的包名、证书与三方 SDK 配置适用场景标准基座DCloud 官方提供的包名、证书和三方 SDK 配置低门槛快速调试覆盖大部分 API自定义基座开发者自己的包名、证书与三方 SDK 配置修改包名/证书、集成三方 SDK、配置权限与原生插件如果开发者需要修改包名、证书、应用名称、三方 SDK 等原生信息就需要切换到自定义基座。二、Android 平台标准基座信息uni-app x 的 Android 标准基座身份信息如下包名io.dcloud.uniappx签名信息SHA2565975dd84fbd6648be4afdfe4cc3025b4c9f8eb6131519e44ff15511a0ab9a7d3SHA171544e0a6f064614e83f6ad2a4f318df349c1295MD5957764ac1b55e0c38bae22ba2a145b98注册的 Url Schemeuniappx这些信息在开发调试阶段有直接实用价值例如在开发「通过 URL Scheme 唤起应用」「分享回跳」「支付回调」等能力时需要以标准基座的包名与签名作为校验依据而 uni-push 推送等能力正是因为需要关联包名及签名信息才必须在自定义基座中才能完整体验详见 uni-push 文档。从仓库源码看 Android 包名与 Scheme 的注册方式在仓库的 src/AndroidManifest.xml 中可以看到 Android 侧 URL Scheme 的标准注册写法通过UniLaunchProxyActivity配合intent-filter声明android.intent.action.VIEW与android.intent.category.BROWSABLE再以data android:scheme.../注册自定义 Schemeactivity android:nameio.dcloud.uniapp.UniLaunchProxyActivity android:exportedtrue intent-filter action android:nameandroid.intent.action.VIEW / category android:nameandroid.intent.category.DEFAULT / category android:nameandroid.intent.category.BROWSABLE / data android:schemehellouniappx/data data android:schemeuniappxhello/data /intent-filter /activity标准基座的uniappx://正是以同样的机制注册生效。而包名applicationId则在manifest的package属性中声明——标准基座使用io.dcloud.uniappx本仓库示例工程Hello uni-app x则使用自己的io.dcloud.hellouniappx两者互不冲突。三、iOS 平台标准基座信息uni-app x 的 iOS 标准基座身份信息如下包名io.dcloud.uniappxCapabilities苹果开发者平台开启的能力Access Wi-Fi InformationAssociated DomainsPush NotificationsSign In with AppleTime Sensitive Notifications注册的 Url Schemeuniappx注册的通用链接Universal Linkhttps://uniappx.dcloud.net.cn/ulink重要注意iOS 平台标准基座需要重签名才能使用重签名后会改变包名信息从而导致注册的通用链接失效。也就是说一旦你对标准基座做了重签名处理依赖 Universal Link 的能力如微信支付、分享等需要配置 universalLink 的场景将无法在标准基座上正常验证。另外需要说明的是受苹果企业证书分发政策影响自 2022 年 9 月 14 日起 iOS 真机设备不再支持使用标准真机运行基座开发者需使用自定义基座向苹果申请证书制作或在 Mac 电脑上使用 iOS 模拟器进行调试详见 真机运行文档。模拟器不受该限制Mac 上 Xcode 自带的 iOS 模拟器可直接使用标准基座运行。四、标准基座内置功能模块清单标准基座内置了 uni-app x 常用的大部分能力模块以下是完整清单含模块说明与仓库对应实现模块说明关联文档uni-ad广告联盟含gdt腾讯优量汇广告联盟 SDK广告组件见 ad广告 API 见 create-interstitial-ad、create-rewarded-video-aduni-canvascanvas 画布组件canvas 组件uni-cloud-clientuniCloud 云函数 / 云对象能力云函数相关文档见 docs/uniclouduni-createRequestPermissionListenerAndroid 平台监听权限申请create-request-permission-listeneruni-createWebviewContext创建 web-view 组件的上下文对象create-webview-contextuni-facialRecognitionVerifyuni 实人认证facial-recognition-meta-infouni-fileSystemManager文件管理get-file-system-manageruni-location获取位置信息包含system系统定位与tencent腾讯定位两个 providerget-location。注意HBuilderX 4.61- 之前模块名为uni-getLocationuni-getNetworkType获取网络类型get-network-typeuni-getProvider获取服务供应商get-provideruni-installApkAndroid 平台安装 apkinstall-apkuni-media多媒体相关 API选择图片/视频等choose-imageuni-network网络请求含文件上传/下载requestuni-payment请求支付包含alipay支付宝支付与wxpay微信支付request-paymentuni-pushuni-push 统一推送uni-pushuni-verify一键登录get-univerify-manageruni-videovideo 视频组件video 组件uni-virtualPayment虚拟支付virtual-paymentuni-websocketWebSocketwebsocket-global仓库中可对照的模块实现上述模块在仓库的 src/uni_modules 目录中均有对应的插件实现目录例如uni-location、uni-location-system、uni-location-tencent、uni-network、uni-payment、uni-payment-alipay、uni-payment-wxpay、uni-verify、uni-video、uni-virtualPayment、uni-websocket、uni-media、uni-installApk、uni-getNetworkType、uni-getProvider、uni-createRequestPermissionListener、uni-createWebviewContext、uni-fileSystemManager、uni-ad配置于 manifest等读者可直接阅读这些目录下的.uts源码了解各 API 的 Android/iOS 原生调用链。同时示例工程 src/manifest.json 中展示了在 App 端按平台声明模块的配置方式以 app-harmony 平台为例app-harmony: { distribute: { bundleName: io.dcloud.uniappx, modules: { uni-payment: { alipay: {}, wxpay: {} }, uni-location: { system: {} }, uni-push: {}, uni-map: { tencent: {} }, uni-verify: {}, uni-facialVerify: {}, uni-oauth: { huawei: { client_id: 6917567445824957002 }, weixin: { appid: wxd1b990d3136e369c } }, uni-share: { weixin: { appid: wxd1b990d3136e369c } } } } }可以对照看出标准基座内置模块即对应 manifest 中可直接使用的模块集合而接入自有三方 SDK微信、支付、地图等时则需要在 manifest 中填写自己的appid、client_id、key等参数后打包自定义基座。使用标准基座调试时的几个实用结论uni-pushHBuilderX 4.25 以前版本的标准基座并不包含该模块4.25 及以上版本的标准基座包含 uni-push可直接体验创建本地通知消息相关业务。但完整消息推送厂商通道推送需要关联包名及签名需打包自定义基座uni-push 文档。uni-ad标准基座内置的是测试广告位如插屏广告测试位 id1111111113、激励视频测试位 id1507000689无法产生真实收益正式开发需配置自己的广告位 id 并打包自定义基座后生效create-interstitial-ad、create-rewarded-video-ad。provider 类 API定位、支付、分享、登录标准基座 Android 端需要在 manifest.json 中配置才能获取到对应 provideriOS 端不需要而自定义基座两端都需要配置provider 文档。支付/分享/登录三方 SDK支付宝支付、微信分享、微信登录等场景无需自定义基座真机运行即可直接开发调试见 request-payment、share、sign-in而微信支付因涉及支付回调签名校验通常需要自定义基座。实人认证从 HBuilderX 3.99 起标准基座真机运行可直接体验实人认证费用扣除开发者的费用无需自定义基座facial-recognition-meta-info。五、Android 平台标准基座权限清单Android 平台标准基座尽量包含所有可能用到的权限以便开发过程中可调用所有系统 API。标准基座完整权限声明如下!-- 网络权限 -- uses-permission android:nameandroid.permission.INTERNET / !-- 存储卡权限 -- uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE / !-- 通过GPS得到精确位置 -- uses-permission android:nameandroid.permission.ACCESS_FINE_LOCATION / !-- 通过网络得到粗略位置 -- uses-permission android:nameandroid.permission.ACCESS_COARSE_LOCATION / !-- 访问网络某些位置信息需要从网络服务器获取 -- uses-permission android:nameandroid.permission.INTERNET / !-- 访问WiFi状态需要WiFi信息用于网络定位 -- uses-permission android:nameandroid.permission.ACCESS_WIFI_STATE / !-- 修改WiFi状态发起WiFi扫描, 需要WiFi信息用于网络定位 -- uses-permission android:nameandroid.permission.CHANGE_WIFI_STATE / !-- 访问网络状态, 检测网络的可用性需要网络运营商相关信息用于网络定位 -- uses-permission android:nameandroid.permission.ACCESS_NETWORK_STATE / !-- 访问网络的变化, 需要某些信息用于网络定位 -- uses-permission android:nameandroid.permission.CHANGE_NETWORK_STATE / !-- 蓝牙扫描权限 -- uses-permission android:nameandroid.permission.BLUETOOTH / uses-permission android:nameandroid.permission.BLUETOOTH_ADMIN / uses-permission android:nameandroid.permission.BLUETOOTH_SCAN android:usesPermissionFlagsneverForLocation / uses-permission android:nameandroid.permission.BLUETOOTH_CONNECT / !-- 前台service权限 -- uses-permission android:nameandroid.permission.FOREGROUND_SERVICE / !-- 后台定位权限 -- uses-permission android:nameandroid.permission.ACCESS_BACKGROUND_LOCATION / !-- A-GPS辅助定位权限方便GPS快速准确定位 -- uses-permission android:nameandroid.permission.ACCESS_LOCATION_EXTRA_COMMANDS / !-- 安装应用权限 -- uses-permission android:nameandroid.permission.REQUEST_INSTALL_PACKAGES / !-- 其它权限 -- uses-permission android:nameandroid.permission.ACCESS_CHECKIN_PROPERTIES/ uses-permission android:nameandroid.permission.ACCESS_MOCK_LOCATION/ uses-permission android:nameandroid.permission.ACCESS_SURFACE_FLINGER/ uses-permission android:nameandroid.permission.ADD_SYSTEM_SERVICE/ uses-permission android:nameandroid.permission.BATTERY_STATS/ uses-permission android:nameandroid.permission.BRICK/ uses-permission android:nameandroid.permission.BROADCAST_PACKAGE_REMOVED/ uses-permission android:nameandroid.permission.BROADCAST_STICKY/ uses-permission android:nameandroid.permission.CALL_PHONE/ uses-permission android:nameandroid.permission.CALL_PRIVILEGED/ uses-permission android:nameandroid.permission.CAMERA/ uses-permission android:nameandroid.permission.CHANGE_COMPONENT_ENABLED_STATE/ uses-permission android:nameandroid.permission.CHANGE_CONFIGURATION/ uses-permission android:nameandroid.permission.CLEAR_APP_CACHE/ uses-permission android:nameandroid.permission.CLEAR_APP_USER_DATA/ uses-permission android:nameandroid.permission.DELETE_CACHE_FILES/ uses-permission android:nameandroid.permission.DELETE_PACKAGES/ uses-permission android:nameandroid.permission.DEVICE_POWER/ uses-permission android:nameandroid.permission.DIAGNOSTIC/ uses-permission android:nameandroid.permission.DISABLE_KEYGUARD/ uses-permission android:nameandroid.permission.DUMP/ uses-permission android:nameandroid.permission.EXPAND_STATUS_BAR/ uses-permission android:nameandroid.permission.FACTORY_TEST/ uses-permission android:nameandroid.permission.FLASHLIGHT/ uses-permission android:nameandroid.permission.FORCE_BACK/ uses-permission android:nameandroid.permission.FOTA_UPDATE/ uses-permission android:nameandroid.permission.GET_ACCOUNTS/ uses-permission android:nameandroid.permission.GET_PACKAGE_SIZE/ uses-permission android:nameandroid.permission.GET_TASKS/ uses-permission android:nameandroid.permission.HARDWARE_TEST/ uses-permission android:nameandroid.permission.INJECT_EVENTS/ uses-permission android:nameandroid.permission.INSTALL_PACKAGES/ uses-permission android:nameandroid.permission.INTERNAL_SYSTEM_WINDOW/ uses-permission android:nameandroid.permission.INTERNET/ uses-permission android:nameandroid.permission.MANAGE_APP_TOKENS/ uses-permission android:nameandroid.permission.MASTER_CLEAR/ uses-permission android:nameandroid.permission.MODIFY_AUDIO_SETTINGS/ uses-permission android:nameandroid.permission.MODIFY_PHONE_STATE/ uses-permission android:nameandroid.permission.MOUNT_UNMOUNT_FILESYSTEMS/ uses-permission android:nameandroid.permission.NFC/ uses-permission android:nameandroid.permission.PERSISTENT_ACTIVITY/ uses-permission android:nameandroid.permission.PROCESS_OUTGOING_CALLS/ uses-permission android:nameandroid.permission.READ_CALENDAR/ uses-permission android:nameandroid.permission.READ_CONTACTS/ uses-permission android:nameandroid.permission.READ_FRAME_BUFFER/ uses-permission android:nameandroid.permission.READ_INPUT_STATE/ uses-permission android:nameandroid.permission.READ_LOGS/ uses-permission android:nameandroid.permission.READ_OWNER_DATA/ uses-permission android:nameandroid.permission.READ_SMS/ uses-permission android:nameandroid.permission.READ_SYNC_SETTINGS/ uses-permission android:nameandroid.permission.READ_SYNC_STATS/ uses-permission android:nameandroid.permission.REBOOT/ uses-permission android:nameandroid.permission.RECEIVE_BOOT_COMPLETED/ uses-permission android:nameandroid.permission.RECEIVE_MMS/ uses-permission android:nameandroid.permission.RECEIVE_SMS/ uses-permission android:nameandroid.permission.RECEIVE_WAP_PUSH/ uses-permission android:nameandroid.permission.RECORD_AUDIO/ uses-permission android:nameandroid.permission.REORDER_TASKS/ uses-permission android:nameandroid.permission.RESTART_PACKAGES/ uses-permission android:nameandroid.permission.SEND_SMS/ uses-permission android:nameandroid.permission.SET_ACTIVITY_WATCHER/ uses-permission android:nameandroid.permission.SET_ALWAYS_FINISH/ uses-permission android:nameandroid.permission.SET_ANIMATION_SCALE/ uses-permission android:nameandroid.permission.SET_DEBUG_APP/ uses-permission android:nameandroid.permission.SET_ORIENTATION/ uses-permission android:nameandroid.permission.SET_PREFERRED_APPLICATIONS/ uses-permission android:nameandroid.permission.SET_PROCESS_FOREGROUND/ uses-permission android:nameandroid.permission.SET_PROCESS_LIMIT/ uses-permission android:nameandroid.permission.SET_TIME_ZONE/ uses-permission android:nameandroid.permission.SET_WALLPAPER/ uses-permission android:nameandroid.permission.SET_WALLPAPER_HINTS/ uses-permission android:nameandroid.permission.SIGNAL_PERSISTENT_PROCESSES/ uses-permission android:nameandroid.permission.STATUS_BAR/ uses-permission android:nameandroid.permission.SUBSCRIBED_FEEDS_READ/ uses-permission android:nameandroid.permission.SUBSCRIBED_FEEDS_WRITE/ uses-permission android:nameandroid.permission.SYSTEM_ALERT_WINDOW/ uses-permission android:nameandroid.permission.VIBRATE/ uses-permission android:nameandroid.permission.WAKE_LOCK/ uses-permission android:nameandroid.permission.WRITE_APN_SETTINGS/ uses-permission android:nameandroid.permission.WRITE_CALENDAR/ uses-permission android:nameandroid.permission.WRITE_CONTACTS/ uses-permission android:nameandroid.permission.WRITE_GSERVICES/ uses-permission android:nameandroid.permission.WRITE_OWNER_DATA/ uses-permission android:nameandroid.permission.WRITE_SETTINGS/ uses-permission android:nameandroid.permission.WRITE_SMS/ uses-permission android:nameandroid.permission.WRITE_SYNC_SETTINGS/ uses-permission android:nameandroid.permission.WRITE_EXTERNAL_STORAGE/ uses-permission android:namecom.android.launcher.permission.INSTALL_SHORTCUT/ uses-permission android:namecom.android.launcher.permission.UNINSTALL_SHORTCUT/ uses-permission android:nameandroid.permission.POST_NOTIFICATIONS/可以看出标准基座覆盖了网络、定位、存储、相机、录音、通讯录、短信、日历、蓝牙、NFC、通知等几乎全部系统能力声明。但注意权限声明齐全不代表自动授权Android 6.0 的动态权限如定位、相机、录音等危险权限仍需通过uni.requestSystemPermission、uni.createRequestPermissionListener等 API 在运行时向用户申请参考 request-system-permission 与 create-request-permission-listener。六、何时必须切换到自定义基座标准基座仅能更新热刷代码和资源文件以下改动必须打包自定义基座才能生效详见 真机运行文档修改 App 名称、图标、封面 splash、包名、证书修改 App 模块配置、三方 SDK 配置如微信、推送、地图、语音识别等修改 App 权限配置引入原生插件 / SDK其他 manifest.json 中注明需打包生效的配置。自定义基座的生成方式包括云打包自定义基座无需本地原生环境在 HBuilderX 发行菜单快捷键 CtrlU中执行产物存放在项目目录unpackage/debug下文件名为android_debug.apk、iOS_debug.ipa或Pandora_simulator_debug.app。一个项目只能保留最后一次生成的基座。离线打包自定义基座使用离线 SDK 在 Android Studio / Xcode 中编译HBuilderX 4.71 支持 Android已安装基座联调4.81 支持 iOS原生工程基座联调原生代码。另外注意自定义运行基座只能在 HBuilderX 中真机运行使用不可直接安装分发正式发版时需按正常打包流程重新打包。七、真机运行与日志排查速览通过 HBuilderX 顶部运行菜单、工具栏运行按钮或快捷键 CtrlR 进入运行入口选择运行到 Android App 基座或运行到 iOS App 基座在设备列表中选择已连接的手机或模拟器Android 支持 USB 与无线连接Mac 支持 Xcode 模拟器初次运行会安装真机运行插件插件内置标准运行基座运行成功后修改代码会差量同步并热刷console.log会打印到 HBuilderX 控制台。基座闪退时定位日志uni-app Android标准基座查看手机存储根目录/Android/data/io.dcloud.HBuilder/logs/io.dcloud.HBuilder/crash/自定义基座查看/Android/data/packageName/logs/packageName/crash/packageName 为 apk 包名uni-app x运行控制台勾选原生日志或查看应用沙盒 cache 缓存目录下的uni-crash目录标准基座与自定义基座均可包名为io.dcloud.uniappx详见 真机运行文档。八、关键注意事项汇总iOS 标准基座重签名会导致通用链接失效https://uniappx.dcloud.net.cn/ulink与包名强绑定重签名改变包名后 Universal Link 即失效iOS 真机不再支持标准基座自 2022 年 9 月 14 日起iOS 真机调试需自定义基座或 Mac 上的 iOS 模拟器系统版本要求HBuilderX 3.7.1 起标准基座要求 Android 5.0API Level 21及以上、iOS 10 及以上更低版本设备需自定义基座Android 标准基座权限齐全但动态权限仍需在运行时申请且上架应用应以 manifest.json 的最小权限配置为准避免隐私合规问题模块名变更uni-location在 HBuilderX 4.61- 之前模块名为uni-getLocation升级 HBuilderX 后注意模块配置与文档对照provider 获取标准基座 Android 端需在 manifest.json 中配置模块才能获取对应 provideriOS 端无需配置。综上标准基座是 uni-app x 开发调试的零成本入口它内置了覆盖大部分业务的 API 模块与完整的 Android 权限声明让开发者无需原生环境即可热刷新调试而涉及包名、签名、三方 SDK 与原生插件的场景则需按本文所述切换到自定义基座。结合仓库源码src/AndroidManifest.xml、src/manifest.json、src/uni_modules与 真机运行文档开发者可以快速定位标准基座各模块的实现与调试边界。【免费下载链接】uni-appA cross-platform framework using Vue.js项目地址: https://gitcode.com/gh_mirrors/un/uni-app创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询