2011-09-18 30 views
5

Tôi đang phát triển một ứng dụng Cydia. Nó đã được phát triển trong một thời gian, và tôi đã không bao giờ có bất kỳ vấn đề cho đến gần đây, khi tôi tiếp tục phát triển sau một vài tháng. Có một vài điều đã thay đổi kể từ lần cuối cùng tôi làm việc trên nó:Triển khai ứng dụng iOS vào/Applications từ XCode qua tập lệnh pha xây dựng? (Jailbroken)

  1. được nâng cấp để Lion
  2. Chuyển đến Xcode 4
  3. Cập nhật đến 4.3.5 trên iPad của tôi, iPhone đến 5,0

Từ nghiên cứu tôi đã làm, tôi đã đi đến kết luận rằng có điều gì đó "bất thường" về thiết lập cũ của tôi. Tôi đã phát hiện ra rằng các ứng dụng được cấp phép được đặt trong "thư mục hộp cát" /private/var/mobile/Applications và các ứng dụng hệ thống có quyền truy cập đọc vào toàn bộ hệ thống tệp đi theo số /Applications. Tôi đoán từ việc sử dụng các công cụ cập nhật và Lion, tôi đã phá vỡ bất cứ điều gì đã cho tôi đặc quyền đọc toàn hệ thống. Vì vậy, tôi cần thông tin về cách để Xcode triển khai trực tiếp vào thư mục hệ thống không có hộp cát.

Có một số cảnh báo mặc dù. Tôi không muốn sử dụng trình cài đặt, tôi muốn Xcode tự động thực hiện sau khi Xây dựng và Chạy. Tôi cũng muốn có thể có trình gỡ lỗi được đính kèm để tôi có thể xem bảng điều khiển. Có ai có kinh nghiệm trong việc này dạy tôi cách sử dụng Build Phase Scripts để thực hiện phép thuật cần thiết để lấy nhị phân có chữ ký và triển khai nó tự động sau mỗi lần xây dựng không? Không. Tôi tưởng tượng điều này là thực sự có thể, bởi vì đầu ra console là một công cụ có giá trị, rằng nó sẽ là quá khó khăn để phát triển các ứng dụng như Cydia chính nó.

Cảm ơn sự giúp đỡ của bạn!

+0

Điều này có thể hữu ích - http://stackoverflow.com/questions/4127147/objective-c-nsfileposixpermissions-to-human-readable-nsstring – Coffee

Trả lời

2

Tôi đã thêm tập lệnh làm giai đoạn xây dựng tùy chỉnh. Kịch bản lệnh ký ứng dụng, tạo một gói, sao chép nó vào điện thoại và cài đặt nó.

Các xây dựng giai đoạn là "Chạy Script" với/bin/sh và tôi đã thêm "$ {PROJECT_DIR} /MyApp/install.sh"

Các kịch bản (rất cơ bản - không có xử lý lỗi) là bên dưới (thay thế với giá trị thích hợp):

(LatestBuild là một liên kết đến các thư mục build) (ldid được cài đặt với dự án 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 [email protected]:/var/root 
ssh [email protected] "dpkg -r com.test.MyApp" 
ssh [email protected] "dpkg -i com.test.MyApp.deb" 
ssh [email protected] "killall -9 MyApp" 
#ssh [email protected] "killall -HUP SpringBoard" 
cd - 

nó có thể được cải thiện rất nhiều - nhưng nó chỉ hoạt động cho nhu cầu của tôi

4

Sự đồng thuận chung trong cộng đồng là điều này không được mong muốn. Một hệ thống xây dựng như Theos kết hợp với GDB trên thiết bị và một gói syslog hoặc deviceconsole là những gì nhiều người đang sử dụng.

+0

Cảm ơn những người đứng đầu. Bạn là một cái tên nổi tiếng trong cộng đồng jailbreak, vì vậy tôi tin tưởng câu trả lời của bạn. Đây có phải là cách bạn làm công việc của bạn? – Justin

+0

Đó là cách tôi thực hiện công việc của mình, vâng. Ngoài ra tôi sử dụng cycript để thực hiện một số thí nghiệm. – rpetrich

0

Tôi không am hiểu về xcode nhưng giống như hầu hết IDE của giả định trong hình dạng này hay hình khác bạn có thể chạy tập lệnh xây dựng bài đăng nếu bạn có thể tìm ra điều đơn giản như lệnh scp tải lên từ đó bạn có thể sử dụng ldid -S nameofapp trong thư mục mà ứng dụng được tải lên.

Bạn có thể nếu bạn muốn cho phép ứng dụng của mình cư trú trong/Ứng dụng mặc dù nâng cấp lên 4.3.5 nhiều khả năng buộc bạn trên Jailbreak được chia sẻ, tôi không biết về JB chưa được chia sẻ cho 4.3.5. phải khởi động lại.

Theo như trình gỡ rối cung cấp cho gdb (bạn có thể lấy nó từ cydia), hãy thực sự hữu ích :). Những gì Id làm là chỉ có xcode chạy một kịch bản xây dựng bài viết để sử dụng scp để tải lên thiết bị của bạn sau đó đăng nó bằng tay với ldid thats cách dễ nhất tôi có thể nghĩ đến trừ khi bạn có quyền truy cập vào một idevice nhà phát triển.

Cho tôi một vài phút Ill viết kịch bản và cố gắng mô tả cách hoạt động Tôi cần một ai đó kể từ khi tôi cuối cùng cũng có một chuỗi công cụ mở đang hoạt động. :)

Một upload đơn giản script

#!/bin/bash 
scp -r $1 [email protected]$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) 

bạn có thể tìm ip của bạn với SBSettings hoặc bằng cách thiết lập nhấn vào mũi tên màu xanh bên cạnh ap của bạn và nó sẽ cho bạn biết.

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

tôi đã đặt tên nó tải lên.sh nhưng bạn có thể đặt tên cho nó bất cứ điều gì

Một ví dụ

upload.sh dpatcher.app [email protected] /Applications 

Sau đó, tất cả các bạn làm là ssh vào và ký tên với ldid -S nameofapp

Nếu bạn muốn tải lên tập tin duy nhất loại bỏ -r như thats cho tải lên đệ quy (tức là thư mục)

lý do bạn phải sử dụng scp hoặc sftp để tải lên tệp là bình thường ftp AFAIK không được hỗ trợ khi sử dụng ứng dụng của bên thứ ba.

Tôi không chắc chắn cách tích hợp với Xcode Tôi làm mọi thứ với vi, emacs hoặc nano (và tôi không sở hữu máy mac).

Các vấn đề liên quan