越狱机器可以在以下目录获得plist信息
/var/mobile/Library/MobileInstallation/LastLaunchServicesMap.plist
在模拟器上的目录中,我们可以找到相同的plist文件,例如
/Users/appleofuestc/Library/Developer/CoreSimulator/Devices/ED1C41C2-DA15-4D89-9612-4A532C084D05/data/Library/MobileInstallation/LastLaunchServicesMap.plist
,其中的ED1C41C2-DA15-4D89-9612-4A532C084D05是模拟器的临时目录
这里是其中一个模拟器的device信息例举
FB11075D-2AA1-471C-B844-9B99CEC5F004
com.apple.CoreSimulator.SimDeviceType.iPhone-6
iPhone 6
com.apple.CoreSimulator.SimRuntime.iOS-8-0
LastLaunchServicesMap.plist的User字段中,就包含了所有安装app的信息
<key>User</key>
<dict>
<key>boyaa.TestView</key>
<dict>
<key>ApplicationType</key>
<string>User</string>
<key>BundleContainer</key>
<string>/Users/appleofuestc/Library/Developer/CoreSimulator/Devices/FB11075D-2AA1-471C-B844-9B99CEC5F004/data/Containers/Bundle/Application/9BA23489-2E24-4AB5-9C28-34F0BEFF66FB</string>
<key>CFBundleIdentifier</key>
<string>boyaa.TestView</string>
<key>CodeInfoIdentifier</key>
<string>boyaa.TestView</string>
<key>Container</key>
<string>/Users/appleofuestc/Library/Developer/CoreSimulator/Devices/FB11075D-2AA1-471C-B844-9B99CEC5F004/data/Containers/Data/Application/19B1ACC0-4FA7-43E3-96E0-EAC8A3E80212</string>
<key>EnvironmentVariables</key>
<dict>
<key>CFFIXED_USER_HOME</key>
<string>/Users/appleofuestc/Library/Developer/CoreSimulator/Devices/FB11075D-2AA1-471C-B844-9B99CEC5F004/data/Containers/Data/Application/19B1ACC0-4FA7-43E3-96E0-EAC8A3E80212</string>
<key>HOME</key>
<string>/Users/appleofuestc/Library/Developer/CoreSimulator/Devices/FB11075D-2AA1-471C-B844-9B99CEC5F004/data/Containers/Data/Application/19B1ACC0-4FA7-43E3-96E0-EAC8A3E80212</string>
<key>TMPDIR</key>
<string>/Users/appleofuestc/Library/Developer/CoreSimulator/Devices/FB11075D-2AA1-471C-B844-9B99CEC5F004/data/Containers/Data/Application/19B1ACC0-4FA7-43E3-96E0-EAC8A3E80212/tmp</string>
</dict>
<key>Path</key>
<string>/Users/appleofuestc/Library/Developer/CoreSimulator/Devices/FB11075D-2AA1-471C-B844-9B99CEC5F004/data/Containers/Bundle/Application/9BA23489-2E24-4AB5-9C28-34F0BEFF66FB/TestView.app</string>
<key>SignerIdentity</key>
<string>Simulator</string>
<key>StaticDiskUsage</key>
<integer>540672</integer>
</dict>
另外一个方法,是使用私有api
#include <objc/runtime.h>
Class LSApplicationWorkspace_class = objc_getClass("LSApplicationWorkspace");
NSObject *workspace = [LSApplicationWorkspace_class performSelector:@selector(defaultWorkspace)];
NSLog(@"apps: %@", [workspace performSelector:@selector(allApplications)]);