[英]iOS app to run script
在創建iOS應用以在/var/mobile/script.sh上運行指定腳本的過程中,我將提供幫助。 我編寫的腳本在越獄的6.1.2 iPhone上“一次全部”打開了許多指定的應用程序。 當前,我通過啟動MobileTerminal並從命令行手動運行script.sh文件來運行腳本。 我希望能夠創建一個可以通過Springboard啟動的應用程序,該應用程序將直接運行/var/mobile/script.sh。
我沒有Mac,因此無法自行編譯應用程序。 我也沒有太多的編程經驗,因此請提供任何幫助。 我看到了一個類似的答案: iOS從Activator執行shell腳本
上面提供的答案非常接近我想要的。 但是,目前Script.app存在兩個問題:
1)由於我編寫的腳本打開了許多其他應用,大約需要兩分鍾才能完成,因此Script.app在大約20秒后會被iOS自動殺死。 我不確定是否需要設置標志“ didFinishLaunchingWithOptions”以允許Script.app繼續運行,以便它可以完成運行腳本? 我已經通過Cydia安裝了一個名為“ Background Manager”的軟件包-[據我了解,它可以使所有應用有效地認為它們正在前台運行]。
2)我之前已經在iOS 5上測試了上面列出的Script.app,並且Script.app的確運行了大約20秒鍾,將這些應用程序帶到了我的script.sh中列出的前台。 在iOS 6.1.2上,Script.app在script.sh中運行某些命令[例如killall命令],但是當通過腳本打開指定的應用程序時,它不會打開任何應用程序[20秒內黑屏是空白的然后關閉腳本應用程序,而無需通過script.sh文件打開任何應用程序]。 但是在iOS 6.1.2中,如果啟動Script.app並立即按下主屏幕按鈕以將您返回跳板,則Script.app將在頭20秒內通過我的script.sh打開應用,因此似乎有所不同Script.app在iOS5和iOS6上的運行方式之間的差異。 我想讓Script.app可以通過script.sh打開應用程序,而無需在iOS 6上啟動Script.app后立即按下主頁按鈕。
在我的腳本文件中,我使用了一個名為“ open”的命令行程序包,通過它的CFBundleIdentifier來指定要打開哪個應用程序: http ://moreinfo.thebigboss.org/moreinfo/depiction.php?file=openData
謝謝你的幫助
這是一種對您有用的技術。 這不一定是我解決問題的方式,但是該解決方案旨在解決沒有Mac / Xcode的情況。
一個問題是,iOS希望正常的“應用程序”能夠快速啟動,並開始響應正常的UI應用程序事件。 如果您使用我的原始腳本啟動器 ,則它實際上不會創建UIApplication
,而只是從主程序中調用system()
。 假設對system()
的調用很快完成,就沒有問題。 但是,如果您的腳本需要20秒鍾才能運行,則時間太長,iOS會終止該應用程序。
您可以構建一個普通的UI應用程序,調用UIApplicationMain()
,並在應用程序完成啟動后啟動長時間運行的腳本。 但實際上,您不是在構建應用程序 。 您只想使用SpringBoard圖標啟動腳本。 因此,我認為該解決方案沒有多大意義。
您可能想要的是一個非圖形守護程序來為您運行長腳本。 為此,您可以構建一個啟動守護程序 ,這可能就是我解決問題的方式。 但是,如果沒有Xcode,那就很難了。 另一個選擇是利用SBSettings具有的特權守護程序。 您可以使用它來運行腳本 。 然后,您的“應用程序”只需要觸發一條通知即可告訴SBSettings運行該腳本。 然后它幾乎可以立即退出。
這是一個預置的二進制文件,它調用一個名為com.mycompany.script的腳本 (獲取版本1.1)。 在您的iPhone上安裝此應用程序(可以在沙箱區域中正常安裝該應用程序)。
然后,您需要將腳本放在(此確切路徑和文件名):
/var/mobile/Library/SBSettings/Commands/com.mycompany.script
例如,其內容可能是:
#!/bin/sh
/usr/bin/open com.mycompany.AppOne
/usr/bin/open com.mycompany.AppTwo
/usr/bin/open com.mycompany.AppThree
exit 0;
在那里你傳遞應用程序捆綁ID來open
。 您可以將任何內容放入其中。 確保登錄到iPhone並在腳本上設置正確的權限:
cd /var/mobile/Library/SBSettings/Commands/
chmod 755 com.mycompany.script
chown mobile.mobile com.mycompany.script
然后重新啟動(重新彈出可能足以使SBSettings識別您的新腳本)。
注意:對於那些是編碼員的人,此應用的主程序基本上只包含以下代碼:
#include <notify.h>
int main(int argc, char *argv[])
{
notify_post("com.mycompany.script");
return 0;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.