需求: 解決錯誤訊息,進而成功取得BundleExecutable
“OBJC_CLASS$_SBApplicationController”, referenced from:
objc-class-ref in demoApp.m.a4bf09cc.o
ld: symbol(s) not found for architecture armv7
clang: error: linker command failed with exit code 1 (use -v to see invocation)
环境: ios 8.1.2
操作步骤:
我的應用程式不是tweak,只是越獄application,我嘗試想使用SpringBoard裡面的方法:
NSString *appStoreString = [[SBApplicationController.sharedInstance applicationWithBundleIdentifier:@"com.apple.AppStore"] displayName];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:appStoreString message:nil delegate:target cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
看到幾個網站的教學是將SpringBoard資料夾放到theos/include的路徑底下,但是我無論怎麼去import不同大大提供的headers檔進去我的theos/include裡面,總是出現少了哪個哪個檔案的錯誤訊息,我已經試著下載三個不同的headers來源限制在ios 8.1,還是無法complie成功,也無法使用SBApplicationController裡的方法取得executable id. 想請問各位大神,要如何在非tweak, 非hook的一般root越獄app使用springboard的方法?
我知道可以使用AppList去取得“類似”的資訊但不是我要的,我最只能從以下方法得到/private/var/mobile/Containers/Bundle/Application/xxxxxxxxxx/TargetApp.app。但我只希望得到TargetApp這個executable file的name而已,在valueForKey我自己嘗試輸入可能得值,只可得到path, displayName, displayIdentifier。
請大大可以告訴小弟要輸入哪個valueForKey的值可以直接拿到executable name?
NSString *testBundlePath = [ALApplicationList.sharedApplicationList valueForKey:@"path" forDisplayIdentifier:@"com.Addcn.house591"];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:testBundlePath message:nil delegate:target cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
[alert release];
再麻煩各位大神了
參考網站:
https://stackoverflow.com/questions/13327435/theos-springboard