Xcode-通过SFTP将应用程序上传到iOS设备

时间:2012-09-26 18:14:05

标签: ios xcode debugging jailbreak iphone-privateapi

您好我试图将应用程序上传到我的iPad,(iOS 5.1) - Jailbroken,

它是一个网络搜索应用,我使用私有API,据我所知,我需要将我的应用的构建版本放在设备/Applications文件夹中!

(假设我已经使用cyberduck计算了这个过程)

到目前为止一切顺利,一切正常!

但每次我更新我的应用程序的代码时,我需要替换哪些文件? 只有/Applications目录中的那些或/User/Applications/中的那些。 。 。 ? atm每次我更新我的代码似乎代码都不会更新,直到我重新启动设备

在重新启动之前,我通过Xcode获得以下错误:

  

具有给定包标识符的系统应用程序已经存在   安装在设备上,无法更换。

请帮忙

2 个答案:

答案 0 :(得分:4)

仅仅因为您使用私有API并不意味着您始终需要在/Applications中安装该应用。这取决于哪些私有API,以及您正在尝试做什么。通过Cydia分发的系统应用程序和应用程序通常会安装在/Applications中。正常的第三方App Store应用程序(我们的)安装在/var/mobile/Applications下(/User/Applications是指向/var/mobile/Applications的链接,因此这两个位置相同)。

因此,默认情况下,Xcode不会在/ Applications中安装应用程序。它会在/var/mobile/Applications下的某处安装应用。

如果您手动将应用程序放在/Applications中,然后尝试从Xcode再次构建并运行它,Xcode将会在/Applications/MyAppName.app中看到该版本,即使它正在尝试安装到{{ 1}},它将根据包标识符(在应用程序的Info.plist文件中指定)识别冲突。

因此,您无法在/var/mobile/Applications/*/MyAppName.app/Applications中安装具有相同捆绑包标识符的应用。我会选择你想要的地方。

如果您想在/var/mobile/Applications中使用您的应用,请使用脚本进行安装(例如,使用SFTP)。如果您想在/Applications中使用自己的应用,那么可以直接从Xcode构建并运行

至于需要重启,这不应该是必要的。您可能需要/var/mobile/Applications进入您的设备,然后发出ssh命令:

uicache

ssh mobile@iphone
uicache

让SpringBoard识别新安装的应用程序。如果您直接从Xcode运行,则没有必要,但如果您从Xcode构建,然后运行(SFTP)安装脚本,则可能需要运行ssh root@iphone su mobile -c uicache

希望这有帮助。

编辑:我没有遇到编写自定义后期构建脚本/从Xcode中调用的步骤的问题。所以,当我在上面的答案中提到从Xcode运行时,我指的是Xcode工作的默认模式。

答案 1 :(得分:0)

是的,并非所有私有API都需要管理权限;即Apple80211功能(在我的情况下)。

将您的应用程序上传到根文件夹

  • 构建存档应用程序:(发布版本)
  • 导航到默认构建路径
  • / Users /“user”/ Library / Developer / Xcode / DerivedData /“app of app”/ Build / Products / Debug-iphoneos /
  • 构建文件位于上面的目录“ApplicationName.app”
  • 将此文件上传到根应用程序目录/ Application
  • (不是/私人/ Var /手机/申请)
  • 使用SSH访问iOS设备的文件目录
  • 使用SFT协议进行文件传输 - (Cyber​​Duck是一款优秀的软件)

通常按下Xcode中的“运行”按钮会将应用程序安装在/ Var / mobile / applications目录下,但是,如果Xcode检测到应用程序已存在于/ Applications,则它只使用后者。

因此:当您更新代码时。 。 。 。 - 你必须创建一个新的版本! (如上所述) - 从/ Applications中删除文件夹“ApplicationName” - 并将(新的)更新版本(ApplicationName.app)放入/ Applications目录

Stumbler,是尝试上述步骤的一个很好的例子; Stumbler使用Apple80211功能,要求应用程序在/ Applications中;对代码稍作修改并尝试上述步骤。 。 。 。 代码见:http://blog.guvenergokce.com/iphone-wireless-scanner-ios5/170/

希望这有助于一路走来!

任务i