2011-09-02 15 views
10

चलाएं मैं इस बात पर सराहना करता हूं कि इस विषय पर पहले से ही प्रश्न हैं, लेकिन जिन लोगों को मैं ढूंढ सकता हूं उन्हें पढ़ना (विशेष रूप से यह एक: Tell AppleScript To Build XCode Project), वे सब कुछ जोड़े साल पुराना और जवाब एक्सकोड के वर्तमान संस्करण पर लागू नहीं प्रतीत होता है।ऐप्पलस्क्रिप्ट सिंटैक्स को साफ़ करने के लिए एक्सकोड 4.1 को स्वचालित करने के लिए, फिर

इसी प्रकार लिंक किए गए प्रश्न के लिए, मैं एक एक्सकोड प्रोजेक्ट खोलने, इसे बनाने और फिर आईफोन सिम्युलेटर (v4.3) में ऐप चलाने के लिए स्वचालित करने का प्रयास कर रहा हूं।

अन्य सवाल में जवाब के आधार पर मैंने लिखा है निम्न स्क्रिप्ट:

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 

दुर्भाग्य से, जब मैं इस चलाएँ: प्रश्न में परियोजना सेलेनियम परियोजना की iPhoneDriver (http://code.google.com/p/selenium/wiki/IPhoneDriver विवरण के लिए यहां देखें)

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 

अगर मैं सिर्फ खुला आदेश चला, Xcode मुद्दे के बिना परियोजना को खोलता है: मैं निम्नलिखित मिलता है। लेकिन जैसे ही मैं बाकी स्क्रिप्ट को डॉक बाउंस में एक्सकोड आइकन शामिल करता हूं, लेकिन एप्पलस्क्रिप्ट संपादक से ऊपर के अलावा, मुझे यह सब मिलता है।

क्या कोई सलाह दे सकता है कि मैं क्या गलत कर रहा हूं? यह पहली बार है जब मैंने ऐप्पलस्क्रिप्ट या एक्सकोड का उपयोग किया है, इसलिए मैं समस्या का निदान करने के लिए संघर्ष कर रहा हूं।

मैंने एक्सकोड ऐप्पलस्क्रिप्ट शब्दकोश को देखने का प्रयास किया है, लेकिन काम किए बिना उदाहरणों के बिना मैं निश्चित रूप से सिंटैक्स निर्धारित नहीं कर सकता।

किसी भी मदद के लिए अग्रिम धन्यवाद!

+0

मैं उलझन में हूं। क्या आप अपनी परियोजना "निर्माण" या "रन" करना चाहते हैं? –

उत्तर

3

आप Xcode अग्रभूमि करने के लिए आने के साथ ठीक कर रहे हैं, मैं बजाय इसका उपयोग क्यों:

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

AppleScript का मिश्रण है, और कमांड लाइन टूल (xcodebuild) का उपयोग करना, मैं इस के साथ आया था:

-- 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 

यह बताएं कि यह आपके लिए काम करता है या नहीं। मैंने आईफोन प्रोजेक्ट के साथ शेर पर एक्सकोड 4.2.1 के खिलाफ इसका परीक्षण किया।

+0

कमाल :-)। मुझे विश्वास नहीं है कि यह और अधिक नहीं उठाया गया है। –

+0

इस स्क्रिप्ट को कैसे चलाएं? क्या हमें 1 खोल और 1 ऐप्पल स्क्रिप्ट बनाने की आवश्यकता है और फिर शैल स्क्रिप्ट के भीतर सेब स्क्रिप्ट को कॉल करें? एक्सकोड 4.2.1 के साथ आप कैसे परीक्षण करते हैं? – Abhinav

+0

@Abhinav बस ऐप्पलस्क्रिप्ट संपादक (/ अनुप्रयोग/उपयोगिता में स्थापित) में स्क्रिप्ट कॉपी और पेस्ट करें। "एक्सकोड 4.2.1 के साथ आप कैसे परीक्षण करते हैं?" => आपका क्या मतलब है? – Guillaume

0

हालांकि मैं उपरोक्त ऐप्पलस्क्रिप्ट को वोट देता हूं और उत्साहित करता हूं, जो वास्तव में अच्छा है (और यह भी काम करता है ...) सभी पेशेवर होने, पुराने संस्करणों और चरम मामलों का ख्याल रखना आदि। प्रश्न द्वारा सुझाए गए स्क्रिप्ट को पहले काम करना चाहिए था जगह।

कारण यह काम नहीं करता है एक्सकोड स्क्रिप्टबैक टूट गया है। न केवल "साफ" काम नहीं करता है। एक्सकोड के आंतरिक ऑब्जेक्ट मॉडल के साथ करने की कोशिश की जाने वाली अधिकांश चीजें काम नहीं करती हैं।

ऐप्पलस्क्रिप्ट आर्किटेक्चर (ओएसए) को "मानव समझने योग्य" ऑब्जेक्ट ग्राफ़ का खुलासा करने के लिए एक एप्लिकेशन की आवश्यकता होती है जो AppleScripts संदर्भ दे सकता है। Xcode में यह लग सकता है जैसे:

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

या

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

उपयोगकर्ता-इंटरफ़ेस पटकथा scripter की अंतिम उपाय है जब आवेदन लिपि की गरीब है। चूंकि यूआई पदानुक्रम प्रकृति में मानक है, और इसकी स्क्रिप्ट योग्यता कोको से मुक्त है, यह हमेशा काम करता है।

संबंधित मुद्दे