2013-02-05 41 views
3

如何在越狱的iOS 6.x设备上检索应用程序的作者(或开发人员或发布者等)?在iOS 4.x和5.x中,SBApplication类中有author成员。但是在iOS 6.1中,当请求作者时,我现在得到了一个NSUnknownKeyException。从iOS 6类转储在线的SBApplication.h快速查看没有显示任何有希望的(除了signerIdentity,但这是别的)。有没有简单的方法来获得这个,而不是在任何Info.plist文件中挖掘?检索应用程序的作者 - 越狱iOS 6

更新:Info.plist文件实际上也不包含此信息。另一方面,iTunesMetadata.plist文件确实存在,但System/Cydia应用程序没有此文件。

+0

难道从应用程序的info.plist文件中读取它很困难吗?为什么这不适合你? – Nate

+0

其实info.plist文件似乎也没有这个信息。 – newenglander

+0

那么'CFBundleIdentifier'通常有公司名称,比如'com.mycompany.MyAppName'。不是你在找什么? – Nate

回答

1

我还没有越狱的iOS我6设备或所有iOS 6的框架运行class-dump,所以我不能告诉你,如果有另一个私有API做你使用什么是能够做到的。

关于检查应用程序文件夹内容(例如/var/mobile/Applications/*/*.app/)和阅读iTunesMetadata.plist文件的建议听起来很合理。读取每个应用的Info.plist也会给你CFBundleIdentifier,通常至少包含发布者的域名(例如com.mycompany.MyAppName)。

对于不来自应用程序商店(不具备iTunesMetadata.plist),你可以尝试另一种技术(除了阅读的Info.plist)应用:

Cydia的包都保持dpkg实用程序。您可以使用命令dpkg -l列出所有已安装的软件包。您可以通过

system("dpkg -l >> /tmp/output.log 2>&1"); 

将输出管道输出到临时文件或与NSTask调用此命令。 NSTask是OS X API的一部分,不在iOS公共API中。但是,如果您自己将NSTask.h头文件添加到您的项目中,您当然可以将其用作非App Store应用程序中的私有API,以便以编程方式运行命令并捕获输出。

在命令行中,运行dpkg -l会给你:

ii libhide          2.1           Library to hide icons. If you are a developer wanting to use this library, code samples included in /usr/lib 
ii libxml2-lib         2.6.32-3          represents the library for libxml2 
ii lsof           33-4           shows what files programs have open 
ii lzma           4.32.7-4          slower, but better, compression algorithm 
ii make           3.81-2           dependency-based build environments 
ii mobilesubstrate        0.9.3999.1          powerful code insertion platform 
ri ncurses          5.7-12           feature-complete terminal library 
ii network-cmds         307.0.1-6          arp, ifconfig, netstat, route, traceroute 

这样,您的应用程序可以解析输出,从第二列中读取软件包名。

然后,你可以使用apt-cache show命令,以从包的是Debian /控制文件中的信息,这将有这样的事情:

iPhone-3G:~ root# apt-cache show sqlite3 
Package: sqlite3 
Version: 3.5.9-12 
Architecture: iphoneos-arm 
Maintainer: Jay Freeman (saurik) <saurik at saurik dot com> 
Installed-Size: 348 
Pre-Depends: dpkg (>= 1.14.25-8) 
Depends: sqlite3-lib 
Replaces: sqlite3 (<= 3.5.9-11) 
Filename: debs/sqlite3_3.5.9-12_iphoneos-arm.deb 
Size: 71928 
MD5sum: 6d47c112692ac00af61bd84e3847aa42 
Section: Data_Storage 
Priority: standard 
Description: embedded database used by iPhoneOS 
Name: SQLite 3.x 
Tag: purpose::library, role::developer 

我知道这不仅仅是使用authorSBApplication更多的工作,但也许它够好了?希望其他人可以用另一个答案来编钟...

+0

感谢您的详细解答!我应该提到我正在使用AppList库,这意味着获取软件包名称已经为我完成了。但其余的将是有用的! – newenglander

相关问题