ვინც დაინტერესდით ვაშლიფონის პროგრამირებით და ჯერ კიდევ ვერ მოახერხეთ თქვენი დაწერილი აპლიკაციის გადატანა iPhone-ში დეველოპერის ლიცენზიის გარეშე, მაშინ ეს პოსტი თქვენთვის ყოფილა :)
ძალიან ბევრი თვლის, რომ ზოგადად აიფონის პროგრამირება შეზღუდულია, ცუდია, ნაგავია, დებილების არის მხოლოდ, შეზღუდულები არიან ვინც Objective C-ზე წერენ, XCode-ში და ა.შ., მოკლედ რა დალევს უსაქმურ და ჭოროკინა ხალხს :), ჰოდა რომ დარწმუნდეთ იმაში, რომ აიფონის პროგრამირება არანაირად არ არის შეზღუდული, თუნდაც იმ კუთხით რომ თავისუფლად შეგიძლიათ დაწეროთ აპლიკაცია და გადაიტანოთ თქვენსავე აიფონში ზედმეტი ფასიანი ლიცენზიების გარეშე, წარმოგიდგენთ პატარა მაიმუნობებს :)))
პირველ რიგში, უნდა შევქმნათ ლიცენზია საკუთარი ხელმოწერით, რასაც გამოიყენებს IOS SDK კომპილაციის დროს და არ მოითხოვს ოფიციალურად ნაყიდ 99$-იან ეფლის ლიცენზიას.
ლიცენზიის შექმნა: ჩავრთათ Keychain Access, მენიუში მოძებნეთ Certificate Assistant და შემდეგ Create a Certificate.
დასახელებაში მიუთითეთ: XNA Gamer
ტიპში: Code Signing
აღნიშვნა დასვით "Let me override defaults" ველზე
და გადადით შემდეგ ეტაპზე, ვალიდაციაში რამდენი დღეც გსურთ იმდენი მიუთითეთ, უმჯობესი იქნება ბევრი :)
ელ-ფოსტის ველი დატოვეთ ცარიელი და დაასრულეთ.
შექმნილ სერთიფიკატზე, თქვენ დაინახავთ წითლად წარწერას: "This root certificate is not trusted". ასეც უნდა იყოს.
შემდეგ ჩართეთ Terminal_ი და გაუშვით შემდეგი ბრძანება:
sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist
ეს ბრძანება დააბექაფებს Info.plist ფაილს, რომელიც არის ზემოთ ხსენებულ მისამართში და დარჩენილ ფაილში ჩაანაცვლებს ტექსტ: XCiPhoneOSCodeSignContext _ს
XCCodeSignContext_ით.
რის შემდეგაც გვეძლევა საშუალება, რომ აპლიკაცია დავაკომპილოთ საკუთარი ხელმოწერის მქონე სერთიფიკატით.
პ.ს. თუ XCode ჩართული გაქვთ, უმჯობესი იქნება რომ გადატვირთოთ, ან ცოტა ხნით გათიშოთ.
შემდეგი ეტაპი არის - XCode_ს მივცეთ საშუალება დაჯეილებული ვაშლიფონებისთვის დაგვიბილდოს აპლიკაცია.
ეს არის ეგრედწოდებული პაჩი XCode-სთვის.
შემდეგი ბრძანება გავუშვათ ტერნიმალში:
sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/SDKSettings.plist
(შეიძლება თქვენ სხვა ვერსია გქონდეთ დაინსტალებული SDK_სი და XCode-ის და შესაბამისად მისამართში უნდა ჩაასწოროთ რომ შეცდომაზე არ გავიდეს)
მსგავსად წინა ბრძანების, ესეც დაგვიბექაფებს კონფიგის ფაილს, და ჩაგვისწორებს მონაცემებს, რომ ხელის მოწერაზე აღარ შეამოწმოს კოდი კომპილაციის დროს.
და ბოლო ეტაპი:
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support
ეს ბრძანებები შეგიძლიათ ცალ-ცალკე გაუშვათ ტერნიმალიდან, ან სკრიპტის ფაილი შექმნათ და ერთიანად გაუშვათ.
---------------------
patching - ი დასრულდა.
ეხლა შეგვიძლია დავბილდოთ ნებისმიერ აპლიკაცია, და გადავიტანოთ ჩვენს აიფონში.
ოღონდ ერთი პატარა ნიუანსი, ყოველი აპლიკაციის დაწერის დროს, ყოველ პროექტზე ასე რომ ვთქვათ, დაგვჭირდება სკრიპტის დამატება პროექტში.
შევქმნათ დირექტორია და ჩავაგდოთ შიგნით სკრიპტისთვის საჭირო ფაილი:
mkdir /Developer/xnagamer
cd /Developer/xnagamer
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py
ფაილის შექმნის შემდეგ, ჩავრთათ XCode და შევქმნათ პროექტი, მივუერთოთ ჩვენი აიფონი კომპს და XCode-ში დავანახოთ Device-ად.
(თუ არ იცით ეს როგორ კეთდება, უნდა შეხვიდეთ XCode მენიუში Window განყოფილებაში და აირჩიოთ Organizer, მარცხენა მენიუში მონიშნეთ თქვენი Device და მონიშვნა გაუკეთეთ "Use for development" ველზე.
ამის შემდეგ, მენიუ Project-ში მოძებნეთ "New Build Phase" და აირჩიეთ "New Run Script Build Phase", გამოსულ ფანჯარაში ჩასვით შემდეგი ტექსტი:
export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
/Developer/xnagamer/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
fi
"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" 1> /tmp/RunUnitTests.out
და დახურეთ.
დაბრუნდით ისევ Project მენიუში და აირჩიეთ "Edit Project Settings", გადადით Build ჩანართში და მოძებნეთ "Code Signing Identify" ელემენტი, ჩამოშალეთ გვერდით მნიშვნელობები და აირჩიეთ: "Don't Code Sign".
მზად არის, დაბილდეთ თქვენი აპლიკაცია და გაუშვით, თქვენს ვაშლიფონში.
პ.ს. თუ დივაისი არ გაქვთ მითითებული და გაქვთ სიმულატორი, მაშინ სკრიპტი უნდა წაშალოთ, თორემ ბილდვის დროს გავა შეცდომაზე.
ძალიან ბევრი თვლის, რომ ზოგადად აიფონის პროგრამირება შეზღუდულია, ცუდია, ნაგავია, დებილების არის მხოლოდ, შეზღუდულები არიან ვინც Objective C-ზე წერენ, XCode-ში და ა.შ., მოკლედ რა დალევს უსაქმურ და ჭოროკინა ხალხს :), ჰოდა რომ დარწმუნდეთ იმაში, რომ აიფონის პროგრამირება არანაირად არ არის შეზღუდული, თუნდაც იმ კუთხით რომ თავისუფლად შეგიძლიათ დაწეროთ აპლიკაცია და გადაიტანოთ თქვენსავე აიფონში ზედმეტი ფასიანი ლიცენზიების გარეშე, წარმოგიდგენთ პატარა მაიმუნობებს :)))
პირველ რიგში, უნდა შევქმნათ ლიცენზია საკუთარი ხელმოწერით, რასაც გამოიყენებს IOS SDK კომპილაციის დროს და არ მოითხოვს ოფიციალურად ნაყიდ 99$-იან ეფლის ლიცენზიას.
ლიცენზიის შექმნა: ჩავრთათ Keychain Access, მენიუში მოძებნეთ Certificate Assistant და შემდეგ Create a Certificate.
დასახელებაში მიუთითეთ: XNA Gamer
ტიპში: Code Signing
აღნიშვნა დასვით "Let me override defaults" ველზე
და გადადით შემდეგ ეტაპზე, ვალიდაციაში რამდენი დღეც გსურთ იმდენი მიუთითეთ, უმჯობესი იქნება ბევრი :)
ელ-ფოსტის ველი დატოვეთ ცარიელი და დაასრულეთ.
შექმნილ სერთიფიკატზე, თქვენ დაინახავთ წითლად წარწერას: "This root certificate is not trusted". ასეც უნდა იყოს.
შემდეგ ჩართეთ Terminal_ი და გაუშვით შემდეგი ბრძანება:
sudo /usr/bin/sed -i .bak 's/XCiPhoneOSCodeSignContext/XCCodeSignContext/' /Developer/Platforms/iPhoneOS.platform/Info.plist
ეს ბრძანება დააბექაფებს Info.plist ფაილს, რომელიც არის ზემოთ ხსენებულ მისამართში და დარჩენილ ფაილში ჩაანაცვლებს ტექსტ: XCiPhoneOSCodeSignContext _ს
XCCodeSignContext_ით.
რის შემდეგაც გვეძლევა საშუალება, რომ აპლიკაცია დავაკომპილოთ საკუთარი ხელმოწერის მქონე სერთიფიკატით.
პ.ს. თუ XCode ჩართული გაქვთ, უმჯობესი იქნება რომ გადატვირთოთ, ან ცოტა ხნით გათიშოთ.
შემდეგი ეტაპი არის - XCode_ს მივცეთ საშუალება დაჯეილებული ვაშლიფონებისთვის დაგვიბილდოს აპლიკაცია.
ეს არის ეგრედწოდებული პაჩი XCode-სთვის.
შემდეგი ბრძანება გავუშვათ ტერნიმალში:
sudo /usr/bin/sed -i .bak '/_REQUIRED/N;s/YES/NO/' /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/SDKSettings.plist
(შეიძლება თქვენ სხვა ვერსია გქონდეთ დაინსტალებული SDK_სი და XCode-ის და შესაბამისად მისამართში უნდა ჩაასწოროთ რომ შეცდომაზე არ გავიდეს)
მსგავსად წინა ბრძანების, ესეც დაგვიბექაფებს კონფიგის ფაილს, და ჩაგვისწორებს მონაცემებს, რომ ხელის მოწერაზე აღარ შეამოწმოს კოდი კომპილაციის დროს.
და ბოლო ეტაპი:
cd /Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/Plug-ins/iPhoneOS\ Build\ System\ Support.xcplugin/Contents/MacOS/
dd if=iPhoneOS\ Build\ System\ Support of=working bs=500 count=255
/bin/mv -n iPhoneOS\ Build\ System\ Support iPhoneOS\ Build\ System\ Support.original
/bin/mv working iPhoneOS\ Build\ System\ Support
chmod a+x iPhoneOS\ Build\ System\ Support
ეს ბრძანებები შეგიძლიათ ცალ-ცალკე გაუშვათ ტერნიმალიდან, ან სკრიპტის ფაილი შექმნათ და ერთიანად გაუშვათ.
---------------------
patching - ი დასრულდა.
ეხლა შეგვიძლია დავბილდოთ ნებისმიერ აპლიკაცია, და გადავიტანოთ ჩვენს აიფონში.
ოღონდ ერთი პატარა ნიუანსი, ყოველი აპლიკაციის დაწერის დროს, ყოველ პროექტზე ასე რომ ვთქვათ, დაგვჭირდება სკრიპტის დამატება პროექტში.
შევქმნათ დირექტორია და ჩავაგდოთ შიგნით სკრიპტისთვის საჭირო ფაილი:
mkdir /Developer/xnagamer
cd /Developer/xnagamer
curl -O http://www.alexwhittemore.com/iphone/gen_entitlements.txt
mv gen_entitlements.txt gen_entitlements.py
chmod 777 gen_entitlements.py
ფაილის შექმნის შემდეგ, ჩავრთათ XCode და შევქმნათ პროექტი, მივუერთოთ ჩვენი აიფონი კომპს და XCode-ში დავანახოთ Device-ად.
(თუ არ იცით ეს როგორ კეთდება, უნდა შეხვიდეთ XCode მენიუში Window განყოფილებაში და აირჩიოთ Organizer, მარცხენა მენიუში მონიშნეთ თქვენი Device და მონიშვნა გაუკეთეთ "Use for development" ველზე.
ამის შემდეგ, მენიუ Project-ში მოძებნეთ "New Build Phase" და აირჩიეთ "New Run Script Build Phase", გამოსულ ფანჯარაში ჩასვით შემდეგი ტექსტი:
export CODESIGN_ALLOCATE=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/codesign_allocate
if [ "${PLATFORM_NAME}" == "iphoneos" ]; then
/Developer/xnagamer/gen_entitlements.py "my.company.${PROJECT_NAME}" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent";
codesign -f -s "iPhone Developer" --entitlements "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/${PROJECT_NAME}.xcent" "${BUILT_PRODUCTS_DIR}/${WRAPPER_NAME}/"
fi
"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests" 1> /tmp/RunUnitTests.out
და დახურეთ.
დაბრუნდით ისევ Project მენიუში და აირჩიეთ "Edit Project Settings", გადადით Build ჩანართში და მოძებნეთ "Code Signing Identify" ელემენტი, ჩამოშალეთ გვერდით მნიშვნელობები და აირჩიეთ: "Don't Code Sign".
მზად არის, დაბილდეთ თქვენი აპლიკაცია და გაუშვით, თქვენს ვაშლიფონში.
პ.ს. თუ დივაისი არ გაქვთ მითითებული და გაქვთ სიმულატორი, მაშინ სკრიპტი უნდა წაშალოთ, თორემ ბილდვის დროს გავა შეცდომაზე.
No comments:
Post a Comment