2024年9月10日,iPhone 16 系列正式发布,本次主要发布了iPhone 16、iPhone 16 Plus、iPhone 16 Pro和iPhone 16 Pro Max四款机型。
每年发布新机型都需要提取一下iPhone的新机型信息,方便后续查询展示使用。现有的历史的数据是从Apple_mobile_device_types.txt 文件中提取的,新的数据的话就要更新之后才能获取到。
去年发布的 iPhone 15 的时候是从 Xcode 本地数据库中获取的,最近想要查数据的时候发现不记得怎么弄了,这里记录一下操作的路径。
首先需要安装最新的 Xcode 16.0.0 Release Candidate 版本,推荐使用 Xcodes.app 来管理多个Xcode版本。
1、在Xcode的安装目录下面找到 device_traits.db
这个文件,路径如下(如果Xcode命名不一样按照实际情况修改):
/Applications/Xcode-16.0.0-Release.Candidate.app/Contents/Developer/Platforms/iPhoneOS.platform/usr/standalone/device_traits.db
2、使用SQL查询,获取 iPhone 16 系列机型信息
SELECT * FROM Devices WHERE ProductDescription LIKE 'iPhone 16%'
其中
ProductType
字段对应的是机型,ProductDescription
字段对应的是机型名称。
查询结果如下:
iPhone17,1 : iPhone 16 Pro
iPhone17,2 : iPhone 16 Pro Max
iPhone17,3 : iPhone 16
iPhone17,4 : iPhone 16 Plus
写了一个简单的脚本(根据自己的需要调整一下参数,参考这里实现):
#!/bin/bash
set -e
XCODE_APP="$(ls /Applications | grep Xcode- | sort -r | head -n 1)"
PREFIX="iPhone 16"
DEVICE_TRAITS_DATABASE="/Applications/${XCODE_APP}/Contents/Developer/Platforms/iPhoneOS.platform/usr/standalone/device_traits.db"
SQL_QUERY="SELECT DISTINCT CASE WHEN INSTR(ProductType, '-') > 0 THEN SUBSTR(ProductType, 1, INSTR(ProductType, '-') - 1) ELSE ProductType END AS DeviceType, ProductDescription AS DeviceDescription FROM DEVICES WHERE ProductDescription LIKE '${PREFIX}%';"
echo "DeviceType : DeviceDescription"
sqlite3 -readonly -separator $'\t' $DEVICE_TRAITS_DATABASE "$SQL_QUERY" | awk -F '\t' 'NR>0 { print ""$1" : "$2"" }'
echo "-----------------------------"