Iphone 如何快速获取应用程序';从越狱iOS设备上的捆绑包id中删除目录?
在iOS设备中,所有用户应用程序都位于Iphone 如何快速获取应用程序';从越狱iOS设备上的捆绑包id中删除目录?,iphone,ios,jailbreak,Iphone,Ios,Jailbreak,在iOS设备中,所有用户应用程序都位于/var/mobile/applications目录中,每个应用程序都有一个唯一的随机uuid作为其目录名,例如: /var/mobile/Applications/15FD62FD-2BEB-4C1E-A9B8-BC93E5C721CC uuid是15FD62FD-2BEB-4C1E-A9B8-BC93E5C721CC 现在我想通过应用程序的包标识符获取目录,我的解决方案是枚举/var/mobile/Applications目录,从Info.plist获取
/var/mobile/applications
目录中,每个应用程序都有一个唯一的随机uuid作为其目录名,例如:
/var/mobile/Applications/15FD62FD-2BEB-4C1E-A9B8-BC93E5C721CC
uuid是15FD62FD-2BEB-4C1E-A9B8-BC93E5C721CC
现在我想通过应用程序的包标识符获取目录,我的解决方案是枚举/var/mobile/Applications
目录,从Info.plist
获取包标识符并进行检查
这个解决方案相当慢,有没有更快的方法
e、 如果有一个plist记录bundle id到uuid的映射,那么我可以读取该文件以避免目录枚举 我想你要找的文件是
/var/mobile/Library/Caches/com.apple.mobile.installation.plist
例如,它包含每个应用程序的以下信息:
"com.zillow.ZillowMap" = {
ApplicationDSID = 216284405;
ApplicationType = User;
CFBundleDisplayName = Zillow;
CFBundleExecutable = ZillowMap;
CFBundleIconFiles = (
"app-icon",
"app-icon-iPad.png",
"app-icon-iPad@2x.png"
);
CFBundleIcons = {
CFBundlePrimaryIcon = {
CFBundleIconFiles = (
"app-icon",
"app-icon-iPad.png",
"app-icon-iPad@2x.png"
);
UIPrerenderedIcon = 1;
};
};
CFBundleIdentifier = "com.zillow.ZillowMap";
CFBundleName = ZillowMap;
CFBundleShortVersionString = "6.1.0112";
CFBundleVersion = "6.1.0112";
CodeInfoIdentifier = "com.zillow.ZillowMap";
Container = "/private/var/mobile/Applications/B9284FBE-E558-4A65-A7E4-AE20CDAD9A1D";
Entitlements = {
"application-identifier" = "JEWMY3RZ4A.com.zillow.ZillowMap";
"aps-environment" = production;
};
EnvironmentVariables = {
"CFFIXED_USER_HOME" = "/private/var/mobile/Applications/B9284FBE-E558-4A65-A7E4-AE20CDAD9A1D";
HOME = "/private/var/mobile/Applications/B9284FBE-E558-4A65-A7E4-AE20CDAD9A1D";
TMPDIR = "/private/var/mobile/Applications/B9284FBE-E558-4A65-A7E4-AE20CDAD9A1D/tmp";
};
IsUpgradeable = 1;
LSRequiresIPhoneOS = 1;
MinimumOSVersion = "5.0";
Path = "/private/var/mobile/Applications/B9284FBE-E558-4A65-A7E4-AE20CDAD9A1D/ZillowMap.app";
SequenceNumber = 2618;
SignerIdentity = "Apple iPhone OS Application Signing";
UIDeviceFamily = (
1,
2
);
UIPrerenderedIcon = 1;
};
更新
此文件已在iOS 8中删除:()
iOS 8在
/var/mobile/Library/mobileininstallation/LastLaunchServicesMap.plist上有一个类似的文件,但它可能只在启动(重新启动)时更新。如果您的代码在SpringBoard中运行,这是另一个解决方案:
NSString *applicationBundleIdentifier = @"...";
SBApplication *application = [[SBApplicationController sharedInstance]applicationWithDisplayIdentifier:applicationBundleIdentifier];
NSString *path = application.containerPath;
如果您不介意卸载并重新安装目标应用程序,则更快捷的方法是卸载并重新安装目标应用程序。然后,它将是应用程序容器或数据容器中的最新应用程序(/private/var/containers/Bundle/Application
和/private/var/mobile/containers/data/Application
,这两个版本分别是现在的ls
),您可以通过ls
轻松找到,例如,ls-altr
可能重复的感谢,但这个文件似乎已经不存在了,至少在iOS 12.4中是这样。你知道我们还能在哪里找到这样的地图吗?