14

TLDR :

A. Enterprise Cert を使用してアプリをエクスポートする際の問題

エラー: 社内プロビジョニング プロファイルの作成にワイルドカード アプリ ID を使用することはできません

B. Enterprise と AppStore でアプリを配布するための正しいアプローチ

私たちは何年もの間、Apple の AppStore でアプリを配布してきましたが、Enterprise は新たに追加されました。– アプリには Watch アプリがあり、iOS 8 以降をサポートしています。

これまでに行われたこと:
– 2 つの異なる開発者アカウントと証明書。
– アカウントごとに個別のプロビジョニング プロファイル
– エンタープライズ AppStore 用の構成とスキームを構築
– スキーム/構成を使用して bundleId などの設定を切り替える
– エンタープライズ アプリケーションを正常にアーカイブ

個別の info.plist または資格を作成していません (作成する必要がありますか?)

問題: エンタープライズ アーカイブをエクスポートしようとすると、エラーが発生します

ワイルドカード アプリ ID を使用して社内プロビジョニング プロファイルを作成することはできません<

適切なプロビジョニング プロファイルが作成されています。Xcode によって作成されたものを除いて、どれもワイルドカードではありません。

この投稿を読みましたが、異なるターゲットを作成する必要があると書かれています。これは、両方のターゲットの同期を維持するためのオーバーヘッドです。

質問:

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?
}
4

4 に答える 4

1

プロビジョニング プロファイルが正しく設定されていないようです。

これを行う最も簡単な方法は、追加の構成を作成することです。

ナビゲーターでプロジェクトを選択します。次に、リリース構成を複製し、その名前をEnterprise DistributionまたはEnterprise Releaseに変更します。

ここに画像の説明を入力

次に、ターゲットを選択してBuild Settingsに移動します。そこで、 Code Signing IdentityProvisioning Profileの設定を展開できます。また、別のバンドル ID を使用する必要があります。

アーカイブスキームで使用する構成も確認してください。

于 2016-01-04T11:05:38.820 に答える
1

アプリケーションごとに個別のビルド スクリプトを作成できれば、非常に簡単に実行できます。別のターゲットを持つ必要はありません。

これが私のビルド スクリプトです。#!/ビン/sh

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

次に、次のような 2 つのビルド コマンドを作成します。1 つはエンタープライズ ビルド用、もう 1 つはアプリ ストア ビルド用です。

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

これからは、コマンドを実行するだけで、作業フォルダーまたは Xcode オーガナイザーにビルドが表示されます。

于 2016-01-04T10:53:37.757 に答える