检索应用程序的作者 - 越狱 iOS 6

3
如何在越狱的iOS 6.x设备上检索应用程序的作者(或开发者或发布者等)?在iOS 4.x和5.x中,SBApplication类中有一个author成员。但是在iOS 6.1中,请求作者时现在会收到NSUnknownKeyException。从在线iOS 6类转储的SBApplication.h的快速查看没有显示任何有希望的内容(除了signerIdentity,但那是其他事情)。有没有简单的方法可以获得这个信息,而不必深入挖掘任何Info.plist文件?
更新:实际上,Info.plist文件也不包含此信息。另一方面,iTunesMetadata.plist文件包含此信息,但系统/Cydia应用程序没有此文件。

实际上,info.plist文件似乎也没有这些信息。 - newenglander
嗯,CFBundleIdentifier 通常包含公司名称,例如 com.mycompany.MyAppName。这不是你要找的吗? - Nate
好的,看起来不错。如果你想回答,我会接受——我认为在短时间内没有人能提出更好的答案。 - newenglander
关闭投票是怎么回事?请给出具体反馈! - newenglander
1
根据我的经验,与越狱开发有关的问题很可能会被投票否决或关闭。这很不幸,但社区中的许多人认为这些问题只适用于少数开发人员,因此可以作为“过于局部化”而关闭...我认为这是关闭问题的最糟糕的理由;或者他们认为越狱开发人员和软件盗版者是一回事,因此应该将他们的问题审查并予以惩罚。这真是太荒谬了。我已经给你点赞,并且如果被关闭的话,我会投票重新开放。 - Nate
显示剩余3条评论
1个回答

1
我还没有越狱我的iOS 6设备或运行在所有的iOS 6框架上,所以我无法告诉你是否有另一个私有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");

将输出导入临时文件或使用 NSTaskNSTask 是 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/control文件中的信息,该文件可能会有以下内容:
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

我知道这比仅仅使用来自SBApplicationauthor更费力,但或许这已经足够了?希望其他人能提供另一个答案...


谢谢您详细的回答!我应该提到我正在使用AppList库,这意味着获取包名已经为我完成。但是其他部分仍然很有用! - newenglander

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接