Wydawanie kompilacji
Ważne
Program Visual Studio App Center ma zostać wycofany 31 marca 2025 r. Chociaż możesz nadal używać programu Visual Studio App Center do momentu jego pełnego wycofania, istnieje kilka zalecanych alternatyw, do których można rozważyć migrację.
Dowiedz się więcej o osiach czasu pomocy technicznej i alternatywach.
Przekaż pakiet binarny aplikacji do centrum aplikacji, aby go rozpowszechnić. Usługa App Center obsługuje dystrybucję pakietów dla systemów Android, iOS, macOS, Windows i niestandardowych aplikacji systemu operacyjnego. Wydania można dystrybuować do poszczególnych testerów lub grup testerów. W przypadku aplikacji dla systemów iOS i Android można również wydać je do sklepów, takich jak Google Play, App Store i Intune. Zobacz Publikowanie w sklepach konsumenckich i korporacyjnych.
Na tej stronie można dowiedzieć się, jak wygenerować plik binarny do wydania oraz jak przekazać go do grup przy użyciu portalu, interfejsu wiersza polecenia (CLI) i interfejsu programowania aplikacji (API).
Możesz również użyć usługi Azure DevOps lub narzędzia Jenkins:
- Usługa Azure DevOps używa zadania dystrybucji centrum aplikacji (wersja 3 lub nowsza)
- Wtyczka Jenkins (wersja 0.11.0+).
Generowanie pakietu binarnego aplikacji
Najpierw należy spakować aplikację do pliku binarnego w celu wydania. Ten plik można utworzyć ręcznie lub użyć narzędzia App Center Build. Kompilację można skonfigurować do automatycznego dystrybuowania w konfiguracji kompilacji gałęzi.
W poniższych sekcjach wyjaśniono, jak utworzyć pliki dla wszystkich typów aplikacji obsługiwane przez centrum aplikacji na potrzeby dystrybucji.
Uwaga
Jeśli zamierzasz przekazać archiwum (.zip, ipa i inne), łączny rozmiar aplikacji nieskompresowany musi być mniejszy niż 4 GB.
Android
W przypadku systemu Android należy utworzyć podpisany pakiet aplikacji lub plik APK. Aby uzyskać szczegółowe informacje na temat tego procesu, zobacz oficjalną dokumentację firmy Google dotyczącą przygotowywania aplikacji do wydania.
- Upewnij się, że manifest został zaktualizowany i masz poprawnie skonfigurowaną kompilację narzędzia Gradle.
- W programie Android Studio wybierz pozycję Skompiluj>wygenerowany podpisany pakiet /APK , a następnie wykonaj kroki kreatora, aby skompilować pakiet aplikacji lub pakiet APK.
Program Android Studio umieszcza skompilowane pakiety aplikacji w nazwach projektunazwa-modułu//build/outputs/bundle/ i zestawy API w nazwie projektu/ nazwamodułu/build/outputs/apk/.
Uwaga
Podczas dystrybucji pakietu aplikacji systemu Android (AAB) usługa App Center generuje uniwersalny plik APK, podpisuje go przy użyciu wygenerowanego klucza podpisywania i dystrybuuje go na urządzenie.
iOS
W przypadku systemu iOS należy utworzyć pakiet IPA dla aplikacji. Aby uzyskać szczegółowe informacje na temat tego procesu, zobacz oficjalną dokumentację firmy Apple.
- Zarejestruj identyfikatory UDID dla wszystkich urządzeń sprzętowych w profilu aprowizacji.
- W programie Xcode przejdź do pozycjiArchiwumproduktów>, aby zarchiwizować aplikację.
- Wyeksportuj archiwum przy użyciu odpowiedniego profilu aprowizacji.
macOS
W przypadku systemu macOS należy utworzyć pakiet aplikacji. Usługa App Center obsługuje wydawanie pakietów aplikacji typu .app.zip, .pkg lub .dmg. Aby uzyskać szczegółowe informacje na temat tego procesu, zobacz oficjalną dokumentację systemu MacOS firmy Apple.
- Zarejestruj jedno urządzenie lub zarejestruj wiele urządzeń na koncie dewelopera firmy Apple.
- W programie Xcode przejdź do pozycjiArchiwumproduktów>, aby zarchiwizować aplikację.
- Wyeksportuj archiwum przy użyciu odpowiedniego profilu aprowizacji.
Windows
Usługa App Center obsługuje wydawanie pakietów aplikacji systemu Windows typu .appx
, .appxbundle
, .appxupload
, .msix
.msi
, .msixbundle
, , .msixupload
lub .zip
. Aby uzyskać szczegółowe informacje na temat tworzenia pakietów aplikacji w formatach AppX lub MSIX, zobacz oficjalną dokumentację platformy Microsoft UWP.
Niestandardowy system operacyjny
Archiwizowanie kompilacji dla aplikacji przy użyciu niestandardowego systemu operacyjnego w formacie .zip.
Dystrybucja pakietu
Uwaga
Wszystkie install.appcenter.ms adresy URL zawierające pliki do pobrania są publicznie dostępne.
Aby dystrybuować pakiet za pomocą usługi App Center, przejdź do centrum aplikacji, przejdź do swojej aplikacji, a następnie przejdź do pozycji Rozproszone>grupy i wybierz pozycję Nowa wersja. Postępuj zgodnie z krokami w kreatorze.
W pierwszym kroku wybierz obszar Wydanie , aby wyszukać plik, który chcesz przekazać, lub przeciągnij i upuść plik w obszarze. W zależności od systemu operacyjnego aplikacji i rozszerzenia pliku centrum aplikacji może poprosić o wprowadzenie wersji i numeru kompilacji dla wydania. Wprowadź informacje i wybierz pozycję Dalej.
Informacje o wersji można uwzględnić jako część wydania, zarówno w formacie zwykłego tekstu, jak i języka Markdown. Wybierz pozycję Next (Dalej).
Możesz kierować swoją wersję do wielu grup dystrybucyjnych lub testerów. Usługa App Center udostępnia tę wersję tym testerom i użytkownikom, którzy są częścią wybranych grup. Wybierz pozycję Next (Dalej).
Podczas wydawania aplikacji dla systemu iOS można automatycznie aprowizować urządzenia testerów. Wybierz pozycję Next (Dalej).
Przejrzyj wydanie. Jeśli aplikacja korzysta z zestawu Distribute SDK, możesz skonfigurować centrum aplikacji tak, aby wydanie było obowiązkowe. Gdy usługa App Center dystrybuuje wydanie, wysyła powiadomienie e-mail o nowej wersji do wszystkich testerów ustawionych w miejscach docelowych. Możesz zrezygnować z powiadamiania testerów na karcie przeglądu. Na koniec wybierz pozycję Dystrybuuj , aby zwolnić plik do testerów.
Dystrybucja przy użyciu interfejsu wiersza polecenia centrum aplikacji
Ostrzeżenie
Do korzystania z tej funkcji jest potrzebny interfejs wiersza polecenia usługi App Center w wersji 2.7 lub nowszej.
Rozpowszechnij wydanie przy użyciu appcenter distribute release
polecenia w interfejsie wiersza polecenia usługi App Center. Poniższe przykładowe polecenie dystrybuuje plik o nazwie ~/releases/my_app-23.ipa
do grupy Beta testers
aplikacji My-App
należącej do .David
appcenter distribute release --app David/My-App --file ~/releases/my_app-23.ipa --group "Beta testers"
Dystrybucja przy użyciu interfejsu API
Możesz wywołać interfejs API centrum aplikacji, aby rozpowszechnić wydanie. Poniższe podejście ma na celu opisanie minimalnego podejścia roboczego. Wiele zadań można dodatkowo dostosować lub zautomatyzować.
Przykładowa implementacja można zobaczyć tutaj: https://github.com/microsoft/appcenter-Xamarin.UITest-Demo/blob/main/ac-distribute.sh
Wymagania wstępne
- Pakiet aplikacji do przekazywania i dystrybucji.
- Uzyskiwanie tokenu interfejsu API. Token interfejsu API jest używany do uwierzytelniania dla wszystkich wywołań interfejsu API usługi App Center.
- Nazwa grupy dystrybucyjnej (opcjonalnie, jeśli brakuje lub jest nieprawidłowa, przekazywanie będzie nadal ukończone)
- Zidentyfikuj wersję
{owner_name}
i{app_name}
dla aplikacji, dla której chcesz rozpowszechnić wydanie. Te identyfikatory są używane w adresie URL wywołań interfejsu API. W przypadku aplikacji należącej do użytkownika adres URL w centrum aplikacji może wyglądać następująco: https://appcenter.ms/users/Example-User/apps/Example-App. W tym miejscu element{owner_name}
toExample-User
, a element{app_name}
toExample-App
. W przypadku aplikacji należącej do organizacji adres URL może mieć https://appcenter.ms/orgs/Example-Org/apps/Example-App wartość i będzie to{owner_name}
Example-Org
.
Przekaż nową wersję
Przekaż nową wersję przy użyciu tych sekwencyjnych wywołań interfejsu API:
Utwórz nowe przekazywanie wydania: punkt końcowy do wywołania to POST /v0.1/apps/{owner_name}/{app_name}/uploads/releases
OWNER_NAME="Example-Org" APP_NAME="Example-App" API_TOKEN="Example-Token" curl -X POST "https://api.appcenter.ms/v0.1/apps/$OWNER_NAME/$APP_NAME/uploads/releases" -H "accept: application/json" -H "X-API-Token: $API_TOKEN" -H "Content-Type: application/json" -H "Content-Length: 0"
Odpowiedź będzie wyglądać mniej więcej tak, zastępując
{VARIABLE_NAME}
dane unikatowe dla każdego użycia:{ "id": "{ID}", "package_asset_id": "{PACKAGE_ASSET_ID}", "upload_domain": "https://file.appcenter.ms", "token": "{TOKEN}", "url_encoded_token": "{URL_ENCODED_TOKEN}" }
Skopiuj parametry z odpowiedzi w poprzednim kroku, ponieważ większość z nich jest używana w następnym kroku, w tym
package_asset_id
,upload_domain
&url_encoded_token
.Określ rozmiar pakietu aplikacji w bajtach. Zaleca się użycie polecenia, takiego jak
wc -c ExampleApp.ipa
uzyskanie dokładnej liczby bajtów.MIME Type
Ustaw dla elementu w oparciucontent_type
o aplikację:- System Android .apk używa typu dostawcy
application/vnd.android.package-archive
- System Android .aab używa typu dostawcy
application/x-authorware-bin
- System iOS używa typu ogólnego
application/octet-stream
Ostatnie polecenie powinno wyglądać mniej więcej tak:
FILE_NAME="ExampleApp.apk" FILE_SIZE_BYTES=$(wc -c $RELEASE_FILE_LOCATION | awk '{print $1}') APP_TYPE='application/vnd.android.package-archive' # iOS uses `application/octet-stream` instead. METADATA_URL="https://file.appcenter.ms/upload/set_metadata/$PACKAGE_ASSET_ID?file_name=$FILE_NAME&file_size=$FILE_SIZE_BYTES&token=$URL_ENCODED_TOKEN&content_type=$APP_TYPE" curl -s -d POST -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" "$METADATA_URL"
Zwrócone dane wyjściowe powinny wyglądać mniej więcej tak:
{ "error":false, "id":"{PACKAGE_ASSET_ID}", "chunk_size":4194304, "resume_restart":false, "chunk_list":[1,2,3,4,5], "blob_partitions":1, "status_code":"Success" }
- System Android .apk używa typu dostawcy
chunk_size
Przy użyciu wartości, której nie można dostosować, możesz podzielić przekazywanie aplikacji na sekwencyjne fragmenty przekazywania do dystrybucji. Możesz na przykład użyćsplit
narzędzia w następujący sposób:split -b $CHUNK_SIZE $RELEASE_FILE_LOCATION temp/split
To polecenie generuje sekwencyjne pliki w
temp
katalogu o nazwiesplitaa
,splitab
itd. Każdy plik jest podzielony w ramach limituchunk_size
.Następnie należy przekazać każdy fragment podzielonego pakietu aplikacji z odpowiednim blokiem:
BLOCK_NUMBER=0 for i in temp/* do BLOCK_NUMBER=$(($BLOCK_NUMBER + 1)) CONTENT_LENGTH=$(wc -c "$i" | awk '{print $1}') UPLOAD_CHUNK_URL="https://file.appcenter.ms/upload/upload_chunk/$PACKAGE_ASSET_ID?token=$URL_ENCODED_TOKEN&block_number=$BLOCK_NUMBER" curl -X POST $UPLOAD_CHUNK_URL --data-binary "@$i" -H "Content-Length: $CONTENT_LENGTH" -H "Content-Type: $CONTENT_TYPE" done
Po zakończeniu przekazywania zaktualizuj stan zasobu przekazywania na
uploadFinished
.FINISHED_URL="https://file.appcenter.ms/upload/finished/$PACKAGE_ASSET_ID?token=$URL_ENCODED_TOKEN" curl -d POST -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" "$FINISHED_URL" COMMIT_URL="https://api.appcenter.ms/v0.1/apps/$OWNER_NAME/$APP_NAME/uploads/releases/$ID" curl -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" \ --data '{"upload_status": "uploadFinished","id": "$ID"}' \ -X PATCH \ $COMMIT_URL
Po przekazaniu nastąpi krótkie opóźnienie, zanim przekazywanie zostanie oznaczone jako zakończone. Sonduj
$RELEASE_ID
ten stan, aby uzyskać wartość dla następnego kroku:RELEASE_STATUS_URL="https://api.appcenter.ms/v0.1/apps/$OWNER_NAME/$APP_NAME/uploads/releases/$UPLOAD_ID" POLL_RESULT=$(curl -s -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" $RELEASE_STATUS_URL) RELEASE_ID=$(echo $POLL_RESULT | jq -r '.release_distinct_id') if [[ $RELEASE_ID == null ]]; then echo "Failed to find release from appcenter" exit 1 fi
Na koniec wydaj kompilację. Punkt końcowy do wywołania to PATCH /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}
DISTRIBUTE_URL="https://api.appcenter.ms/v0.1/apps/$OWNER_NAME/$APP_NAME/releases/$RELEASE_ID" curl -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" \ --data '{"destinations": [{ "name": "'"$DISTRIBUTION_GROUP"'"}] }' \ -X PATCH \ $DISTRIBUTE_URL
Dystrybuowanie wydania
Rozpowszechnij przekazane wydanie do testerów, grup lub sklepów, aby wyświetlić wydanie w portalu Centrum aplikacji. Trzy punkty końcowe to:
- POST /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}/testerzy
- POST /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}/groups
- POST /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}/stores
Przykład dla grup:
curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" -H "X-API-Token: $API_TOKEN" -d "{ \"id\": "$DISTRIBUTION_GROUP_ID", \"mandatory_update\": false, \"notify_testers\": false}"
Identyfikator grupy dystrybucyjnej można znaleźć na stronie ustawień tej grupy.
Żądanie dystrybucji do wielu miejsc docelowych znajduje się tutaj w przypadku bardziej złożonych scenariuszy: PATCH /v0.1/apps/{owner_name}/{app_name}/releases/{release_id}
Re-Release kompilacji
Aby zwolnić kompilację do innej grupy dystrybucyjnej, z dowolnego miejsca w Centrum aplikacji przejdź do pozycji Dystrybuowanie > wydań , a następnie wybierz wydanie, które chcesz rozpowszechnić ponownie. Zostanie otwarta strona szczegółów wydania. Wybierz przycisk Dystrybuuj w prawym górnym rogu ekranu i wybierz miejsce docelowe, aby rozpocząć proces ponownego wydania. Wykonaj kroki kreatora, a na koniec wybierz pozycję Dystrybuuj , aby wysłać wydanie do grup/testerów lub sklepu.
Obowiązkowe Aktualizacje
Należy wprowadzić obowiązkowe wydanie, aby wymusić uruchamianie tej samej wersji aplikacji przez wszystkich użytkowników. Gdy to zrobisz, program App Center zainstaluje wybraną aktualizację na wszystkich urządzeniach testera.
Wydanie może być obowiązkowe tylko wtedy, gdy aplikacja korzysta z zestawu SDK dystrybucji centrum aplikacji. Wprowadź obowiązkowe wydanie, zaznaczając pole wyboru Obowiązkowa aktualizacja na etapie przeglądu dystrybucji wydania lub możesz użyć interfejsu API.
Obowiązkowe wersje można wyświetlić w Centrum aplikacji, otwierając pozycję [Twoja aplikacja] > Rozprosz > wydania grup>. Obowiązkowe wydania są wskazywane przez czerwoną kropkę.
Łącze do wydań
Po pomyślnym wydaniu testerzy mogą uzyskiwać dostęp do wersji za pośrednictwem poczty e-mail, logując się do Centrum aplikacji lub za pośrednictwem linku bezpośredniego.
Linki do określonych wersji można znaleźć na stronie wydania dla prywatnych miejsc docelowych.
Uwaga
Pakiety aplikacji systemu Android (AAB) są dostępne do pobrania na stronie wydania, klikając przycisk pobierania. Jeśli potrzebujesz zainstalowanego formatu pliku APK, użyj portalu instalacji (https://install.appcenter.ms) na urządzeniu. Link znajduje się poniżej wygenerowanego kodu QR obok przycisku pobierania.
Linki do określonych wydań do publicznych miejsc docelowych można znaleźć na karcie wydania w grupach publicznych.