手机路径、Windows路径知识及delphiXE跨设备APP自动下载和升级

手机路径、Windows路径知识

及delphiXE跨设备APP自动下载和升级

一、APP安装程序文件版本和权限信息

1、运行时动态调用Android apk的AndroidManifest.xml获取versionName

2、运行时动态调用IOS ipa的info.plist获取CFBundleVersion

(和entitlements)

uses iOSapi.Foundation;

NSBundle = interface; //:包接口

NSDictionary = interface; //:目录接口

NSFileManager = interface; //:文件管理员接口

NSFileVersion = interface; //:文件版本接口

二、TPath手机和电脑的存取路径

(一)、WINDOWS电脑设备

TPath.GetDirectoryName(Filename)参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local

TPath.GetExtension(Filename)参数MSWINDOWS存取位置:.pdf

TPath.GetFileName(Filename)参数MSWINDOWS存取位置:NO.XSKD20150304048.pdf

TPath.GetFileNameWithoutExtension(Filename)参数MSWINDOWS存取位置:NO.XSKD20150304048

TPath.GetFullPath(TPath.GetDownloadsPath)参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local

TPath.GetPathRoot(TPath.GetDownloadsPath)参数MSWINDOWS存取位置:C:\

TPath.GetRandomFileName参数MSWINDOWS存取位置:37CdIVK5.88J

TPath.GetTempFileName参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local\Temp\tmpBF5B.tmp
TPath.GetTempPath参数MSWINDOWS存取位置: C:\Users\Administrator\AppData\Local\Temp\
TPath.GetHomePath参数MSWINDOWS存取位置: C:\Users\Administrator\AppData\Roaming

TPath.GetDocumentsPath参数MSWINDOWS存取位置:C:\Users\Administrator\Documents

TPath.GetSharedDocumentsPath参数MSWINDOWS存取位置:C:\Users\Public\Documents

TPath.GetLibraryPath参数MSWINDOWS存取位置:D:\Http上传下载\IdHttp下载文件断点续传\Win64\Debug\

TPath.GetCachePath参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local

TPath.GetPublicPath参数MSWINDOWS存取位置:C:\ProgramData

TPath.GetPicturesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Pictures

TPath.GetSharedPicturesPath参数MSWINDOWS存取位置:C:\Users\Public\Pictures

TPath.GetCameraPath参数MSWINDOWS存取位置:C:\Users\Administrator\Pictures

TPath.GetSharedCameraPath参数MSWINDOWS存取位置:C:\Users\Public\Pictures

TPath.GetMusicPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music

TPath.GetSharedMusicPath参数MSWINDOWS存取位置:C:\Users\Public\Music

TPath.GetMoviesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Videos

TPath.GetSharedMoviesPath参数MSWINDOWS存取位置:C:\Users\Public\Videos

TPath.GetAlarmsPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music

TPath.GetSharedAlarmsPath参数MSWINDOWS存取位置:C:\Users\Public\Music

TPath.GetDownloadsPath参数MSWINDOWS存取位置:C:\Users\Administrator\AppData\Local

TPath.GetSharedDownloadsPath参数MSWINDOWS存取位置:C:\ProgramData

TPath.GetRingtonesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music

TPath.GetSharedRingtonesPath参数MSWINDOWS存取位置:C:\Users\Public\Music

TPath.GetRingtonesPath参数MSWINDOWS存取位置:C:\Users\Administrator\Music

(二)、Android手机、平板、安卓笔记本等设备

概念:

/storage/emulated/0/ :安卓指"内部存储" :可以在安卓的存取权限设置并获取后,进行读写

/storage/emulated/1/ :安卓指SDCard("SD卡"):可以在安卓的存取权限设置并获取后,进行读写

//:::以下对上述规则均适用:::

//1、你的APP的包全路径名:比如:com.pulledup.mainPro ,你的APP的包名:mainPro,即package

//: 包(即应用程序Apk)存取路径: **/data/user/0/**包全路径名/

//: 包(即应用程序Apk)的xml配置文件存取路径: /内部存储/Addroid/data/包全路径名/files

App路径:/data/user/0/com. pulledup.mainPro**/ //:并非你的App运行时对外存取路径**,不可见:

伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\assets\internal\ ,即TPath.GetHomePath参数Android存取位置: /data/user/0/com.embarcadero.MainPro/files ,这个路径下的文件:它是emulated //:仿真的 :获得权限后可读但不可写,除非 你将文件在代码开发阶段,就伴随应用Deployment将其分发到**.** \assets\internal后,才能对该文件可读可写,而无需任何权限(包括存储权限)。

安卓路径由TJStorageManager进行管理:为以上的JNI析构后拼接路径:仿真路径,和Windows不一个概念!

//1.1、存取位置GetSharedDownloadsPath参数:(获取共享下载路径:获得权限后可读可写

//: /内部存储/Download/NO.XSKD20150304048.pdf

//1.2、存取位置GetDownloadsPath参数:(获取应用程序的文件下载路径:获得权限后可读可写

//: /内部存储/Addroid/data/包全路径名/files/Download/NO.XSKD20150304048.pdf

TPath.GetDirectoryName(Filename)参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Download

TPath.GetExtension(Filename)参数Android存取位置:.pdf

TPath.GetFileName(Filename)参数Android存取位置:NO.XSKD20150304048.pdf

TPath.GetFileNameWithoutExtension(Filename)参数Android存取位置:NO.XSKD20150304048

TPath.GetFullPath(TPath.GetDownloadsPath)参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Download

TPath.GetPathRoot(TPath.GetDownloadsPath)参数Android存取位置:/

TPath.GetRandomFileName参数Android存取位置:hS1s1veL.GN3

TPath.GetTempFileName参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/tmp/tmp.szyus65J6O
TPath.GetTempPath参数Android存取位置: /storage/emulated/0/Android/data/com.embarcadero.MainPro/files/tmp :获得权限后可读可写

TPath.GetLibraryPath参数Android存取位置:/data/app/com.embarcadero.MainPro-1/lib/arm :获得权限后可读但不可写

TPath.GetCachePath参数Android存取位置:/data/user/0/com.embarcadero.MainPro/cache :获得权限后可读但不可写

TPath.GetHomePath参数Android存取位置: /data/user/0/com.embarcadero.MainPro/files //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\assets\internal。TPath.GetHomePath参数Android存取位置: /data/user/0/com.embarcadero.MainPro/files ,这个路径下的文件:它是emulated //:仿真的 :可读可写路径,除非 你将文件在代码开发阶段,就伴随应用Deployment将其分发到**.** \assets\internal后,才能对该文件可读可写,而无需任何权限(包括存储权限):

TPath.GetDocumentsPath 参数Android存取位置:/data/user/0/com.embarcadero.MainPro/files //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\assets\internal。其权限特征和GetHomePath类似:

TPath.GetSharedDocumentsPath参数Android存取位置:/storage/emulated/0/Documents

获得权限后可读可写,并且持久,除非机主专业并使用手机助手删除或重置初始化手机,否则永远不会被删除

TPath.GetPublicPath 参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files //:App的对外可见可存取的文件目录的公开路径

获得权限后可读可写,但其数据可被机主从【设置-应用管理-该应用-存储-删除数据】中清除路径/storage/emulated/0/Android/data/com.embarcadero.MainPro而使其中数据同时消失

TPath.GetPicturesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Pictures

TPath.GetSharedPicturesPath参数Android存取位置:/storage/emulated/0/Pictures

TPath.GetCameraPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/DCIM

获得权限后可读可写

TPath.GetSharedCameraPath参数Android存取位置:/storage/emulated/0/DCIM

获得权限后可读可写,以下均可读写:

TPath.GetMusicPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Music

TPath.GetSharedMusicPath参数Android存取位置:/storage/emulated/0/Music

TPath.GetMoviesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Movies

TPath.GetSharedMoviesPath参数Android存取位置:/storage/emulated/0/Movies

TPath.GetAlarmsPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Alarms

TPath.GetSharedAlarmsPath参数Android存取位置:/storage/emulated/0/Alarms

TPath.GetDownloadsPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Download

TPath.GetSharedDownloadsPath参数Android存取位置:/storage/emulated/0/Download

TPath.GetRingtonesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Ringtones

TPath.GetSharedRingtonesPath参数Android存取位置:/storage/emulated/0/Ringtones

TPath.GetRingtonesPath参数Android存取位置:/storage/emulated/0/Android/data/com.embarcadero.MainPro/files/Ringtones

备注:用Android原生方法获取路径:uses Androidapi.IOUtils;:

// File Locations in Internal memory. (Accessible only to the program.

// Not accessible to anyone without rooting the Android system.)

// Files written here are deleted when uninstalling the application.)

function GetFilesDir: string;

function GetCacheDir: string;

function GetLibraryPath: string;

// File Locations in External memory. (Accessible only to the program, but easily

// readable mounting the external storage as a drive in a computer.

// Files written here are deleted when uninstalling the application.)

function GetExternalFilesDir: string;

function GetExternalCacheDir: string;

function GetExternalPicturesDir: string;

function GetExternalCameraDir: string;

/// <summary>Get documents from external storage</summary>

function GetExternalDocumentsDir: string;

function GetExternalDownloadsDir: string;

function GetExternalMoviesDir: string;

function GetExternalMusicDir: string;

function GetExternalAlarmsDir: string;

function GetExternalRingtonesDir: string;

// File Locations in External memory. (Accessible to all programs, easily

// readable mounting the external storage as a drive in a computer.

// Files written here are preserved when uninstalling the application.)

function GetSharedFilesDir: string;

function GetSharedPicturesDir: string;

function GetSharedCameraDir: string;

/// <summary>Get Shared documents from external storage</summary>

function GetSharedDocumentsDir: string;

function GetSharedDownloadsDir: string;

function GetSharedMoviesDir: string;

function GetSharedMusicDir: string;

function GetSharedAlarmsDir: string;

function GetSharedRingtonesDir: string;

(三)、IOS、IPad

苹果沙盒路径由TFileManager和TDirectoryManager进行管理:为各子NSURL析构后拼接路径:仿真路径,和Windows不一个概念!

TPath.GetDirectoryName(Filename)参数IOS存取位置:【IOS不能取出此路径!,但不会报错:难道是没有在AppStore中发布?】

TPath.GetExtension(Filename)参数IOS存取位置:.pdf

TPath.GetFileName(Filename)参数IOS存取位置:NO.XSKD20150304048.pdf

TPath.GetFileNameWithoutExtension(Filename)参数IOS存取位置:NO.XSKD20150304048

TPath.GetFullPath(Filename)参数IOS存取位置:/NO.XSKD20150304048.pdf

TPath.GetPathRoot(Filename)参数IOS存取位置:【IOS不能取出此路径!,但不会报错:难道是没有在AppStore中发布?】

TPath.GetRandomFileName参数IOS存取位置:q94333cY.9Y3

TPath.GetTempFileName参数IOS存取位置:/private/var/mobile/Containers/Data/Application/2FEC9F6C-0EDA-498C-B8AD-E9ED35ED0AD5/tmp/tmp.roAY9d //:伴随应用打包时就一起发布文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\StartUp\Documents\ ,只有在Project-Options->Versin info->下增设了key: UIFileSharingEnabled = true才可见

TPath.GetTempPath参数IOS存取位置: /private/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/tmp :获得权限后可读可写

TPath.GetHomePath参数IOS存取位置:/private/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2 //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\StartUp\Documents\ ,只有在Project-Options->Versin info->下增设了key: UIFileSharingEnabled = true才可见

获得权限后可读但不可写

TPath.GetDocumentsPath 参数IOS存取位置:/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/Documents //:伴随应用打包时就一起分发文件出去供所有用户user都可以在APP中读取这些文件的APP的内部路径,不可见:即.\StartUp\Documents\ ,只有在Project-Options->Versin info->下增设了key:UIFileSharingEnabled = true才可见:但须根据TPath.GetHomePath参数进行路径拼接

获得权限后可读可写

TPath.GetLibraryPath参数IOS存取位置:/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/Library

//:TPath.GetTempPath+ PathDelim +'temp' 下保存的文件每次app重新启动会删除。webbrowser只能访问该文件夹下的内容

TPath.GetCachePath参数IOS存取位置:/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2/Library/Caches

//:TPath.GetCachePath+ PathDelim +'temp' 下载的缓存文件在这里保存,重启app一般不会删除

TPath.GetSharedDocumentsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:如果用Shared的路径,会闪退,因为它没有内部SD卡】

TPath.GetPublicPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetPicturesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedPicturesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetCameraPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedCameraPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetMusicPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedMusicPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetMoviesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedMoviesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetAlarmsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedAlarmsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetDownloadsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedDownloadsPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetRingtonesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetSharedRingtonesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

TPath.GetRingtonesPath参数IOS存取位置:【IOS不能取出此路径!,但不会报错:因为它没有内部SD卡,只能在应用程序沙盒中访问,或在iCloud中共享访问】

(四)、MAC电脑设备

TPath.GetDirectoryName(Filename)参数MAC存取位置:

TPath.GetExtension(Filename)参数MAC存取位置:.pdf

TPath.GetFileName(Filename)参数MAC存取位置:NO.XSKD20150304048.pdf

TPath.GetFileNameWithoutExtension(Filename)参数MAC存取位置:NO.XSKD20150304048

TPath.GetFullPath(Filename)参数MAC存取位置:/Users/laichao/PAServer/scratch-dir/Administrator-PAS20.0/MainPro.app/Contents/MacOS/NO.XSKD20150304048.pdf

TPath.GetPathRoot(Filename)参数MAC存取位置:

TPath.GetRandomFileName参数MAC存取位置:4l7NYSdR.LXy

TPath.GetTempFileName参数MAC存取位置:/var/folders/7f/jkpz5l996msgztm4lrq0pwv80000gn/T/tmp.HlKqnT

TPath.GetTempPath参数MAC存取位置:/var/folders/7f/jkpz5l996msgztm4lrq0pwv80000gn/T/

TPath.GetHomePath参数MAC存取位置:/Users/laichao

TPath.GetDocumentsPath参数MAC存取位置:/Users/laichao/Documents

TPath.GetSharedDocumentsPath参数MAC存取位置:/Users/laichao/Public

TPath.GetLibraryPath参数MAC存取位置:/Users/laichao/Library

TPath.GetCachePath参数MAC存取位置:/Users/laichao/Library/Caches

TPath.GetPublicPath参数MAC存取位置:/Users/laichao/Public

TPath.GetPicturesPath参数MAC存取位置:/Users/laichao/Pictures

TPath.GetSharedPicturesPath参数MAC存取位置:/Users/laichao/Public

TPath.GetCameraPath参数MAC存取位置:/Users/laichao/Pictures

TPath.GetSharedCameraPath参数MAC存取位置:/Users/laichao/Public

TPath.GetMusicPath参数MAC存取位置:/Users/laichao/Music

TPath.GetSharedMusicPath参数MAC存取位置:/Users/laichao/Public

TPath.GetMoviesPath参数MAC存取位置:/Users/laichao/Movies

TPath.GetSharedMoviesPath参数MAC存取位置:/Users/laichao/Public

TPath.GetAlarmsPath参数MAC存取位置:/Users/laichao/Music

TPath.GetSharedAlarmsPath参数MAC存取位置:/Users/laichao/Public

TPath.GetDownloadsPath参数MAC存取位置:/Users/laichao/Downloads

TPath.GetSharedDownloadsPath参数MAC存取位置:/Users/laichao/Public

TPath.GetRingtonesPath参数MAC存取位置:/Users/laichao/Music

TPath.GetSharedRingtonesPath参数MAC存取位置:/Users/laichao/Public

TPath.GetRingtonesPath参数MAC存取位置:/Users/laichao/Music

三、建议各操作系统采用公用路径表达方式

获取你的App应用数据的主路径:TPath.GetHomePath

1、MSWINDOWS

指:

C:\Users\Administrator\AppData\Roaming :在MSWINDOWS下,遍历所有应用程序的数据的根路径,后需要增加一个自己应用的名称作为子路径来识别自己的应用,比如:/MainPro,结果为:C:\Users\Administrator\AppData\Roaming/MainPro。这个根路径默认是隐藏的,同时需要Administrator管理权限才可以访问。

2、Android

指:

/data/user/0/com.embarcadero.MainPro

其中:com.embarcadero.MainPro:你的应用的唯一标识:package包名

3、IOS

指:

/var/mobile/Containers/Data/Application/02029637-C492-4ECA-8D14-96731ADB7CC2

其中:02029637-C492-4ECA-8D14-96731ADB7CC2:你的应用的唯一标识:CFBundleName包名的32位MD5码/32位Hash码

四、结论

**1、**由上看出,由于IOS在没有APP端代码请求权限的情况下,是不允许访问操作系统自带的各个共享路径的,比如:相册GetCameraPath、图片GetSharedPicturesPath、音乐GetSharedMusicPath、视频GetSharedMoviesPath、下载GetSharedDownloadsPath等,所以,最好是读写可以缓存的文件夹和其下的文件。

通用平台的可以缓存的文件夹和其下的文件的代码:

{$IFDEF MSWINDOWS}

Result := ExtractFilePath(ParamStr(0));

{$ENDIF MSWINDOWS}

{$IFDEF IOS}

Result :=TPath.GetCachePath;

//:重启后不会删除,文件(夹)可见在MAC下调试可用PAServer显示包的内容;TPath.GetTempPath为临时缓存重启后就没了(可见)

{$ENDIF IOS}

{$IFDEF MACOS}

Result := TPath.GetCachePath;//:重启后不会删除,TPath.GetTempPath为临时缓存重启后就没了;均(可见)

{$ENDIF MACOS}

{$IFDEF Android}

Result := TPath.GetSharedDocumentsPath; // 安卓外部SD卡(外存),文件(夹)可见,在根下Documents

Result := TPath.GetDocumentsPath; // 安卓若无外部SD卡,则用内部存储(内存),文件(夹)不可见

{$ENDIF Android}

2、通用平台的分发路径(项目Deployment下的Remote Path)的代码:

{$IF DEFINED(IOS) or DEFINED(ANDROID) }

Result := TPath.GetDocumentsPath + PathDelim + aFileName;

{$ELSE}//MSWINDOWS或MACOS,但含义和实际位置不同:

Result := ExtractFilePath (ParamStr(0)) + aFileName;

//:MSWINDOWS 下:即可执行文件路径

//:MACOS下:并非Unix Execute可执行文件的路径,而是Contents\Resources\StartUp\

{$ENDIF}

注意:

// IOS下项目Deployment下的Remote Path应设为:StartUp\Documents\

// Android下项目Deployment下的Remote Path应设为:Assets\internal\

// MACOS下项目Deployment下的Remote Path应设为:Contents\Resources\StartUp\
//:MACOS下Contents\MacOS\路径下放这些文件:

// :1、项目输出路径ProjectOutput即Unix Execute可执行文件;

// :2、项目特征文件库诸如libcgsqlite3.dylib和libmidas.dylib

MACOS下下的文件分发(图片输出全部放到 Contents\Resources\StartUp\):

五、用Http或Https 下载资源

1、判断客户端操作系统类别OsType

2、根据操作系统类别OsType,下载web服务器上不同路径下的资源

六、打开下载到本地的一个资源链接,用本地已有的资源库打开文件进行浏览或覆盖安装所下App包

4.1、Windows打开一个路径文件

4.1.1、安装程序应当判断旧版是否在运行,如在运行现将其给关闭后,再执行安装。(不影响数据)

4.1.2、关于数据:

.INI文件和.txt等App的配置文件:里面保存了旧版应用的本地配置,应当在通知新版有新版时先备份到指定路径,然后等待新版覆盖安装结束起订运行时读取并覆盖。

4.2、android或IOS打开一个url

4.2.1、直接覆盖安装(不影响数据),操作系统安装完毕执行"打开",会自动提示是否删除安装包。

4.1.2、关于数据:

.INI文件和.txt等App的配置文件:里面保存了旧版应用的本地配置,应当在通知新版有新版时先备份到指定路径,然后等待新版覆盖安装结束起订运行时读取并覆盖。

七、牵引软件自动下载升级流程图

八、POSIX权限

(一)、Android : uses Androidapi.JNI.Os , System.Permissions ;

JManifest_permissionClass = interface(JObjectClass)

'{7138C56B-F5A7-4319-8D1D-0035C5F4E01A}'

//(访问登记属性)读取或写入登记check-in数据库属性表的权限

{class} property ACCESS_CHECKIN_PROPERTIES: JString read _GetACCESS_CHECKIN_PROPERTIES;

//(获取粗略位置)通过WiFi或移动基站的方式获取用户错略的经纬度信息,定位精度大概误差在30~1500米

{class} property ACCESS_COARSE_LOCATION: JString read _GetACCESS_COARSE_LOCATION;

//(获取精确位置)通过GPS芯片接收卫星的定位信息,定位精度达10米以内

{class} property ACCESS_FINE_LOCATION: JString read _GetACCESS_FINE_LOCATION;

//(访问定位额外命令)允许程序访问额外的定位提供者指令

{class} property ACCESS_LOCATION_EXTRA_COMMANDS: JString read _GetACCESS_LOCATION_EXTRA_COMMANDS;

//(获取网络状态)获取网络信息状态,如当前的网络连接是否有效

{class} property ACCESS_NETWORK_STATE: JString read _GetACCESS_NETWORK_STATE;

//通知 APP通知显示在状态栏

{class} property ACCESS_NOTIFICATION_POLICY: JString read _GetACCESS_NOTIFICATION_POLICY;

//(获取WiFi状态)获取当前WiFi接入的状态以及WLAN热点的信息

{class} property ACCESS_WIFI_STATE: JString read _GetACCESS_WIFI_STATE;

//(账户管理)获取账户验证信息,主要为GMail账户信息,只有系统级进程才能访问的权限

{class} property ACCOUNT_MANAGER: JString read _GetACCOUNT_MANAGER;

//通讯录权限

{class} property ADD_VOICEMAIL: JString read _GetADD_VOICEMAIL;

//允许您的应用通过编程方式接听呼入电话

{class} property ANSWER_PHONE_CALLS: JString read _GetANSWER_PHONE_CALLS;

//(电量统计)获取电池电量统计信息

{class} property BATTERY_STATS: JString read _GetBATTERY_STATS;

//绑定访问服务

{class} property BIND_ACCESSIBILITY_SERVICE: JString read _GetBIND_ACCESSIBILITY_SERVICE;

//(绑定小插件)允许一个程序告诉appWidget服务需要访问小插件的数据库

{class} property BIND_APPWIDGET: JString read _GetBIND_APPWIDGET;

//

{class} property BIND_AUTOFILL_SERVICE: JString read _GetBIND_AUTOFILL_SERVICE;

//这个常数是在API级别23否决。使用 BIND_CARRIER_SERVICES 替代

{class} property BIND_CARRIER_MESSAGING_SERVICE: JString read _GetBIND_CARRIER_MESSAGING_SERVICE;

//允许在载体应用程序中绑定服务的系统进程将有此权限

{class} property BIND_CARRIER_SERVICES: JString read _GetBIND_CARRIER_SERVICES;

//必须由 要求,确保只有系统可以绑定到它。

{class} property BIND_CHOOSER_TARGET_SERVICE: JString read _GetBIND_CHOOSER_TARGET_SERVICE;

{class} property BIND_CONDITION_PROVIDER_SERVICE: JString read _GetBIND_CONDITION_PROVIDER_SERVICE;

//(绑定设备管理)请求系统管理员接收者receiver,只有系统才能使用

{class} property BIND_DEVICE_ADMIN: JString read _GetBIND_DEVICE_ADMIN;

//

{class} property BIND_DREAM_SERVICE: JString read _GetBIND_DREAM_SERVICE;

//

{class} property BIND_INCALL_SERVICE: JString read _GetBIND_INCALL_SERVICE;

//(绑定输入法)请求InputMethodService服务,只有系统才能使用

{class} property BIND_INPUT_METHOD: JString read _GetBIND_INPUT_METHOD;

//

{class} property BIND_MIDI_DEVICE_SERVICE: JString read _GetBIND_MIDI_DEVICE_SERVICE;

//

{class} property BIND_NFC_SERVICE: JString read _GetBIND_NFC_SERVICE;

//

{class} property BIND_NOTIFICATION_LISTENER_SERVICE: JString read _GetBIND_NOTIFICATION_LISTENER_SERVICE;

//

{class} property BIND_PRINT_SERVICE: JString read _GetBIND_PRINT_SERVICE;

//

{class} property BIND_QUICK_SETTINGS_TILE: JString read _GetBIND_QUICK_SETTINGS_TILE;

//(绑定RemoteView)必须通过RemoteViewsService服务来请求,只有系统才能用

{class} property BIND_REMOTEVIEWS: JString read _GetBIND_REMOTEVIEWS;

//

{class} property BIND_SCREENING_SERVICE: JString read _GetBIND_SCREENING_SERVICE;

//

{class} property BIND_TELECOM_CONNECTION_SERVICE: JString read _GetBIND_TELECOM_CONNECTION_SERVICE;

//

{class} property BIND_TEXT_SERVICE: JString read _GetBIND_TEXT_SERVICE;

//

{class} property BIND_TV_INPUT: JString read _GetBIND_TV_INPUT;

//

{class} property BIND_VISUAL_VOICEMAIL_SERVICE: JString read _GetBIND_VISUAL_VOICEMAIL_SERVICE;

//

{class} property BIND_VOICE_INTERACTION: JString read _GetBIND_VOICE_INTERACTION;

//

{class} property BIND_VPN_SERVICE: JString read _GetBIND_VPN_SERVICE;

//

{class} property BIND_VR_LISTENER_SERVICE: JString read _GetBIND_VR_LISTENER_SERVICE;

//(绑定壁纸)必须通过WallpaperService服务来请求,只有系统才能用

{class} property BIND_WALLPAPER: JString read _GetBIND_WALLPAPER;

//(使用蓝牙 )允许程序连接配对过的蓝牙设备

{class} property BLUETOOTH: JString read _GetBLUETOOTH;

//(蓝牙管理)允许程序进行发现和配对新的蓝牙设备

{class} property BLUETOOTH_ADMIN: JString read _GetBLUETOOTH_ADMIN;

//

{class} property BLUETOOTH_PRIVILEGED: JString read _GetBLUETOOTH_PRIVILEGED;

//

{class} property BODY_SENSORS: JString read _GetBODY_SENSORS;

//(应用删除时广播)当一个应用在删除时触发一个广播

{class} property BROADCAST_PACKAGE_REMOVED: JString read _GetBROADCAST_PACKAGE_REMOVED;

//(收到短信时广播)当收到短信时触发一个广播

{class} property BROADCAST_SMS: JString read _GetBROADCAST_SMS;

//(连续广播)允许一个程序收到广播后快速收到下一个广播

{class} property BROADCAST_STICKY: JString read _GetBROADCAST_STICKY;

//(WAP PUSH广播)WAP PUSH服务收到后触发一个广播

{class} property BROADCAST_WAP_PUSH: JString read _GetBROADCAST_WAP_PUSH;

//(拨打电话)允许程序从非系统拨号器里输入电话号码

{class} property CALL_PHONE: JString read _GetCALL_PHONE;

//(通话权限)允许程序拨打电话,替换系统的拨号器界面

{class} property CALL_PRIVILEGED: JString read _GetCALL_PRIVILEGED;

//(拍照权限)允许访问摄像头进行拍照

{class} property CAMERA: JString read _GetCAMERA;

//

{class} property CAPTURE_AUDIO_OUTPUT: JString read _GetCAPTURE_AUDIO_OUTPUT;

//

{class} property CAPTURE_SECURE_VIDEO_OUTPUT: JString read _GetCAPTURE_SECURE_VIDEO_OUTPUT;

//

{class} property CAPTURE_VIDEO_OUTPUT: JString read _GetCAPTURE_VIDEO_OUTPUT;

//(改变组件状态)改变组件是否启用状态

{class} property CHANGE_COMPONENT_ENABLED_STATE: JString read _GetCHANGE_COMPONENT_ENABLED_STATE;

//(改变配置)允许当前应用改变配置,如定位

{class} property CHANGE_CONFIGURATION: JString read _GetCHANGE_CONFIGURATION;

//(改变网络状态)改变网络状态如是否能联网

{class} property CHANGE_NETWORK_STATE: JString read _GetCHANGE_NETWORK_STATE;

//(改变WiFi多播状态)改变WiFi多播状态

{class} property CHANGE_WIFI_MULTICAST_STATE: JString read _GetCHANGE_WIFI_MULTICAST_STATE;

//(改变WiFi状态)改变WiFi状态

{class} property CHANGE_WIFI_STATE: JString read _GetCHANGE_WIFI_STATE;

//清除应用缓存

{class} property CLEAR_APP_CACHE: JString read _GetCLEAR_APP_CACHE;

//(控制定位更新)允许获得移动网络定位信息改变

{class} property CONTROL_LOCATION_UPDATES: JString read _GetCONTROL_LOCATION_UPDATES;

//(删除缓存文件)允许应用删除缓存文件

{class} property DELETE_CACHE_FILES: JString read _GetDELETE_CACHE_FILES;

//允许程序删除应用

{class} property DELETE_PACKAGES: JString read _GetDELETE_PACKAGES;

//允许程序到RW到诊断资源

{class} property DIAGNOSTIC: JString read _GetDIAGNOSTIC;

//允许程序禁用键盘锁

{class} property DISABLE_KEYGUARD: JString read _GetDISABLE_KEYGUARD;

//允许程序获取系统dump信息从系统服务

{class} property DUMP: JString read _GetDUMP;

//允许程序扩展或收缩状态栏

{class} property EXPAND_STATUS_BAR: JString read _GetEXPAND_STATUS_BAR;

//允许程序运行工厂测试模式

{class} property FACTORY_TEST: JString read _GetFACTORY_TEST;

//访问GMail账户列表

{class} property GET_ACCOUNTS: JString read _GetGET_ACCOUNTS;

//获得特权帐户

{class} property GET_ACCOUNTS_PRIVILEGED: JString read _GetGET_ACCOUNTS_PRIVILEGED;

//获取应用的文件大小

{class} property GET_PACKAGE_SIZE: JString read _GetGET_PACKAGE_SIZE;

//允许程序获取当前或最近运行的应用

{class} property GET_TASKS: JString read _GetGET_TASKS;

//允许程序使用全局搜索功能

{class} property GLOBAL_SEARCH: JString read _GetGLOBAL_SEARCH;

//安装定位提供

{class} property INSTALL_LOCATION_PROVIDER: JString read _GetINSTALL_LOCATION_PROVIDER;

//允许程序安装应用

{class} property INSTALL_PACKAGES: JString read _GetINSTALL_PACKAGES;

//

{class} property INSTALL_SHORTCUT: JString read _GetINSTALL_SHORTCUT;

//

{class} property INSTANT_APP_FOREGROUND_SERVICE: JString read _GetINSTANT_APP_FOREGROUND_SERVICE;

//访问网络连接,可能产生GPRS流量

{class} property INTERNET: JString read _GetINTERNET;

//允许程序调用killBackgroundProcesses(String).方法结束后台进程

{class} property KILL_BACKGROUND_PROCESSES: JString read _GetKILL_BACKGROUND_PROCESSES;

//位置硬件

{class} property LOCATION_HARDWARE: JString read _GetLOCATION_HARDWARE;

//管理文件

{class} property MANAGE_DOCUMENTS: JString read _GetMANAGE_DOCUMENTS;

//允许通过自我管理的ConnectionService API管理自己的调用的调用应用程序

{class} property MANAGE_OWN_CALLS: JString read _GetMANAGE_OWN_CALLS;

//允许程序执行软格式化,删除系统配置信息

{class} property MASTER_CLEAR: JString read _GetMASTER_CLEAR;

{class} property MEDIA_CONTENT_CONTROL: JString read _GetMEDIA_CONTENT_CONTROL;

//修改声音设置信息

{class} property MODIFY_AUDIO_SETTINGS: JString read _GetMODIFY_AUDIO_SETTINGS;

//修改电话状态,如飞行模式,但不包含替换系统拨号器界面

{class} property MODIFY_PHONE_STATE: JString read _GetMODIFY_PHONE_STATE;

//格式化可移动文件系统,比如格式化清空SD卡

{class} property MOUNT_FORMAT_FILESYSTEMS: JString read _GetMOUNT_FORMAT_FILESYSTEMS;

//挂载、反挂载外部文件系统

{class} property MOUNT_UNMOUNT_FILESYSTEMS: JString read _GetMOUNT_UNMOUNT_FILESYSTEMS;

//允许程序执行NFC近距离通讯操作,用于移动支持

{class} property NFC: JString read _GetNFC;

//安装包使用情况

{class} property PACKAGE_USAGE_STATS: JString read _GetPACKAGE_USAGE_STATS;

//创建一个永久的Activity,该功能标记为将来将被移除

{class} property PERSISTENT_ACTIVITY: JString read _GetPERSISTENT_ACTIVITY;

//允许程序监视,修改或放弃拨出电话

{class} property PROCESS_OUTGOING_CALLS: JString read _GetPROCESS_OUTGOING_CALLS;

//允许程序读取用户的日程信息

{class} property READ_CALENDAR: JString read _GetREAD_CALENDAR;

//读取通话记录日志

{class} property READ_CALL_LOG: JString read _GetREAD_CALL_LOG;

//读取联系方式

{class} property READ_CONTACTS: JString read _GetREAD_CONTACTS;

//读取外部存储

{class} property READ_EXTERNAL_STORAGE: JString read _GetREAD_EXTERNAL_STORAGE;

//读取帧缓存用于屏幕截图

{class} property READ_FRAME_BUFFER: JString read _GetREAD_FRAME_BUFFER;

//读取当前键的输入状态,仅用于系统

{class} property READ_INPUT_STATE: JString read _GetREAD_INPUT_STATE;

//读取系统底层日志

{class} property READ_LOGS: JString read _GetREAD_LOGS;

//读取电话号码

{class} property READ_PHONE_NUMBERS: JString read _GetREAD_PHONE_NUMBERS;

//访问电话状态

{class} property READ_PHONE_STATE: JString read _GetREAD_PHONE_STATE;

//读取短信内容

{class} property READ_SMS: JString read _GetREAD_SMS;

//读取同步设置,读取Google在线同步设置

{class} property READ_SYNC_SETTINGS: JString read _GetREAD_SYNC_SETTINGS;

//读取同步状态,获得Google在线同步状态

{class} property READ_SYNC_STATS: JString read _GetREAD_SYNC_STATS;

{class} property READ_VOICEMAIL: JString read _GetREAD_VOICEMAIL;

//允许程序重新启动设备

{class} property REBOOT: JString read _GetREBOOT;

//允许程序开机自动运行

{class} property RECEIVE_BOOT_COMPLETED: JString read _GetRECEIVE_BOOT_COMPLETED;

//接收彩信

{class} property RECEIVE_MMS: JString read _GetRECEIVE_MMS;

//接收短信

{class} property RECEIVE_SMS: JString read _GetRECEIVE_SMS;

//接收WAP PUSH信息

{class} property RECEIVE_WAP_PUSH: JString read _GetRECEIVE_WAP_PUSH;

//录制声音通过手机或耳机的麦克

{class} property RECORD_AUDIO: JString read _GetRECORD_AUDIO;

//重新排序系统Z轴运行中的任务

{class} property REORDER_TASKS: JString read _GetREORDER_TASKS;

//允许伴随应用在后台运行

{class} property REQUEST_COMPANION_RUN_IN_BACKGROUND: JString read _GetREQUEST_COMPANION_RUN_IN_BACKGROUND;

//允许伴随应用在后台使用数据

{class} property REQUEST_COMPANION_USE_DATA_IN_BACKGROUND: JString read _GetREQUEST_COMPANION_USE_DATA_IN_BACKGROUND;

//允许应用程序请求删除软件包

{class} property REQUEST_DELETE_PACKAGES: JString read _GetREQUEST_DELETE_PACKAGES;

//请求更大的电池优化

{class} property REQUEST_IGNORE_BATTERY_OPTIMIZATIONS: JString read _GetREQUEST_IGNORE_BATTERY_OPTIMIZATIONS;

//安装应用程序

{class} property REQUEST_INSTALL_PACKAGES: JString read _GetREQUEST_INSTALL_PACKAGES;

//结束任务通过restartPackage(String)方法,该方式将在外来放弃

{class} property RESTART_PACKAGES: JString read _GetRESTART_PACKAGES;

//通过邮件发送回复

{class} property SEND_RESPOND_VIA_MESSAGE: JString read _GetSEND_RESPOND_VIA_MESSAGE;

//发送短信

{class} property SEND_SMS: JString read _GetSEND_SMS;

//设置闹铃提醒

{class} property SET_ALARM: JString read _GetSET_ALARM;

//设置程序在后台是否总是退出

{class} property SET_ALWAYS_FINISH: JString read _GetSET_ALWAYS_FINISH;

//设置全局动画缩放

{class} property SET_ANIMATION_SCALE: JString read _GetSET_ANIMATION_SCALE;

//设置调试程序,

{class} property SET_DEBUG_APP: JString read _GetSET_DEBUG_APP;

//设置应用的参数

{class} property SET_PREFERRED_APPLICATIONS: JString read _GetSET_PREFERRED_APPLICATIONS;

//允许程序设置最大的进程数量的限制

{class} property SET_PROCESS_LIMIT: JString read _GetSET_PROCESS_LIMIT;

//设置系统时间

{class} property SET_TIME: JString read _GetSET_TIME;

//设置系统时区

{class} property SET_TIME_ZONE: JString read _GetSET_TIME_ZONE;

//设置桌面壁纸

{class} property SET_WALLPAPER: JString read _GetSET_WALLPAPER;

//设置壁纸建议

{class} property SET_WALLPAPER_HINTS: JString read _GetSET_WALLPAPER_HINTS;

//发送一个永久的进程信号

{class} property SIGNAL_PERSISTENT_PROCESSES: JString read _GetSIGNAL_PERSISTENT_PROCESSES;

//允许程序打开、关闭、禁用状态栏

{class} property STATUS_BAR: JString read _GetSTATUS_BAR;

//显示系统窗口

{class} property SYSTEM_ALERT_WINDOW: JString read _GetSYSTEM_ALERT_WINDOW;

//红外发送

{class} property TRANSMIT_IR: JString read _GetTRANSMIT_IR;

//卸载快捷方式

{class} property UNINSTALL_SHORTCUT: JString read _GetUNINSTALL_SHORTCUT;

//更新设备状态

{class} property UPDATE_DEVICE_STATS: JString read _GetUPDATE_DEVICE_STATS;

//指纹识别

{class} property USE_FINGERPRINT: JString read _GetUSE_FINGERPRINT;

//允许程序使用SIP视频服务

{class} property USE_SIP: JString read _GetUSE_SIP;

//允许振动

{class} property VIBRATE: JString read _GetVIBRATE;

//允许程序在手机屏幕关闭后后台进程仍然运行

{class} property WAKE_LOCK: JString read _GetWAKE_LOCK;

//写入网络GPRS接入点设置

{class} property WRITE_APN_SETTINGS: JString read _GetWRITE_APN_SETTINGS;

//写入日程,但不可读取

{class} property WRITE_CALENDAR: JString read _GetWRITE_CALENDAR;

//

{class} property WRITE_CALL_LOG: JString read _GetWRITE_CALL_LOG;

//写入联系人,但不可读取

{class} property WRITE_CONTACTS: JString read _GetWRITE_CONTACTS;

//模拟器中sdcard中创建文件夹的权限

{class} property WRITE_EXTERNAL_STORAGE: JString read _GetWRITE_EXTERNAL_STORAGE;

//允许程序写入Google Map服务数据

{class} property WRITE_GSERVICES: JString read _GetWRITE_GSERVICES;

//允许程序读写系统安全敏感的设置项

{class} property WRITE_SECURE_SETTINGS: JString read _GetWRITE_SECURE_SETTINGS;

//允许读写系统设置项

{class} property WRITE_SETTINGS: JString read _GetWRITE_SETTINGS;

//写入Google在线同步设置

{class} property WRITE_SYNC_SETTINGS: JString read _GetWRITE_SYNC_SETTINGS;

//

{class} property WRITE_VOICEMAIL: JString read _GetWRITE_VOICEMAIL;

end;

(二)、IOS

十、杂

IOS开发者路径:

android内部全路径:

相关推荐
路由侠内网穿透1 小时前
本地部署开源持续集成和持续部署系统 Woodpecker CI 并实现外部访问
服务器·网络·windows·ci/cd·开源
CsharpDev-奶豆哥2 小时前
ASP.NET中for和foreach使用指南
windows·microsoft·c#·asp.net·.net
wanhengidc5 小时前
云手机 手游专用虚拟手机
运维·服务器·安全·游戏·智能手机
Microsoft Word6 小时前
跨平台向量库:Linux & Windows 上一条龙部署 PostgreSQL 向量扩展
linux·windows·postgresql
Wx-bishekaifayuan6 小时前
基于微信小程序的社区图书共享平台设计与实现 计算机毕业设计源码44991
javascript·vue.js·windows·mysql·pycharm·tomcat·php
zhuyasen8 小时前
在某些 Windows 版本,Go 1.25.x 编译出来的 exe 运行报错:此应用无法在你的电脑上运行
windows·go·编译器
资讯全球17 小时前
运动耳机哪个好?2025年运动耳机最新测评,园世Beta Pro推荐吗?
智能手机
tjsoft17 小时前
设置 windows nginx.exe 每天 重启
运维·windows·nginx
读书读傻了哟17 小时前
Windows 10 使用 VMware Workstation 搭建 Ubuntu 虚拟机
linux·windows·ubuntu
小龙报1 天前
《彻底理解C语言指针全攻略(3)》
c语言·开发语言·windows·git·创业创新·学习方法·visual studio