提交 c164344c 编写于 作者: W wanganxp

x

上级 cea12100
......@@ -7,6 +7,8 @@ uni实人认证是DCloud与合作伙伴共同推出的金融级实人认证服
2. 客户端API,即本文
3. 服务器API,[详见](https://doc.dcloud.net.cn/uniCloud/frv/dev.html)
uni-id-pages,已经内置实人认证,从云端到客户端均已开发好并开源,推荐使用。[详情](https://doc.dcloud.net.cn/uniCloud/uni-id/app-x.html)
## uni.getFacialRecognitionMetaInfo() @getfacialrecognitionmetainfo
<!-- UTSAPIJSON.getFacialRecognitionMetaInfo.description -->
......
# 文件系统
# 文件系统
文件系统提供一套跨平台操作文件的管理接口,包括文件和目录的增删改名、获取信息、读写文件等常用功能。
通过[uni.getFileSystemManager](filemanager.md)可以获取到文件系统管理器,所有文件系统的管理操作通过 [FileSystemManager](filemanager.md#FileSystemManager) 来调用。
通过[uni.getFileSystemManager](get-file-system-manager.md)可以获取到文件系统管理器,所有文件系统的管理操作通过 [FileSystemManager](get-file-system-manager.md#FileSystemManager) 来调用。
```uts
const fs = uni.getFileSystemManager()
```
文件主要分两大类:
- 项目包文件:指 uni-app x 项目目录中添加的文件,比如static目录下的文件。Android发行后存放在assets目录下。
- 本地文件:指 uni-app x 应用在手机端运行时可访问的磁盘文件。又分以下目录:
+ 应用沙盒目录:App平台原生应用的沙盒目录,其中包括缓存文件目录和用户文件目录
* 缓存文件目录:App平台运行过程中框架保存缓存文件的目录
* 用户文件目录:App平台提供给开发者操作的本地文件目录
## 项目包文件
项目包文件放置应用首次加载时需要的文件,对于内容较大或需要动态更新的文件,不推荐添加到项目包文件中,可以在应用启动后联网将文件下载到本地。
推荐将文件放到static目录(uni_modules下也有static目录),详情参考[工程目录结构](https://uniapp.dcloud.net.cn/tutorial/project.html#static)
没有在static目录的静态文件(比如image src指定静态路径或import),发行后会变编译到与static同级的assets目录,其中的文件名会加入随机数以避免重名。
因为随机数的存在,导致很难使用FileSystemManager访问。所以还是推荐使用static目录。
**通过FileSystemManager访问项目包文件**
通过路径访问项目包文件需从项目根目录开始写文件路径,如:/static/uni.png、/uni_modules/xxx/static/clear.png。
- 代码包文件:指 uni-app x 项目目录中添加的文件,比如static目录下的文件。Android发行后存放在assets目录下。只读。
+ assets
+ hybrid
+ static
+ uni_modules
- 本地磁盘文件:指应用在手机端运行时可访问的磁盘文件。又分以下目录:
+ 应用外置沙盒目录(`uni.env.SANDBOX_PATH`):手机应用的沙盒目录,其中包括缓存文件目录和用户文件目录。在文件管理器中可看到。
* 缓存文件目录(`uni.env.CACHE_PATH`):手机运行过程中框架保存缓存文件的目录(cache),系统空间不足时会被自动清理掉
- uni-download :下载
- uni-media :拍照、相册选择
- uni-snapshot :App dom截图
- uni-crash :App崩溃日志
* 用户文件目录(`uni.env.USER_DATA_PATH`):提供给开发者操作的本地文件目录(files)
+ 应用内置沙盒目录(`uni.env.ANDROID_INTERNAL_SANDBOX_PATH`):存放框架的网络缓存(如网络图片、视频、web-view的缓存)、storage。
+ 沙盒外目录
## 代码包文件
代码包文件,是源码工程中的静态资源文件,由编译器打包到发行包(如apk)中。全平台都如此。
uni-app x的应用在安装后,代码包文件有4个目录:
- assets
- hybrid
- static
- uni_modules
这些目录的来源和作用,[详见](../compiler/README.md#static)
assets目录下文件有随机数的存在,很难使用FileSystemManager访问;hybrid下的文件用于web-view组件。\
所以通过FileSystemManager访问较多的是static目录。
FileSystemManager访问代码包文件时,直接写文件路径,如:/static/uni.png、/uni_modules/xxx/static/clear.png。
**示例**
假设static目录下有如下文件:"/static/list-mock/mock.json",要copy到沙盒的files目录(该目录的介绍详见下一章节),可使用如下代码:
```ts
let fileManager = uni.getFileSystemManager()
fileManager.copyFile({
srcPath: "/static/list-mock/mock.json",
destPath: `${uni.env.USER_DATA_PATH}/mock.json`,
success: function (res : FileManagerSuccessResult) {
console.log('success', res)
},
fail: function (res : UniError) {
console.log('fail', res)
},
complete: function (res : any) {
console.log("complete", res)
}
} as CopyFileOptions)
```
>注意:项目包文件仅可读取和复制,无法动态修改或删除。修改项目包文件需要重新发布新版本。
> 注意:代码包文件仅可读取和复制,无法动态修改或删除。修改代码包文件一般会copy到沙盒目录后再修改。
**真机运行注意**
App端真机运行期间会做特殊处理,将项目包文件同步到`应用沙盒目录`下的特定目录:
App端真机运行期间会做特殊处理,将代码包文件同步到`应用沙盒目录`下的特定目录:
- Android平台
保存在应用专属存储空间的外置存储空间根目录下的apps目录,通常为“/sdcard/Android/data/%应用包名%/apps/%应用AppID%/www/”
- iOS平台
保存在应用沙盒目录下的Documents/uni-app-x目录,通常为“/%应用沙盒目录%/Documents/uni-app-x/apps/%应用AppID%/www/”
## 本地文件
本地文件是指应用安装到设备(通常指手机)后,系统会提供一块独立的文件存储区域。在App端将会以应用维度隔离,即在同一台设备,不同应用间的本地文件不能直接相互访问。
## 本地磁盘文件
本地磁盘文件分沙盒内和沙盒外。
本地文件路径格式为:
沙盒内是指应用安装到设备(通常指手机)后,系统会提供一块独立的文件存储区域。以应用维度隔离,即在同一台设备,不同应用间的本地磁盘文件不能直接相互访问。
而沙盒目录,又分内置和外置。外置可以在Android手机自带的系统文件管理器里看到,并且用户可以改动。内置的保护级别更高,无法在系统文件管理器中看到。
本地磁盘文件路径格式为:
```
{{协议名}}://文件路径
```
> App端,协议名为"unifile",不应该直接拼写协议名路径访问本地文件,推荐使用uni.env中的目录常量获取本地文件目录的路径。
> App端,协议名为"unifile",不应该直接拼写协议名路径访问本地磁盘文件,推荐使用uni.env中的目录常量获取本地磁盘文件目录的路径。
本地文件沙盒目录,分内置和外置。外置可以在Android手机自带的系统文件管理器里看到,并且用户可以改动。内置的保护级别更高,无法在系统文件管理器中看到。
**通过uni.env的目录常量访问本地磁盘文件**
**通过uni.env的目录常量访问本地文件**
uni-app x提供了一批uni.env常量,来指定不同的可访问目录。
以下示例为在`用户文件目录`下写入hello.txt文件:
```ts
......@@ -68,34 +107,45 @@ App端专有目录,为应用沙盒根目录,其下包含了`缓存文件目
实际保存的目录在不同平台存在差异:
- Android平台
应用专属存储空间的外置存储空间根目录,通常为“/sdcard/Android/data/%应用包名%/”,其下的cache目录为`缓存文件目录`,其下的files目录为`用户文件目录`
应用专属存储空间的外置存储空间根目录,通常为“/Android/data/%应用包名%/”,其下的cache目录为`缓存文件目录`,其下的files目录为`用户文件目录`
- iOS平台
应用沙盒虚拟目录,其下包括Document、Library、tmp目录,此目录只可读,不可创建其它目录
本目录可以在Android系统的文件管理器中看到。用户在文件管理器中可以查阅删改。手机被root后的沙盒机制也会失效,可以被其他app操作。
#### 缓存文件目录
#### 缓存文件目录cache@cache
目录常量名称:`uni.env.CACHE_PATH`
App端本地缓存文件目录保存应用运行过程中产生的缓存文件,操作系统会在存储空间不足时清除缓存文件,因此不要在此目录中保存应用的关键业务数据文件。
缓存文件目录,保存应用运行过程中产生的缓存文件。操作系统或小程序宿主会在存储空间不足时清除缓存文件,因此不要在此目录中保存应用的关键业务数据文件。
实际保存的目录在不同平台存在差异:
- Android平台
应用专属存储空间的外置存储空间根目录下的cache目录,通常为“/sdcard/Android/data/%应用包名%/cache/”
应用专属存储空间的外置存储空间根目录下的cache目录,通常为“/Android/data/%应用包名%/cache/”
- iOS平台
应用沙盒目录下的Library/Caches目录
uni-app x的部分内置API会产生临时文件会放置在本cache目录,如:
- uni.downloadFile下载的文件
- uni.uploadFile上传的文件
- uni.chooseImage的拍照或选择的相册文件
<!-- - 录音的文件 -->
- dom element的截图API
#### 用户文件目录
目录常量名称:`uni.env.USER_DATA_PATH `
推荐:在调用上述API使用完毕临时文件后,就调用 `uni.getFileSystemManager` 的API把临时文件删掉。
从HBuilderX 3.99起,重新约定了缓存目录的使用规范。
`uni.env.CACHE_PATH`目录下,uni官方使用了如下目录,请开发者避免使用uni-开头的目录:
- uni-download // uni.downloadFile的默认下载地址 (在HBuilderX 3.98时曾使用目录uniDownloads,从3.99起调整为uni-download)
- uni-media // uni.chooseImage的拍照或选择相册的文件
- uni-snapshot // element takeSnapShot截图APi存储的路径
- uni-crash //存放崩溃日志
* java //java、kotlin层崩溃日志
* c //c、so库崩溃日志
App端用户文件目录提供给开发者在应用运行期保存业务逻辑文件,此目录不会被操作系统自动清除,由开发者完全自由管理。
#### 用户文件目录files@files
目录常量名称:`uni.env.USER_DATA_PATH`
App端和小程序提供了用户文件目录,用于开发者在应用运行期读写文件,此目录不会被操作系统自动清除,由开发者自由管理。
实际保存的目录在不同平台存在差异:
- Android平台
......@@ -107,6 +157,12 @@ App端用户文件目录提供给开发者在应用运行期保存业务逻辑
目录常量名称:`uni.env.ANDROID_INTERNAL_SANDBOX_PATH`
该目录无法在手机自带的文件管理器中查看,用户无法修改。除非手机被root。
uni-app x框架的一些内置组件和API会涉及缓存文件,存放到本目录,如:
- image/video组件的网络图片缓存
<!-- - 网络字体缓存? -->
\ No newline at end of file
- web-view组件的缓存
<!-- - 网络字体缓存? -->
### 沙盒外目录
FileSystemManager暂不支持访问沙盒外目录。如有相关需求目前需开发uts插件。
\ No newline at end of file
## uni.getFileSystemManager() @getfilesystemmanager
<!-- UTSAPIJSON.getFileSystemManager.description -->
文件管理器对象,用于操作应用可访问的本地文件空间,在app-Android上是沙盒目录。
可实现目录和文件的创建、删除、改名或改路径、遍历目录、获取文件信息、读写文件。
<!-- UTSAPIJSON.getFileSystemManager.param -->
<!-- UTSAPIJSON.getFileSystemManager.returnValue -->
<!-- UTSAPIJSON.getFileSystemManager.compatibility -->
<!-- UTSAPIJSON.getFileSystemManager.tutorial -->
<!-- UTSAPIJSON.filemanager.example -->
<!-- UTSAPIJSON.general_type.name -->
<!-- UTSAPIJSON.general_type.param -->
\ No newline at end of file
......@@ -11,6 +11,8 @@ App一键登陆是替代短信验证码登录的更优选择:对开发者而
2. 客户端API,即本文
3. 服务器API,[详见](https://doc.dcloud.net.cn/uniCloud/uni-login/dev.html)
uni-id-pages,已经内置一键登陆,从云端到客户端均已开发好并开源,推荐使用。[详情](https://doc.dcloud.net.cn/uniCloud/uni-id/app-x.html)
<!-- UTSAPIJSON.getUniverifyManager.param -->
<!-- UTSAPIJSON.getUniverifyManager.returnValue -->
......@@ -194,6 +196,7 @@ App一键登陆是替代短信验证码登录的更优选择:对开发者而
## Tips
- 运营商对一键登陆给用户呈现的ui有强制要求:必须有运营商的隐私协议和服务条款、不得默认勾选同意、手机号掩码显示、需要用户手动再点按钮获取而不能自动获取。
- 目前一键登陆的UI可自定义性有限。仅支持配置登录页全屏/半屏、登录页背景色、登录按钮文案以及登录页logo。后续会继续扩展自定义性。
- 一键登陆并非100%成功,手机没有sim卡和蜂窝网络未开启是最常见的原因,更多错误见上方的错误码列表。在一键登陆无法使用时,可转为短信验证码登录。在uni-id-pages里已经集成了相关逻辑,无需自己开发。[详情](https://doc.dcloud.net.cn/uniCloud/uni-id/app-x.html)
<!-- UTSAPIJSON.getUniverifyManager.example -->
......
## splash
## splash启动封面图
> HBuilderX 3.99+
......@@ -6,6 +6,12 @@ App启动时,系统加载应用渲染首页需要一定的时间,为了避
这个界面,即被称为启动界面,也成称为 splash 或 lauch screen。
当然并非所有App都需要splash,很多系统应用比如计算器、日历都没有splash。
uni-app x中,如不配置splash,则与计算器等应用一致,启动时有轻微闪白,但可以让用户更快的使用首页。
如需配置splash,注意避免splash图与首页风格差异太大。因为uni-app x启动速度非常快,splash只是一闪而过,如果颜色差异太大,会让用户视觉不舒服。
### Android平台启动界面配置
打开项目的manifest.json文件,在“App启动界面配置”中的“Android启动界面设置”项下配置各设备分辨率启动图:
......@@ -25,6 +31,8 @@ splash关闭时机可控制,打开项目的manifest.json文件,选择源码
|onShow|首页页面生命周期触发onShow时关闭splash|
|onReady|首页页面生命周期触发onReady时关闭splash|
暂不支持其他方式关闭splash。
配置示例:
```json
......
......@@ -112,3 +112,6 @@ App原生语言的编译过程耗时较长,因此编译器引入了缓存机
└─static uni_modules下的本地静态资源(如图片、字体、音视频等文件)的目录
</code>
</pre>
uts、css等代码文件不是静态资源,它们会被编译为新的代码格式(如Android上会被编译为kt)。
请不要把这些文件放到static目录中,因为会导致代码里已经编进去了,又copy了一份相同文件到发行包中,重复增加了包体积。
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册