cocoapods-entitlements-statistics

iOS app 权限统计, 使用cocoapods plugin 触发

安装

sudo gem install cocoapods-entitlements-statistics

使用

在Gemfile中声明插件

source "https://rubygems.org"
#声明
gem 'cocoapods-entitlements-statistics'
...

在 Podfile 文件添加插件引用

#引入, 可以自定义 report_path, 默认在(iOS)项目根目录
plugin 'cocoapods-entitlements-statistics', :report_path => '/Users/rd01/Desktop'
#plugin 'cocoapods-entitlements-statistics'

target 'xxx' do
....

执行 pod install 会输出统计报告路径

$ pod install
.....
[!] Entitlements Statistics Report : path/to/entitlements_statistics/analyze_report
Pod installation complete! There are 75 dependencies from the Podfile and 116 total pods installed.

也可以手动执行cli 命令

仓库地址: https://github.com/olaola-chat/cli-app_permission_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)

涉及的文件

  • info.plist
  • Runner.entitlements

Capabilitys被添加后的,Xcode自动创建plist格式文件,里面包含相关Capability的声明、设置

  • 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"=>...