2012-07-17 28 views
8

Tôi đang cố gắng đơn giản hóa quá trình xây dựng-> lưu trữ-> để xuất bản ứng dụng iOS. Chúng tôi có hơn 50 ứng dụng dành cho thiết bị di động có khuôn khổ gần như giống hệt nhau nhưng có các cài đặt cấu hình và tác phẩm nghệ thuật khác nhau.Tạo và lưu trữ hàng loạt ứng dụng iOS qua Thiết bị đầu cuối

Tôi thường tải từng dự án trong xcode 4.2 và build-> archive-> gửi cách thông thường với GUI xcode, nhưng chúng tôi hiện có hơn 50 ứng dụng và quá trình này rất mệt mỏi bất cứ khi nào chúng tôi đẩy bản cập nhật .

Điều đó đang được nói, tôi đang cố gắng tăng tốc quá trình này bằng cách sử dụng chức năng trình bao. tôi đã làm rất nhiều nghiên cứu và thấy rằng xcodebuild (Xem trả lời Reid) nên làm việc, tuy nhiên tùy chọn Archive không hoạt động khi tôi nhận được lỗi sau:

unsupported build action 'archive' 

Vì vậy, tôi đã viết như sau:

# $1 should be a date like: 2012-07-17 
# $2 should be a time like: 10.31AM 
# $mybase will be the current directory at the time the function was called 
# so make sure to cd into the folder containing the xcode project folders first 

function xcodeArchive { 
    mkdir ~/Library/Developer/Xcode/Archives/$1 
    mybase=$PWD 
    for x in `ls` 
    do 
     mkdir ~/Library/Developer/Xcode/Archives/$1/$x 
     mkdir ~/Library/Developer/Xcode/Archives/$1/$x/dSYMs 
     mkdir ~/Library/Developer/Xcode/Archives/$1/$x/Products 
     mkdir ~/Library/Developer/Xcode/Archives/$1/$x/Products/Applications 
     cd $mybase/$x 
     xcodebuild 
     #read -p "Press [Enter] to continue" 
     cd $mybase/$x 
     cp $x/$x-Info.plist ~/Library/Developer/Xcode/Archives/$1/$x/Info.plist 
     cp -r build/Release-iphoneos/$x.app.dSYM ~/Library/Developer/Xcode/Archives/$1/$x/dSYMs/$x.app.dSYM 
     cp -r build/Release-iphoneos/$x.app ~/Library/Developer/Xcode/Archives/$1/$x/Products/Applications/$x.app 
     cd ~/Library/Developer/Xcode/Archives/$1/ 
     mv $x $x\ $1\ $2.xcarchive 
     cd $mybase 
    done 
} 
export -f xcodeArchive 

Tôi đặt tên này vào tệp .bash_profile và mọi thứ chạy đúng như mong đợi, ngoại trừ tôi không sao chép đúng "Info.plist" và tôi không thể tìm ra nơi để sao chép từ đó hoặc cách tạo nó. Vì vậy, bây giờ tôi đang mắc kẹt.

Xcode sẽ nhận dạng lưu trữ, nhưng nó sẽ liệt kê chúng trong "Lược đồ không xác định" và "Lưu trữ không tên" trong trình tổ chức.

Bất kỳ trợ giúp nào liên quan đến bây giờ để nhận được Info.plist chính xác được đánh giá cao.

Tôi cũng hoan nghênh các đề xuất về cách cải thiện tập lệnh và/hoặc cách hiệu quả hơn để tạo hàng loạt + lưu trữ các ứng dụng iOS này.

Lưu ý:

  • Tôi không thể nâng cấp vượt Xcode 4.2 như yêu cầu (như tôi hiểu nó) OS X 10.7+ mà tôi không thể có được chưa (máy tính công ty) .

  • Tôi vẫn còn rất nhiều người mới bash/shell, vì vậy tôi xin lỗi vì bất kỳ mã/thực hành xấu nào ở trên.

  • Ngoài ra, đây là để gửi ứng dụng chính thức, không dành cho ad-hoc hoặc bất cứ điều gì như thế.

Cảm ơn bạn đã giúp đỡ.

Trả lời

1

OK Tôi đã tìm được giải pháp sẽ hoạt động. Sau khi tìm kiếm nhiều hơn và rất nhiều đoán và kiểm tra, tôi thấy tôi vẫn có thể sử dụng tùy chọn "lưu trữ" với xcodebuild, tôi chỉ cần chỉ định không gian làm việc và lược đồ và dường như tôi đã không làm điều đó một cách chính xác trước đây công trinh.

Vì vậy, đối với bất cứ ai tìm kiếm một giải pháp tương tự (đối với dự án lưu trữ hàng loạt xcode), đây là chức năng của tôi:

# $mybase will be the current directory at the time the function was called 
# so make sure to cd into the folder containing the xcode project folders first 

function xcodeArchive { 
    mybase=$PWD 
    for x in `ls` 
    do 
     cd $mybase/$x 
     xcodebuild -workspace $x.xcodeproj/project.xcworkspace -scheme $x archive 
     cd $mybase 
    done 
} 
export -f xcodeArchive 
13

tôi đã cùng một vấn đề với lệnh lưu trữ, và tìm thấy câu hỏi này thông qua Google.Nó sẽ thất bại với build lệnh này:

xcodebuild -verbose -project $ProductName.xcodeproj -target $ProductName -configuration Release -sdk $SDK clean archive CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build" PROVISIONING_PROFILE="${DIST_PROVISONING_PROFILE}" 

Tuy nhiên, nó sẽ thành công với build lệnh này:

xcodebuild -verbose -project $ProductName.xcodeproj -scheme $ProductName -configuration Release -sdk $SDK clean archive CONFIGURATION_BUILD_DIR="$PROJECT_PATH/build" PROVISIONING_PROFILE="${DIST_PROVISONING_PROFILE}" 

Sự khác biệt chỉ được quy định cụ thể chương trình này thay cho mục tiêu để xây dựng. Nếu có lý do hợp lý cho hành vi này, tôi sẽ thích nghe nó.

Tôi đang chạy XCode 4.5.1 trên Mac OS X 10.7.5

+1

Thật vậy, đó cũng là tìm kiếm của tôi. Tôi vẫn chưa tìm được lời giải thích cho điều này, nhưng giả định của tôi là nó chỉ là cách chương trình được thiết kế để thực hiện, yêu cầu một sơ đồ ... nhưng điều đó không giải thích tại sao thông báo lỗi trở lại quá mơ hồ ... – mason81

+1

@ mason81 Điều gì là khó hiểu một cách khó hiểu khi bạn lộn xộn theo cách của bạn, là lệnh trên cùng (thất bại) hoạt động tốt nếu bạn chỉ xây dựng, không cố gắng lưu trữ bản dựng đó để gửi cửa hàng. – Tal

+1

oh điều đó thực sự khó hiểu (và kỳ lạ thú vị). Tôi đã không thử nó cho mục đích không lưu trữ, nhưng chỉ cần thử nghiệm nó và bạn nói đúng, nó hoạt động tốt ... Thật kỳ lạ! – mason81

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