AppPermissionStatistics
传入两个IPA包路径,统计分析权限,并输出报告文件
Installation
$ sudo gem install app_permission_statistics
Usage
# 命令行输入
$ app_permission_statistics path/to/file1.ipa path/to/file2.ipa
# 支持自定义报告输出路径
# app_permission_statistics path/to/file1.ipa path/to/file2.ipa path/to/report
也可以作为cocoapods插件,集成进打包流程
仓库地址:https://github.com/olaola-chat/cli-cocoapods-entitlements-statistics
说明
版本权限统计
默认会在 ~/appInfo-#app_bundle_id/ 下为每个版本建立权限统计文件
├── appInfo-com.ola.chat
│ ├── entitlements_5.2.0.yml
│ ├── entitlements_5.3.0.yml
│ └── entitlements_versions.yml
报告内容如下:
- 权限变化对比分析(增、删、改)
- (对比的各)版本权限列表详情
compared 5.3.0 5.2.0
modify capabilitys :
5.3.0
- items ..
5.2.0
- items ..
------------------------------
add capabilitys :
- items ..
------------------------------
remove capabilitys :
- items ..
------------------------------
5.3.0 entitlements list:
...
5.2.0 entitlements list:
...
iOS 项目权限
大致分类 Capabilitys、info.plist(Cocoa Keys)
Capabilitys
Xcode->Target->Signing&Capabilitys->Capabilitys 下添加和删除 Capabilitys , 这里不是随便添加的,需要首先在苹果开发者后台注册或者声明对应Capabilitys. 更新的Provisioning Profile文件,其中包含Entitlements 字段包含(几乎所有的)已注册Capabilitys, Xcode中添加Capabilitys后会同Profile文件校验。不匹配则无法通过编译签名。
Supported capabilities (iOS): https://developer.apple.com/help/account/reference/supported-capabilities-ios
info.plist (Cocoa Key-Values)
- NSPermissionsUsageDescription > info.plist 中声明使用相机、麦克风、摄像头..等权限的说明
- 其它权限声明Keys > info.plist 中也会包含一些权限的详细设置、声明,比如屏幕高刷、代理、后台模式...
info.plist 涉及的所有 Cocoa Keys https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html#//apple_ref/doc/uid/TP40009251-SW1
涉及的文件
- info.plist
- Runner.entitlements
Capability被添加后的,保存一些权利( entitlement ) 声明、设置清单
- embedded/xxx-xx-xx.mobileprovision
embedded.mobileprovision 存在于IPA包中,被发送到Appstore,真正安装的app 却没有这个文件
xxx-xx-xx.mobileprovision 在打包成IPA前用于工程签名的描述文件 两者基本一致,包括里面的Entitlements字段, 保存一些 Capabilitys被添加后的 声明、设置
- Runner.xcodeproj
工程文件SystemCapabilities字段包含了一些Capabilitys 的开关字段
文件说明:
xx.mobileprovision https://developer.apple.com/forums/thread/685723
Runner.entitlements https://developer.apple.com/library/archive/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AboutEntitlements.html#//apple_ref/doc/uid/TP40011195-CH1-SW1
问题
IPA包中找不到 In-App Purchase 功能标记
一般Capabilitys添加后会在Runner.entitlements、xx.mobileprovision找到对应key:value声明、设置
添加 In-App Purchase后, 仅在Runner.xcodeproj中有 "com.apple.InAppPurchase"=>"enabled"=>"1" 声明
Background Modes 属于 Capabilitys 中的异类
一般Capabilitys添加后会在Runner.entitlements、xx.mobileprovision找到对应key:value声明、设置, 而Background Modes在这里没有任何记录
Background Modes的声明位置:
- Runner.xcodeproj : "com.apple.BackgroundModes"=>"enabled"=>"1"
- info.plist : "UIBackgroundModes"=>...