2011-09-02 25 views
10

Tôi đánh giá cao rằng đã có câu hỏi về chủ đề này, nhưng đọc những thứ tôi có thể tìm thấy (đặc biệt là: Tell AppleScript To Build XCode Project), tất cả chúng có vẻ là một vài tuổi và câu trả lời dường như không áp dụng cho phiên bản Xcode hiện tại.Cú pháp của AppleScript để tự động hóa Xcode 4.1 thành Dọn dẹp, Xây dựng rồi Chạy

Tương tự như câu hỏi được liên kết, tôi đang cố gắng tự động mở một dự án Xcode, xây dựng nó và sau đó chạy ứng dụng trong Trình mô phỏng iPhone (v4.3). Các dự án trong câu hỏi là iPhoneDriver Selen dự án (xem ở đây để biết chi tiết: http://code.google.com/p/selenium/wiki/IPhoneDriver)

Dựa trên câu trả lời trong câu hỏi khác, tôi đã viết kịch bản sau đây:

tell application "Xcode" 
    open "/Users/<username>/Documents/Code/Selenium/iphone/iWebDriver.xcodeproj" 
    tell project "iWebDriver" 
     clean 
     build 
     try 
      debug 
     end try 
    end tell 
end tell 

Thật không may, khi tôi chạy này Tôi nhận được các thông tin sau:

tell application "Xcode" 
open "/Users/ben.adderson/Documents/Code/Selenium/iphone/iWebDriver.xcodeproj" 
    --> project document "iWebDriver.xcodeproj" 
clean project "iWebDriver" 
    --> missing value 
build project "iWebDriver" 
    --> missing value 
debug project "iWebDriver" 
    --> error number -1708 
end tell 

Nếu tôi chỉ chạy lệnh mở, Xcode sẽ mở dự án mà không gặp sự cố. Nhưng ngay sau khi tôi bao gồm phần còn lại của kịch bản biểu tượng Xcode trong dock bị trả lại, nhưng đó là tất cả tôi nhận được, ngoài những điều trên từ trình soạn thảo AppleScript.

Ai có thể tư vấn cho những gì tôi đang làm sai không? Đây là lần đầu tiên tôi sử dụng AppleScript hoặc Xcode, vì vậy tôi đang cố gắng để chẩn đoán vấn đề.

Tôi đã thử xem từ điển Xcode AppleScript, nhưng không có ví dụ làm việc, tôi không thể xác định cú pháp mình cần.

Cảm ơn trước sự giúp đỡ nào!

+0

Tôi là một litte nhầm lẫn. Bạn có muốn "xây dựng" hoặc "chạy" dự án của bạn không? –

Trả lời

3

Nếu bạn ok với Xcode đến tiền cảnh, tôi sẽ sử dụng này để thay thế:

tell application "Xcode" 
    activate 
    open "/Users/<username>/Documents/Code/Selenium/iphone/iWebDriver.xcodeproj" 
end tell 

tell application "System Events" 
    key code 15 using {command down} 
end tell 
12

Sử dụng một kết hợp của AppleScript, và công cụ dòng lệnh (xcodebuild), tôi đến với điều này:

-- This script will clean, build then run the project at the path below. 
-- You will need to slightly modify this script if you have more than one xcodeproject at this path 

set pathOfXcodeProject to "/Users/<username>/Documents/Code/Selenium/iphone/iWebDriver.xcodeproj" 
-- End of configuration 



do shell script "cd " & pathOfXcodeProject & " && /usr/bin/xcodebuild clean build " 

tell application "Xcode" 

    open pathOfXcodeProject 
    activate 
end tell 

tell application "System Events" 
    get system attribute "sysv" 
    if result is greater than or equal to 4144 then -- Mac OS X 10.3.0 
     if UI elements enabled then 
      tell application process "Xcode" 
       click menu item "Run" of menu 1 of menu bar item "Product" of menu bar 1 

      end tell 
     else 
      beep 
      display dialog "GUI Scripting is not enabled" & return & return & "Open System Preferences and check Enable Access for Assistive Devices in the Universal Access preference pane, then run this script again." with icon stop 
      if button returned of result is "OK" then 
       tell application "System Preferences" 
        activate 
        set current pane to pane "com.apple.preference.universalaccess" 
       end tell 
      end if 
     end if 
    else 
     beep 
     display dialog "This computer cannot run this script" & return & return & "The script uses GUI Scripting technology, which requires an upgrade to Mac OS X 10.3 Panther or newer." with icon caution buttons {"Quit"} default button "Quit" 
    end if 
end tell 

Hãy cho tôi biết nếu điều này phù hợp với bạn. Tôi đã thử nghiệm nó với Xcode 4.2.1 trên Lion, với một dự án iPhone.

+0

Amazing :-). Tôi không thể tin rằng điều này đã không được upvoted hơn. –

+0

Làm cách nào để chạy tập lệnh này? Chúng ta có cần tạo 1 shell & 1 Apple script và sau đó gọi script apple từ bên trong script shell? Làm thế nào để bạn thử nghiệm với XCode 4.2.1? – Abhinav

+0

@Abhinav Chỉ cần sao chép và dán tập lệnh trong AppleScript Editor (được cài đặt trong/Applications/Utilities). "Làm thế nào để bạn thử nghiệm với XCode 4.2.1?" => ý của bạn là gì? – Guillaume

0

Mặc dù tôi bỏ phiếu và cổ vũ AppleScript ở trên, điều này thực sự tốt (và cũng hoạt động ...) là chuyên nghiệp, chăm sóc các phiên bản cũ và các trường hợp cực đoan vv. địa điểm.

Lý do không hoạt động là đoạn mã Xcode bị hỏng. Không chỉ "sạch" không hoạt động. Hầu hết mọi thứ tôi đã cố gắng làm với mô hình đối tượng nội bộ của Xcode không hoạt động.

Kiến trúc AppleScript (OSA) yêu cầu ứng dụng hiển thị biểu đồ đối tượng "có thể hiểu được" mà AppleScripts có thể tham chiếu. Trong Xcode nó có thể trông giống như:

tell target "my library" of project "my project" of workspace "my workspace" to clean. 

hoặc

tell application "Xcode" to close all projects whose name contains "Lib" 

người dùng giao diện kịch bản là phương sách cuối cùng của scripter khi ứng dụng xây dựng kịch bản là nghèo. Bởi vì hệ thống phân cấp UI là tiêu chuẩn trong tự nhiên, và khả năng viết của nó là miễn phí từ Cocoa, nó luôn hoạt động.

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