14

TLDR:

उद्यम प्रमाणपत्रएप्लिकेशन स्टोर से वितरित iOS एप्लिकेशन और उद्यम

त्रुटि के साथ एप्लिकेशन को निर्यात में ए मुद्दा: वाइल्डकार्ड ऐप्लिकेशन आईडी प्रोफाइल

घर प्रावधान में बनाने के लिए इस्तेमाल नहीं किया जा सकता

बी एंटरप्राइज़ और ऐपस्टोर पर ऐप वितरित करने के लिए सही दृष्टिकोण

हम ऐप्पल के ऐपस्टोर पर वर्षों से ऐप वितरित कर रहे हैं, एंटरप्राइज नया जोड़ा है। - ऐप में वॉच ऐप है और आईओएस 8+ का समर्थन करता है।

अब तक क्या किया जाता है:
- दो अलग-अलग देव खातों और प्रमाणपत्र।
- प्रत्येक पर अलग प्रावधान प्रोफाइल खातों
- एंटरप्राइज के लिए एक AppStore कॉन्फ़िग और योजना का निर्माण
- योजना/कॉन्फ़िग का उपयोग कर bundleId की तरह सेटिंग्स के बीच स्विच करने, आदि
- सफलतापूर्वक आर्काइव उद्यम अनुप्रयोग

मैं नहीं अलग Info.plist या हकों बनाया है (मैं की जरूरत है?)

मुद्दा: जब मैं उद्यम आर्काइव निर्यात करने की कोशिश, मैं त्रुटि

हो रही है

वाइल्डकार्ड ऐप्लिकेशन आईडी प्रोफाइल <

मेरे द्वारा बनाए गए उचित प्रावधान प्रोफाइल की क्या ज़रूरत है घर प्रावधान में बनाने के लिए इस्तेमाल नहीं किया जा सकता। एक्सकोड द्वारा बनाए गए सिवाय इसके अलावा उनमें से कोई भी वाइल्डकार्ड नहीं है।

मैंने this post पढ़ा है, जिसमें कहा गया है कि विभिन्न लक्ष्यों को बनाने की आवश्यकता है। यह दोनों लक्ष्य को सिंक में रखने का ओवरहेड है।

प्रश्न:

bool itIsPossible = Can this be achieved with Configuration/Schemes? 

if (itIsPossible){ 
– What else I need to create separate entitlements etc? 
}else{ 
– Do I have to create new target to support Enterprise App? 
– Separate Target for Watch and Extension? 
– What else I need to create separately Info.plist, entitlements etc? 
} 
+0

क्या आपने सुनिश्चित किया है कि नीचे दिए गए लिंक में सभी कदम किए गए हैं? https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/DistributingEnterpriseProgramApps/DistributingEnterpriseProgramApps.html – uchiha

+0

हाँ, मेरे पास है। धन्यवाद – kthorat

उत्तर

4

का उपयोग करते हुए लक्ष्यों को

नए लक्ष्यों कुछ भूमि के ऊपर बना सकता हूँ (नई फ़ाइलें सभी प्रासंगिक लक्ष्यों में जोड़ा जाना चाहिए)। नए लक्ष्य

याद रखें कि App स्टोर निष्पादन और उद्यम निष्पादन दो अलग-अलग आवेदन, विभिन्न प्रमाण पत्र के साथ कर रहे हैं आसानी से, compartmentalize को जो फ़ाइल चला जाता है जहां अलग plist & config, यूनिट टेस्ट मैचों के लिए एक मंच प्रदान आदि की अनुमति है और हस्ताक्षर।(1)


अलग लक्ष्य सिफारिशों (एक वास्तविक उत्पाद से)

  • साझा पात्रता
  • परियोजना> लक्ष्य> सामान्य> टीम>वहाँ अलग टीमों लेने
  • < आपका लक्ष्य>। xconfig (वैकल्पिक & काम)
  • .plist (सबसे अधिक संभावना है, लेकिन जरूरी नहीं) (2)

(1) एक ही के बारे में एप्पल घड़ी निष्पादनयोग्य कहा जा सकता है
(2) अलग plist की अनुमति देता है रनटाइम जादू के लिए: संसाधनों द्वारा नियंत्रित एकल कोड

+0

उत्तर के लिए धन्यवाद। मैं निर्माण विन्यास का उपयोग कर विभिन्न प्रावधान प्रोफाइल, प्रमाणपत्र और बंडल आईडी का प्रबंधन कर सकता हूं। जो टीमों को छोड़ देता है, मुझे अभी भी मैन्युअल रूप से प्रबंधन करना है। मुझे लगता है कि दो लक्ष्यों के प्रबंधन से बेहतर है। – kthorat

+1

क्या आप दूसरों के लिए अपने अनुभव पर लाभ उठाने के लिए विवरण के साथ अपने प्रश्न का उत्तर पोस्ट कर सकते हैं? – SwiftArchitect

+0

आपको शायद किसी बिंदु पर एंटाइटेलमेंट में अंतर होगा, मुझे दिलचस्पी होगी कि अलग-अलग लक्ष्यों के बिना उनको कैसे संभाला जाए! – dogsgod

1

यदि आप प्रत्येक एप्लिकेशन के लिए अलग बिल्ड स्क्रिप्ट बना सकते हैं तो यह करना आसान है। अलग लक्ष्य रखने की जरूरत नहीं है।

यहां मेरी बिल्ड स्क्रिप्ट है: # 10/8/14 को गुयेन तुआन द्वारा निर्मित। ! #/bin/श

AP_NAME="$1" 
echo "App name $AP_NAME" 
FILE_NAME="$2" 
echo "FILE_NAME $FILE_NAME" 
SCHEME="$3" 
echo "SCHEME $SCHEME" 
PROVISIONING_NAME="$4" 
echo "provisioning $PROVISIONING_NAME" 
BUNDLE_ID="$5" 
echo "BUNDLE_ID $BUNDLE_ID" 
AP_ICON="$6" 
echo "AP_ICON $AP_ICON" 
PARENT_FOLDER="$7" 
echo "PARENT_FOLDER $PARENT_FOLDER" 
CONFIG="$8" 
echo "CONFIG $CONFIG" 

PROJECT_HOME_DIR="$9" 

#Goto working folder 
MY_PATH="`dirname \"$0\"`" 
cd $MY_PATH 
echo "build sh: This is the current working directory: $MY_PATH" 
SCRIPT_FOLDER=$(basename "$MY_PATH") 

MY_NAME=$(whoami) 
echo "Script Folder $SCRIPT_FOLDER" 
sudo sh sudo.sh 
echo "Global PATH: \n$PATH" 

#Go up to Project folder 
cd ../../ 
rm -r -f build/$PARENT_FOLDER 

PLIST=$PROJECT_HOME_DIR/Info.plist 
echo "Please enter build number" 
#BUILD_NUMBER=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$PLIST") 
#BUILD_NUMBER=$(expr $BUILD_NUMBER + 1) 
BUILD_NUMBER=`git rev-list HEAD --count` 
echo "Get provisioning file: UUID + name for $PROVISIONING_NAME" 

if test -d ~/Library/MobileDevice/Provisioning\ Profiles/; then 
    ProfilesDir=~/Library/MobileDevice/Provisioning\ Profiles/ 
else 
    ProfilesDir=/Library/Developer/XcodeServer/ProvisioningProfiles/ 
fi 

array=$(ls "$ProfilesDir") 
provi="" 
for i in $array; \ 
do output=$(/usr/libexec/PlistBuddy -c 'Print :Name' /dev/stdin <<< $(security cms -D -i "$ProfilesDir/${i%%/}") 2>&1); \ 
echo $output; \ 
if [ "$output" == "$PROVISIONING_NAME" ]; then provi=$(/usr/libexec/PlistBuddy -c 'Print :UUID' /dev/stdin <<< $(security cms -D -i "$ProfilesDir/${i%%/}") 2>&1); break; fi;\ 
done 

#echo PROVISIONING_UUID=$provi >> provisioning.properties 
echo "selected profile $provi" 

/usr/libexec/Plistbuddy -c "Set CFBundleVersion $BUILD_NUMBER" "$PLIST" 
/usr/libexec/Plistbuddy -c "Set CFBundleIdentifier $BUNDLE_ID" "$PLIST" 
xcodebuild -alltargets -configuration "$CONFIG" clean 
xcodebuild -scheme $SCHEME PRODUCT_BUNDLE_IDENTIFIER=$BUNDLE_ID ONLY_ACTIVE_ARCH=NO ARCHS="armv7 arm64" PROVISIONING_PROFILE=$provi PRODUCT_NAME="$AP_NAME" ASSETCATALOG_COMPILER_APPICON_NAME=$AP_ICON archive -archivePath "build/$PARENT_FOLDER/$FILE_NAME.xcarchive" 
#xcodebuild -exportArchive -archivePath "build/$PARENT_FOLDER/$FILE_NAME.xcarchive" -exportPath "build/$PARENT_FOLDER" 
#-exportOptionsPlist $PLIST 
echo "export ipa file" 
rm -r -f build/$PARENT_FOLDER/$FILE_NAME.ipa 
sh $MY_PATH/create_ipa.sh build/$PARENT_FOLDER/$FILE_NAME.xcarchive build/$PARENT_FOLDER/$FILE_NAME.ipa 
mv build/$PARENT_FOLDER/**You need to change this to your app name**/.ipa build/$PARENT_FOLDER/$FILE_NAME.ipa 
rm -r -f $HOME/Dropbox/$FILE_NAME.ipa 
cp build/$PARENT_FOLDER/$FILE_NAME.ipa $HOME/Dropbox/$FILE_NAME.ipa 

rm -r -f "build/$CONFIG-iphoneos" 

echo "copy xcarchive file into organizer" 
sh $MY_PATH/copy_resource.sh build/$PARENT_FOLDER/$FILE_NAME.xcarchive $MY_NAME 

और फिर दो निर्माण आदेश, उद्यम निर्माण के लिए एक और app की दुकान का निर्माण के लिए एक, कुछ इस तरह बना सकते हैं:

AP_NAME="ABCD" 
FILE_NAME="An App Name" 
SCHEME="Scheme for enterprise build" 
PROVISIONING_NAME="Expected provisioning profile, what is shown in XCode" 
BUNDLE_ID="app bundle Id" 
AP_ICON="custom icon if need?" 
PARENT_FOLDER="the folder that will contains the build" 
CONFIG="Release" 

#Goto working folder 
MY_PATH="`dirname \"$0\"`" 
sh $MY_PATH/build.sh "$AP_NAME" "$FILE_NAME" "$SCHEME" "$PROVISIONING_NAME" "$BUNDLE_ID" "$AP_ICON" "$PARENT_FOLDER" "$CONFIG" 

मामले में आप copy_resource स्क्रिप्ट की जरूरत है :

path=$1 
user=$2 
echo $path 
filename=$(basename "$path") 
extension="${filename##*.}" 
filename="${filename%.*}" 
now=`date +%Y-%m-%d` 
et=`date +%H:%M:%S` 
PATH="/Users/$user/Library/Developer/Xcode/Archives/$now" 
echo $PATH 
/bin/mkdir -p $PATH 
PATH=$PATH/$filename$et.$extension 
/bin/mv $path $PATH 

अब से, बस आदेश चला और आप या तो काम कर फ़ोल्डर आयोजक

0 में या Xcode में एक निर्माण देखेंगे
+0

आईएमएचओ, (लक्ष्य)> (स्क्रिप्ट), ** 0 लाइन ** कोड। – SwiftArchitect

+0

यह निर्भर करता है। मेरी परियोजना में विभिन्न सेटिंग्स के साथ कई अनुप्रयोग हैं। मैं छोटी बदलावों के साथ स्क्रिप्ट का पुन: उपयोग भी कर सकता हूं। – sahara108

1

ऐसा लगता है कि प्रावधान प्रोफ़ाइल सही ढंग से सेट नहीं है।

ऐसा करने का सबसे आसान तरीका अतिरिक्त कॉन्फ़िगरेशन बनाना है।

नेविगेटर में प्रोजेक्ट का चयन करें। फिर को डुप्लिकेट करें कॉन्फ़िगरेशन और इसे एंटरप्राइज़ वितरण या एंटरप्राइज़ रिलीज़ पर पुनर्नामित करें।

enter image description here

फिर अपने लक्ष्य का चयन करें और बिल्ड सेटिंग में जाते हैं। वहां आप कोड हस्ताक्षर पहचान, प्रावधान प्रोफ़ाइल के लिए सेटिंग्स को प्रकट कर सकते हैं। आपको एक अलग बंडल पहचानकर्ता का भी उपयोग करने की आवश्यकता है।

जांच करें कि आप संग्रह योजना में किस कॉन्फ़िगरेशन का उपयोग करते हैं।

+0

यह सब ठीक से स्थापित है। ऐप, एक्सटेंशन और वॉच लक्ष्यों के लिए मेरे पास अलग बंडल आईडी है। मैं भी संग्रह करने में सक्षम हूं। – kthorat

0

हम त्रुटि

था

वाइल्डकार्ड ऐप्लिकेशन आईडी प्रोफाइल

हम स्वयं एक वितरण (हाउस) जोड़कर इसे हल में प्रोफाइल प्रोविजनिंग घर प्रावधान में बनाने के लिए इस्तेमाल नहीं किया जा सकता ऐप्पल डेवलपर पोर्टल ...

enter image description here

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