3

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

更新:这些Info.plist文件实际上也不包含此信息。iTunesMetadata.plist另一方面,该文件有,但系统/Cydia 应用程序没有此文件。

4

1 回答 1

1

我还没有越狱我的 iOS 6 设备或class-dump在所有的 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");

将输出通过管道传输到临时文件中,或使用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

我知道这不仅仅是使用authorfrom更多的工作SBApplication,但也许它已经足够好了?希望其他人会加入另一个答案......

于 2013-02-06T21:52:19.277 回答