Zum Hauptinhalt springen

Wie man eine Capacitor-App auf Huawei AppGallery veröffentlicht

Ein Capacitor-App auf Huawei AppGallery veröffentlichen: Registrierung als Entwickler, Audit von Google Play-Diensten, HMS-Fallbacks, Signierung von APKs, Liste von Assets und Tipps für die Überprüfung.

Artikelcredits

Martin Donadieu

Schreiber

Valeria

Reviewer

Jordan

Editor

Wie man eine Capacitor-App auf Huawei AppGallery veröffentlicht

Man kann eine Capacitor-App auf Huawei AppGallery mit dem gleichen Android-Build veröffentlichen, den man auf Google Play verschickt. Registriere ein kostenloses HUAWEI-Entwicklerkonto, überprüfe, welche Plugins auf Google Play-Dienste (fehlen auf Huawei-Handys, die seit Ende 2019 veröffentlicht wurden) angewiesen sind, verstecke oder ersetze diese Funktionen, und laden Sie dann ein signiertes APK in AppGallery Connect hoch, mit einer Liste und warten Sie auf die Überprüfung. Diese Anleitung deckt jeden Schritt ab, einschließlich eines kleinen nativen Checks, den Sie in Ihre App einfügen können, um Google Play-Dienste ohne zusätzliche Abhängigkeiten zu erkennen.

Wer sollte auf AppGallery veröffentlichen

AppGallery ist die Standard-App-Store auf Huawei-Handys und -Tablets. Es ist wichtig, wenn Ihre Benutzer enthalten:

  • Leute in Europa, dem Nahen Osten, Afrika, Lateinamerika und Südostasien, die Huawei-Geräte mit dem 2019er US-Handelsbeschränkungen veröffentlicht haben, die ohne Google Play-Dienste und ohne den Play-Store ausgeliefert wurden.
  • Unternehmen oder Regierungsstellen, die sich auf Huawei-Hardware standardisiert haben.

Eine Anmerkung zu HarmonyOS: Huawei-Geräte, die außerhalb des chinesischen Festlands verkauft werden, laufen EMUI, das auf Android basiert und APKs installiert. Geräte im chinesischen Festland, die HarmonyOS NEXT (HarmonyOS 5 und später) laufen, können nur native HarmonyOS-Apps ausführen, daher erreicht ein Android-APK sie nicht. Diese Anleitung befasst sich mit dem Android-basierten AppGallery.

Schritt 1: Überprüfung von Google Play-Dienste-Abhängigkeiten

Capacitor hängt sich selbst nur an AndroidX und seine eigene Android-Bibliothek. Der Risiko kommt von Plugins, die Google-Bibliotheken ziehen. Schauen Sie sich Ihre Abhängigkeiten an:

cd android
./gradlew :app:dependencies --configuration releaseRuntimeClasspath \
  | grep -E "com.google.android.gms|com.google.firebase|com.google.android.play|billingclient" \
  | sort -u

Sortieren Sie sie dann in „funktioniert ohne Google Play-Dienste“ und „benötigt Google Play-Dienste“.

Abhängigkeit Auf Huawei ohne GMS Typische Plugins
Firebase Cloud Messaging Funktioniert nicht @capacitor/push-notifications, Firebase Messaging-Plugins
Google Maps SDK Funktioniert nicht @capacitor/google-maps
Google-Anmeldung (play-services-auth, Google-Konto-Manager ID) Funktioniert nicht Google-Anbieter von @capgo/capacitor-social-login
Google Play-Billing Funktioniert nicht @capgo/capacitor-native-purchases, RevenueCat auf Android
Play In-App-Bewertung Funktioniert nicht @capgo/capacitor-in-app-review
Play In-App-Updates Funktioniert nicht Play-Update-Helfer in @capgo/capacitor-updater
Play-Integrität Funktioniert nicht App-Attestations-Plugins auf Android
Fused Standort (play-services-location) Abhängig vom Plugin; einige fallen auf Androids LocationManager zurück @capacitor/geolocation, Hintergrund-Geolokalisierungs-Plugins
play-services-tasks, play-services-basement allein Fein (einfache Bibliotheken) Viele Plugins
Firestore, Realtime-Datenbank, Storage, Remote-Konfiguration, Crashlytics, E-Mail-/Passwort-Authentifizierung Work Firebase-Plugins
Capgo Live-Updates Work @capgo/capacitor-updater
Apple und Facebook-Login Arbeit @capgo/capacitor-social-login Apple / Facebook-Anbieter

„Funktioniert nicht“ bedeutet normalerweise, dass die Anfrage ausgelöst oder nie aufgelöst wird. Es kommt nur sehr selten zu einem Crash des gesamten Apps, aber die Rezensionen werden auf Huawei-Geräten getestet und ein toter Button oder ein leerer Bildschirm ist ein häufiger Ablehnungsgrund.

Schritt 2: Erkennen Sie Google Play-Dienste bei Laufzeit

Sie können Google Play-Dienste ohne die Hinzufügung einer Google-Abhängigkeit überprüfen, indem Sie Androids Paketmanager fragen, ob com.google.android.gms ist installiert. Fügen Sie eine kleine lokale Erweiterung Ihrem Capacitor Android-Projekt hinzu.

android/app/src/main/java/com/example/app/ServicesCheckPlugin.java:

package com.example.app;

import android.content.pm.PackageManager;
import com.getcapacitor.JSObject;
import com.getcapacitor.Plugin;
import com.getcapacitor.PluginCall;
import com.getcapacitor.PluginMethod;
import com.getcapacitor.annotation.CapacitorPlugin;

@CapacitorPlugin(name = "ServicesCheck")
public class ServicesCheckPlugin extends Plugin {

    private boolean isInstalled(String packageName) {
        try {
            getContext().getPackageManager().getPackageInfo(packageName, 0);
            return true;
        } catch (PackageManager.NameNotFoundException e) {
            return false;
        }
    }

    @PluginMethod
    public void getStatus(PluginCall call) {
        JSObject ret = new JSObject();
        ret.put("gms", isInstalled("com.google.android.gms"));
        ret.put("hms", isInstalled("com.huawei.hwid"));
        call.resolve(ret);
    }
}

Registrieren Sie es in MainActivity.java vorher super.onCreate:

package com.example.app;

import android.os.Bundle;
import com.getcapacitor.BridgeActivity;

public class MainActivity extends BridgeActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        registerPlugin(ServicesCheckPlugin.class);
        super.onCreate(savedInstanceState);
    }
}

Da Android 11 Apps nur andere Pakete sehen lässt, die sie deklarieren, fügen Sie eine <queries> Block zu android/app/src/main/AndroidManifest.xml, innerhalb <manifest>:

<queries>
    <package android:name="com.google.android.gms" />
    <package android:name="com.huawei.hwid" />
</queries>

Rufen Sie es aus TypeScript auf:

import { Capacitor, registerPlugin } from '@capacitor/core';

interface ServicesCheckPlugin {
  getStatus(): Promise<{ gms: boolean; hms: boolean }>;
}

const ServicesCheck = registerPlugin<ServicesCheckPlugin>('ServicesCheck');

export async function getMobileServices() {
  if (Capacitor.getPlatform() !== 'android') {
    return { gms: true, hms: false };
  }
  return ServicesCheck.getStatus();
}

Die Präsenz des Pakets ist ein vernünftiger Proxy. Es sagt Ihnen jedoch nicht, ob Google Play Services aktuell ist oder aktiviert ist; wenn Sie auch das benötigen, fügen Sie com.google.android.gms:play-services-base und verwenden GoogleApiAvailability.isGooglePlayServicesAvailable(), die auch auf Geräten ohne GMS funktioniert.

Schritt 3: Rutscht sanft ab

Verwenden Sie das Ergebnis, um Funktionen an- und auszuschalten:

import { PushNotifications } from '@capacitor/push-notifications';
import { getMobileServices } from './services';

export const features = {
  push: true,
  googleSignIn: true,
  playBilling: true,
  inAppReview: true,
};

export async function initFeatures() {
  const { gms } = await getMobileServices();

  features.push = gms;
  features.googleSignIn = gms;
  features.playBilling = gms;
  features.inAppReview = gms;

  if (features.push) {
    const perm = await PushNotifications.requestPermissions();
    if (perm.receive === 'granted') {
      await PushNotifications.register();
    }
  }
}

Praktische Ausfallmöglichkeiten:

  • Anmeldung: Verbergen Sie die Google-Schaltfläche und zeigen Sie stattdessen E-Mail, Apple- oder Facebook-Anmelden an. Mit @capgo/capacitor-social-login initialisieren Sie nur die Anbieter, die Sie anzeigen.
  • Zahlungen: Google Play Billing ist nicht verfügbar. AppGallery hat seinen eigenen Huawei IAP. Wenn digitale Kaufs sind für Ihre App von entscheidender Bedeutung, integrieren Sie entweder Huawei IAP oder versenden Sie die AppGallery-Build ohne Kaufs und sagen Sie es in der Liste an.
  • Push: verwenden Sie das Huawei Push Kit für HMS-Geräte. Es gibt keine offizielle Capacitor-Erweiterung; Huawei veröffentlicht Cordova-Plugins unter @hmscore/* which laufen in Capacitor, oder Sie können eine kleine native Erweiterung um das Push Kit SDK herum schreiben.
  • Maps: verwenden Sie eine Web-Karte (Leaflet, MapLibre GL JS) innerhalb des WebView, die auf jedem Gerät funktioniert, oder das Huawei Map Kit.
  • Bewerte die App: auf Huawei verlinken Sie stattdessen auf Ihre AppGallery-Seite anstatt die Play-Bewertungsseite API aufzurufen.
  • Store links: Die Schaltflächen „Die App aktualisieren“ sollten auf AppGallery (appmarket://details?id=com.example.app) auf Huawei-Geräten öffnen, nicht auf die Play Store.

Testen Sie die App auf einem echten Huawei-Gerät oder auf Huawei’s Cloud-Debugging-Dienst. Ein Emulator mit Google-APIs wird jede dieser Probleme verbergen.

Schritt 4: Registrieren Sie ein HUAWEI-Entwicklerkonto

  1. Erstelle einen HUAWEI-Konto bei developer.huawei.com.
  2. Abschließe die Identitätsüberprüfung als Einzelperson oder Unternehmen. Einzelpersonen müssen in der Regel ein Identitätsdokument und Bankkartenangaben bereitstellen; Unternehmen müssen Unternehmensregisterdokumente bereitstellen. Die Überprüfung dauert in der Regel einen bis zwei Arbeitstage.
  3. Wähle den Kontotyp und das Land sorgfältig aus. Huawei lässt Sie nicht umstellen, wenn Sie ein individuelles Konto in ein Unternehmenskonto umstellen möchten, und das verifizierte Land oder die Region kann nicht später geändert werden.

Die Registrierung ist kostenlos.

Schritt 5: Erstelle die App in AppGallery Connect

  1. Öffne AppGallery Connect > Meine Apps > Neue App.
  2. Plattform: AndroidGerät: Smartphone (auch Tablets abgedeckt).
  3. App-Name, Standard-Sprache und Paket-Name. Der Paket-Name muss mit appId in capacitor.config.ts und kann nach der ersten Hochladung nicht mehr geändert werden.
  4. Wählen Sie die Anwendungs-Kategorie.

Schritt 6: Erstelle und signiere das Release-Paket

AppGallery akzeptiert APK und AAB. Die APK-Routen sind einfacher: Sie signieren es mit Ihrem eigenen Schlüssel, und Huawei muss Ihren Signierungs-Schlüssel nicht speichern.

bun run build
bunx cap sync android
cd android
./gradlew assembleRelease

Konfigurieren Sie das Signieren in android/app/build.gradle (Laden Sie Passwörter aus Umgebungsvariablen oder keystore.properties, nie speichern Sie sie):

android {
    signingConfigs {
        release {
            storeFile file(System.getenv("ANDROID_KEYSTORE_PATH") ?: "upload-keystore.jks")
            storePassword System.getenv("ANDROID_KEYSTORE_PASSWORD")
            keyAlias System.getenv("ANDROID_KEY_ALIAS")
            keyPassword System.getenv("ANDROID_KEY_PASSWORD")
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }
}

Die APK befindet sich in android/app/build/outputs/apk/release/. Wenn Sie ein Keystore benötigen, erstellt der Android-Keystore-Generator eines. Bewahren Sie es sicher auf: Jede zukünftige AppGallery-Update muss mit demselben Schlüssel signiert werden.

Wenn Sie stattdessen ein AAB hochladen, erfordert AppGallery seinen App-Signingservice, was bedeutet, dass Huawei den Schlüssel für die endgültige Signierung erstellt und aufbewahrt, genauso wie bei Play App Signing.

Einige Dinge überprüfen, bevor Sie hochladen:

  • versionCode muss mit jedem Hochladen zunehmen.
  • Der App-Name in der APK sollte dem AppGallery-Listennamen entsprechen.
  • Wenn Sie außerhalb von China verteilen, sollten Sie Englisch (US) als Sprache in der Liste angeben.
  • Seit dem 30. September 2026 gilt für Apps, die auf zertifizierten Geräten in Brasilien, Indonesien, Singapur und Thailand installiert werden, die Entwicklerverifizierung von Android. Huawei-Geräte ohne Google-Dienste sind nicht Google-zertifiziert, aber wenn das gleiche Paket auch von außerhalb von Google Play auf zertifizierten Geräten installiert wird, müssen Sie den Paketnamen in der Android-Entwickler-Konsole registrieren.

Schritt 7: Die Liste vorbereiten

AppGallery hat eigene Spezifikationen, die sich von denen von Apple und Google unterscheiden.

Feld Anforderung
Icon 216 x 216 PNG (512 x 512 ebenfalls akzeptiert), keine abgerundeten Ecken, die Sie hinzugefügt haben
Bildschirmfotos 3 bis 8, 450 x 800 oder 800 x 450 px (oder proportional größer), gleiche Orientierung
Kurze Einführung Bis zu 80 Zeichen
Einführung Bis zu 8.000 Zeichen
URL der Datenschutzrichtlinie Wenn die App personenbezogene Daten sammelt
Altersfreigabe Fragebogen in AppGallery Connect
Testkonto Erforderlich, wenn die App eine Anmeldung enthält
Länder / Regionen Wählen Sie die Verteilungsländer explizit

Verwenden Sie keine Screenshot, die das Google Play Logo, Android-Geräterahmen, die von anderen Herstellern gebrandeten oder "Get it on Google Play"-Bilder zeigen. Huawei lehnt die Liste ab, die auf andere Stores verweist. Für die restlichen Assets können Sie die, die Sie für die anderen Stores erstellt haben, wieder verwenden; unsere App Store und Google Play-Listungshinweise umfassen sie.

Schritt 8: Hochladen, Einreichen und Überprüfen

  1. In Version Informationen > EntwurfUploaden Sie das APK unter Softwareversion.
  2. Beschreiben Sie die Liste, Bewertung, Datenschutz und Länder.
  3. Legen Sie die Veröffentlichungszeit fest (unmittelbar nach Genehmigung oder geplant).
  4. Stellen Sie zur Überprüfung ein.

Die Überprüfung dauert in der Regel einige Arbeitstage. Ablehnungen erhalten Sie per E-Mail mit der Hinweisreferenz. Die häufigsten für Capacitor-Apps sind:

  • Funktionen, die ohne Google Play-Dienste nicht funktionieren (Login-Button, der nichts tut, leere Kartenansicht).
  • Duplicate-App: Eine App mit demselben Paketnamen existiert bereits auf AppGallery von einem anderen Entwickler oder Huawei hat Ihre App aus Google Play kopiert. Kontaktieren Sie den Huawei-Entwickler-Service mit Beweisen der Eigentümerschaft.
  • Verweise auf andere Stores in Bildschirmfotos oder Text.
  • Fehlende englische Informationen für die internationale Verteilung.
  • Datenschutzrichtlinie fehlen oder sind nicht erreichbar von innen im App.

AppGallery Connect hat auch eine Veröffentlichungs API, sodass Sie Uploads von CI automatisieren können, sobald die erste Version live ist.

Schritt 9: Halten Sie Updates schnell

Kontext: Seite/Bereich: Über Capgo-Seite. Rolle: UI-Label. Gesehen in: Seite über .astro. Nachrichten Schlüssel `about_how_step_label` (Über wie Schritt-Label). Capgo Live-Updates deliver the new bundle directly to installed apps on Huawei, Google and Apple devices with one upload, because the updater fetches bundles from your Capgo endpoint and does not use Google Play services. Use a dedicated channel if your Huawei build has different features:

bunx @capgo/cli@latest bundle upload --channel huawei

Setze die Standardkanal für die Huawei-Buildung bei der Buildzeit oder zuweise Geräte an den Kanal von deiner App. Capgo updater docs Erkläre Kanäle und Konfiguration.

Übersicht

  • Dependency audit done, GMS-only features listed
  • Überprüfung der Laufzeitdienste hinzugefügt und auf einem realen Huawei-Gerät getestet
  • Google-fähige Funktionen versteckt oder ersetzt (Push, Anmeldung, Abrechnung, Maps, Bewertung)
  • HUAWEI-Entwicklerkonto bestätigt
  • Anwendung erstellt mit demselben Paketnamen wie capacitor.config.ts
  • Release-APK mit einem gesicherten Keystore signiert, versionCode bumpen
  • Icon, 3 bis 8 Screenshot, kurze und vollständige Einführung, Datenschutzrichtlinie
  • Keine Google Play-Referenzen in den Verkaufsanzeigeeinrichtungen
  • Testkonto für Rezensionen falls erforderlich
  • Eingereicht, Überprüfungs-E-Mail wird überwacht

Wenn Sie auch Google Play vorbereiten, lesen Sie Wie Sie Apple- und Google Play-Entwicklerkonten erstellen für die 12-Testanwender-Regel, die dort nur gilt.

Live-Updates für Capacitor-Apps

Wenn ein Web-Schicht-Bug live ist, schicken Sie die Reparatur über Capgo anstatt Tage zu warten, bis die App-Store-Zulassung genehmigt ist. Die Benutzer erhalten die Aktualisierung im Hintergrund, während native Änderungen im normalen Überprüfungsprozess bleiben.

Unterstützung von Martin

Get Started Now

Neueste aus unserem Blog

Capgo bietet Ihnen die besten Erkenntnisse, um eine echte professionelle Mobilanwendung zu erstellen.