Я еще не взломан моим IOS 6 устройства или запустить class-dump
на всех 6 рамок IOS, поэтому я не могу сказать вам, если есть другой частный 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
является частью API OS X и не входит в общедоступные API iOS. Но если вы добавите заголовок NSTask.h в свой проект самостоятельно, вы можете использовать его как частный API в приложении, отличном от App Store, для программной реализации команды и захвата вывода.
В командной строке запуска 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
Я знаю, что это больше работы, чем просто использование author
из SBApplication
, но, может быть, это достаточно хорошо? Надеюсь, кто-то еще услышит еще один ответ ...
Трудно ли это прочитать из файла info.plist приложения? Почему это не работает для вас? – Nate
На самом деле у файлов info.plist тоже нет этой информации. – newenglander
Ну, 'CFBundleIdentifier' обычно имеет название компании, например' com.mycompany.MyAppName'. Не то, что вы искали? – Nate