簡體   English   中英

iOS應用程式執行指令碼

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM