通过构建阶段脚本将iOS应用程序部署到/ XCode应用程序? (越狱)

时间:2011-09-18 20:44:48

标签: iphone ios ipad permissions jailbreak

我正在开发一个Cydia应用程序。它已经开发了一段时间,直到最近我几个月后恢复开发时才遇到任何问题。自从我上一次工作以来,有一些事情发生了变化:

  1. 升级为狮子会
  2. 已移至Xcode 4
  3. 在iPad上更新为4.3.5,iPhone更新为5.0
  4. 从我所做的研究中,我得出的结论是,我的旧设置有些“不寻常”。我发现配置的应用程序放在“沙盒目录”/private/var/mobile/Applications中,并且获得对整个文件系统的读访问权限的系统应用程序进入/Applications。我想从使用更新的工具和Lion,我打破了给予我系统范围读取权限的任何东西。所以,我需要有关如何让Xcode直接部署到非沙盒系统目录的信息。

    但有一些警告。我不想使用安装程序,我希望Xcode在构建和运行后自动执行。我还希望能够连接调试器,以便查看控制台。

    任何有这方面经验的人都可以教我如何使用Build Phase Scripts来做必要的魔术来获取签名的二进制文件并在每次构建后自动部署它吗?我想这确实是可能的,因为控制台输出是一个非常有价值的工具,开发像Cydia本身的应用程序会很困难。

    感谢您的帮助!

3 个答案:

答案 0 :(得分:4)

社区普遍认为这是不可取的。像Theos这样的构建系统与设备GDB以及系统日志包或deviceconsole相结合,是许多人正在使用的。

答案 1 :(得分:2)

我添加了一个脚本作为自定义构建阶段。该脚本对应用程序进行签名,创建包,将其复制到手机并进行安装。

构建阶段是使用/ bin / sh“运行脚本”,我添加了“$ {PROJECT_DIR} /MyApp/install.sh”

脚本(非常基本 - 没有错误处理)如下(用适当的值替换):

(LatestBuild是构建目录的链接) (ldid与iosopendev项目一起安装)

cd $HOME/Projects/iPhone/MyProject/MyApp
cp -r ../LatestBuild/MyApp.app com.test.MyApp/Applications/ 
ldid -S com.test.MyApp/Applications/MyApp.app/MyApp
rm com.test.MyApp.deb 2>&1
/opt/local/bin/dpkg-deb -b com.test.MyApp
scp com.test.MyApp.deb root@192.168.0.10:/var/root
ssh root@192.168.0.10 "dpkg -r com.test.MyApp"
ssh root@192.168.0.10 "dpkg -i com.test.MyApp.deb"
ssh root@192.168.0.10 "killall -9 MyApp"
#ssh root@192.168.0.10 "killall -HUP SpringBoard"
cd -

可以改进很多 - 但它只是满足我的需求

答案 2 :(得分:0)

我并不是很了解xcode,但是像大多数IDE一样假设你可以让它运行一个后期构建脚本,如果你能弄清楚它是什么就像上传的scp命令一样简单从那里你可以在上传应用程序的目录中使用ldid -S nameofapp。

你可以,如果你想让你的应用程序驻留在/ Applications中,虽然升级到4.3.5很可能会迫使你进行连线越狱我不知道4.3.5的不受限制的JB,所以如果你风很麻烦不得不重启。

就调试器提供gdb(你可以从cydia获得)来说,真的很有用:)。我做的只是让xcode运行一个后期构建脚本,使用scp上传到你的设备,然后用ldid手动签名,这是我能想到的最简单的方法,除非你有权访问开发人员的意见。

给我几分钟我写一个脚本并尝试描述它是如何工作的我需要一个人,因为我终于得到了一个大多数工作开放的工具链。 :)

一个简单的上传脚本

#!/bin/bash
scp -r $1 $2@$3:$4

$1 is lets say your app folder ill use my dpatcher as an example

$2 is user name either mobile or root(if you upload as root you need to chmod permissions to 755)

$3 is your idevices local ip(ie your routers ip for it) 

你可以通过sbsettings找到你的ip,或者通过设置点击你旁边的蓝色箭头,它会告诉你。

$4 is where you want it to be most likely /Applications or /var/mobile/Applications

我将其命名为upload.sh,但您可以将其命名为

一个例子

upload.sh dpatcher.app mobile@192.168.1.65 /Applications

然后你所做的就是ssh in并用ldid -S nameofapp

签名

如果你想上传单个文件,请删除-r作为递归上传的文件(即文件夹)

您必须使用scp或sftp上传文件的原因是,不使用第三方应用程序时不支持正常的ftp AFAIK。

我不确定如何与Xcode集成我用vi,emacs或nano做任何事情(我没有Mac)。