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)

涉及的文件

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