通过命令行列出iOS应用程序的权限

通过命令行列出iOS应用程序的权限,ios,command-line,permissions,Ios,Command Line,Permissions,我有ipa文件。我怎样才能知道它需要哪些权限 例如,对于Android,我可以这样做: aapt d permissions /path/to/com.your.package.apk 这个问题可能有点困惑,至少对我来说是这样 一, 如果您谈论的是UNIX/文件系统权限,您可能对.ipa文件在iOS下的工作方式有一个根本性的误解。文件系统权限并不重要,重要的是配置文件 如果是测试构建或临时构建 二, 如果您谈论的是摄像头、联系人或其他功能性权限,。正如前面的答案所述,有UNIX文件系统权限以及

我有ipa文件。我怎样才能知道它需要哪些权限

例如,对于Android,我可以这样做:

aapt d permissions /path/to/com.your.package.apk

这个问题可能有点困惑,至少对我来说是这样

一,

如果您谈论的是UNIX/文件系统权限,您可能对.ipa文件在iOS下的工作方式有一个根本性的误解。文件系统权限并不重要,重要的是配置文件

如果是测试构建或临时构建

二,

如果您谈论的是摄像头、联系人或其他功能性权限,。

正如前面的答案所述,有UNIX文件系统权限以及应用程序或功能性权限。应用权限存储在应用程序的信息属性列表Info.plist中

要获取命令行中所有权限的列表,基本上需要执行两个步骤。为此,假定IPA的路径存储在$IPA中

导出IPA=/path/to/app.IPA IPA是zip存档,因此首先需要查找属于应用程序的Info.plist。由于最有可能存在其他信息属性列表,例如,框架或Watch应用程序的信息属性列表,并且由于它位于应用程序名称的目录中(以前可能不知道该名称),因此无法简单地对其进行匹配。为了获得最有可能的候选人,最好在以.app结尾的目录中匹配名为Info.plist的文件。此目录可能包含具有相同模式的其他目录,例如Watch apps。在与模式匹配的所有路径中,层次结构顶部最短的路径应为应用程序的路径:

zipinfo-1$IPA | grep-E'\.app\/Info.plist'| awk'{打印长度:$1}'| sort-sort=numeric | head-1 | cut-d':'-f2 zipinfo命令列出IPA中的所有文件。awk、sort、head、cut组合获得与过滤器匹配的最短路径

现在可以提取应用程序的Info.plist并列出权限:

解压-p$IPA$…| grep-E-仅匹配“\w+UsageDescription” 其中…是确定Info.plist的命令。您可以直接将$…替换为Info.plist的路径。这对于列出macOS应用程序的权限也很有用

总之,提取IPA应用程序权限的完整一行程序是:

解压-p$IPA$zipinfo-1$IPA | grep-E'\.app\/Info.plist''awk'{打印长度:$1}'| sort-sort=numeric | head-1 | cut-d':'-f2 | grep-E-仅匹配'\w+UsageDescription' 输出如下所示:

NSCameraUsageDescription NSHealthUpdateUsageDescription NSBluetooth外围设备用途说明 N健康共享用途说明 NSCalendarsUsageDescription NSM话筒用途说明 NSLocationWhenUse用途说明 NSContactsUsageDescription NSPhotoLibraryUsageDescription 不同使用说明的详细信息可从官方文档中获得:。自iOS 10以来,如果应用程序试图访问受权限保护的资源,而未定义使用说明,则应用程序将崩溃。因此,该命令返回应用程序可以访问的一整套受权限保护的资源

为了完整性:还有第三种权限:沙盒权限,例如,允许提供VPN连接的应用程序。它们直接嵌入到应用程序的二进制文件中。权限对用户不可见。它们将由苹果进行检查,因为使用授权将在提交到应用商店时触发应用审查