Heim  >  Artikel  >  Web-Frontend  >  Wie implementiert React-Native die automatische Verpackung? React-native automatische Verpackungsmethode

Wie implementiert React-Native die automatische Verpackung? React-native automatische Verpackungsmethode

不言
不言Original
2018-08-07 14:36:333155Durchsuche

Der Inhalt dieses Artikels befasst sich mit der Implementierung der automatischen Verpackung in React-Native. Die reaktive automatische Verpackungsmethode hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.

Haben Sie sich auch vorgestellt, dass Sie nach dem Schreiben des Codes nicht xcode und Android Studio öffnen müssen, sondern einfach ein Shell-Skript ausführen müssen, um sowohl Android als auch iOS zu packen? Und es wird automatisch für Sie in den Dandelion und App Store hochgeladen, und dann wird das Produkt automatisch zum Testen heruntergeladen. Und du bist direkt gegangen, um Kaffee zu trinken.

Hinweis: In diesem Artikel wird nur die Verwendung der automatischen Skriptverarbeitung beschrieben. Daher wird davon ausgegangen, dass Leser das Paket manuell normal durchführen können. Bei komplizierteren Details ist ein weiteres Kapitel erforderlich.

Materialien vorbereiten

Ein MacOS-Host + Monitor, wie zum Beispiel: mac-mini

Automatische Build-Tools, wie zum Beispiel: gitlab-runner, travis-ci, jenkins

Apple Developer Certification

macos host muss als Build-Tool verwendet werden节点 und die folgende Software oder Vorgänge müssen installiert werden:

git

xcode 9.4+

xcode -> app_id für Apple-Zertifizierung oder persönliche Authentifizierung hinzufügen

android sdk

Java JDK 8

Hinweis:

Wenn Sie keine Plattform aufbauen und es einfach nur einfach halten möchten, können Sie den folgenden Code integrieren in ein Shell-Skript umwandeln und es dann auf Ihrem eigenen Computer ausführen. Paket android

cd android
rm -rf build/ app/build/
./gradlew assembleRelease

Die endgültige APK-Datei befindet sich unter:

android/app/build/outputs/apk/app-release.apk

Paket ios

Erstellen Sie zuerst die Basispaket-App

cd ios
# 必须先创建目录
mkdir -p build
rm -rf build/archive.xcarchive build/ipa-*

# 获取目录名
project_list=`ls | grep .xcodeproj`
project_name=${project_list%%.*}

# 打包出app
# 这和你点击 xcode -> Product -> Archive 是一样的效果的。
xcodebuild clean
xcodebuild archive \
  -project ./${project_name}.xcodeproj \
  -scheme ${project_name} \
  -configuration Release \
  -archivePath ./build/archive.xcarchive

Dann müssen wir die App in das ipa-Format exportieren, damit sie in den App Store oder auf eine Testplattform hochgeladen werden kann, z. B.: Dandelion, fir. im

Um in den App Store zu übertragen, müssen Sie das offizielle ipa-Paket exportieren, und um nach Dandelion zu übertragen, müssen Sie das Test-ipa-Paket (ad-hoc) verwenden, also müssen Sie es zweimal ausführen

cd ios

# 正式ipa包
xcodebuild -exportArchive \
    -archivePath ./build/archive.xcarchive \
    -exportPath ./build/ipa-app-store \
    -exportOptionsPlist ./exportOptions/app-store.plist \
    -allowProvisioningUpdates
    
# 测试ipa包
xcodebuild -exportArchive \
    -archivePath ./build/archive.xcarchive \
    -exportPath ./build/ipa-ad-hoc \
    -exportOptionsPlist ./exportOptions/ad-hoc.plist \
    -allowProvisioningUpdates

Die obige Kompilierung wird definitiv fehlschlagen, weil Ihnen zwei Dateien

und

fehlen. Sie können dies tatsächlich selbst finden, d. h. im Ordner gepackt und app-store.plistExportierenad-hoc.plist in xcode befindet sich eine DateiExportOptions.plist

Wie implementiert React-Native die automatische Verpackung? React-native automatische VerpackungsmethodeJe nachdem, ob Sie beim Exportieren App Store
oder Ad Hoc wählen, kopieren Sie diese in die Projekte exportOptions/app-store.plist bzw. exportOptions . /ad-hoc.plistLöwenzahn hochladen

Der vom Autor verwendete Löwenzahn kann der Rezensent von Tanne selbst finden

PGY_API_KEY=你的api_key
PGY_HOST=https://www.pgyer.com/apiv2/app/upload

# ios
IPA=`ls ./ios/build/ipa-ad-hoc/*.ipa`
curl \ 
    --form "file=@$IPA" \
    --form "_api_key=$PGY_API_KEY" \
    $PGY_HOST
    
# android
curl \ 
    --form "file=@./android/app/build/outputs/apk/app-release.apk" \
    --form "_api_key=$PGY_API_KEY" \
    $PGY_HOST

Appstore hochladen

Tatsächlich müssen Sie es zuerst auf appstoreconnect.apple.com hochladen, was dasselbe ist, als wenn Sie auf

klicken. Der Upload schlägt fehl, also verschwenden Sie keine Zeit

APP_STORE_ACCOUNT=证书创建者账号
APP_STORE_PASSWORD=密码
IPA=`ls ./ios/build/ipa-app-store/*.ipa`

/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool \
    --validate-app \
    --file "$IPA" \
    --type ios \
    --username $APP_STORE_ACCOUNT \
    --password $APP_STORE_PASSWORD
Upload To App StoreAuf Android hochladen

Nach den Recherchen des Autors bieten nur Xiaomi-Anwendungen eine Schnittstelle zum Hochladen, und andere Anwendungsplattformen müssen manuell hochladen.

Hinweise:

1. Auf jedem Knotenrechner muss ein Zertifikat generiert werden. Sie müssen es manuell generieren oder Xcode verwenden, um es automatisch für Sie zu generieren. Wenn Sie diesen Schritt nicht ausführen, können Sie iOS nicht packen

2. Bei den ersten paar Malen des Packens werden Sie von Mac aufgefordert, ein Passwort einzugeben und darauf zu klicken die Schaltfläche, um immer zuzulassen

3. Wenn Sie gitlab-runner verwenden, ist die Verwendung von alias altool=xx in gitlab-ci.yml ungültig, das heißt, altool kann nicht erkannt werden, ich weiß nicht, warum 🎜> 4. Sie müssen das MacOS-System für die iOS-Paketierung verwenden. Der Versuch, Linux zu verwenden, wird die Vorteile überwiegen. Sie können Linux für die Android-Paketierung verwenden, aber das ist auch sehr mühsam. Warum also nicht mit iOS?

5. Wenn macOS als automatisch erstellter untergeordneter Knoten verwendet wird, denken Sie daran, ein Startskript start.sh zu erstellen und das Skript zu den vom Benutzer verwalteten Startelementen hinzuzufügen. Auf diese SH-Datei muss mit der rechten Maustaste geklickt werden, um die Anzeigeeinführung zu öffnen, und dann die Öffnungsmethode auf Terminal





einstellen

Wie implementiert React-Native die automatische Verpackung? React-native automatische Verpackungsmethode
Empfohlene verwandte Artikel:

Analyse von Metainformations-Meta-Tag-Attributen in HTML (mit Code)

Wie implementiert React-Native die automatische Verpackung? React-native automatische Verpackungsmethode

Über Gao Anzeige der grundlegenden Steuerelemente der deutschen Karten-WEB-Version

Das obige ist der detaillierte Inhalt vonWie implementiert React-Native die automatische Verpackung? React-native automatische Verpackungsmethode. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn