Zum Hauptinhalt springen

Ein Capacitor-App auf Huawei AppGallery veröffentlichen

Veröffentlichen Sie eine Capacitor-App auf Huawei AppGallery: Registrierung als Entwickler, Audit von Google Play-Diensten, HMS-Fallbacks, Signierung von APKs, Auflistung von Assets und Bewertungstipps.

Artikelcredits

Martin Donadieu

Autor

Valeria

Rezensent

Jordan

Redakteur

Wie Sie eine Capacitor-App auf Huawei AppGallery veröffentlichen

Sie können eine Capacitor-App auf Huawei AppGallery mit dem gleichen Android-Build veröffentlichen, den Sie auf Google Play verschicken. Registrieren Sie sich kostenlos bei HUAWEI Developers, überprüfen Sie, welche Plugins auf Google Play-Dienste (fehlen auf Huawei-Handys, die seit Ende 2019 veröffentlicht wurden) angewiesen sind, verbergen oder ersetzen Sie diese Funktionen, und laden Sie dann eine signierte APK in AppGallery Connect hoch, mit einer Auflistung und warten Sie auf die Bewertung. 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 liefern

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

  • Die Menschen in Europa, dem Nahen Osten, Afrika, Lateinamerika und Südostasien, die Huawei-Geräte nach den 2019 geltenden US-Handelsbeschränkungen nutzen, die ohne Google Play-Dienste und ohne den Play Store geliefert werden.
  • Unternehmen oder Regierungskunden, die sich auf Huawei-Hardware standardisiert haben.

Eine Anmerkung zu HarmonyOS: Huawei-Telefone, die außerhalb des chinesischen Festlandes verkauft werden, laufen unter EMUI, das auf Android basiert und APKs installiert. Geräte im chinesischen Festland, die HarmonyOS NEXT (HarmonyOS 5 und später) laufen, installieren nur native HarmonyOS-Anwendungen, daher erreichen Android-APKs sie nicht. Diese Anleitung befasst sich mit dem Android-basierten AppGallery.

Schritt 1: Abfragen von Google Play-Dienste-Abhängigkeiten

Capacitor hängt selbst nur an AndroidX und seiner eigenen Android-Bibliothek an. Der Risikofaktor liegt in den Plugins, die Google-Bibliotheken laden. 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

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

Abhängigkeit Bei 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 Sign-In (play-services-auth, Google ID-Zugriffsmanager 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-Bewertungs-Plugins auf Android
Fused Standort (play-services-location) Hängt von dem Plugin ab; 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 Arbeit Firebase-Plugins
Capgo Live-Updates Arbeit @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 der gesamten App, aber die Rezensionen werden auf Huawei-Geräten getestet und ein toter Button oder ein leerer Bildschirm ist ein häufiger Ablehnungsgrund.

Schritt 2: Google Play-Dienste zu Laufzeit erkennen

Sie können die Google Play-Dienste ohne die Hinzufügung einer Google-Abhängigkeit überprüfen, indem Sie Androids Paketmanager fragen, ob com.google.android.gms Installiert ist. Fügen Sie ein kleines lokales Plugin zu 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);
    }
}

Seit Android 11 sehen Apps nur andere Pakete, die sie deklarieren. Fügen Sie ein <queries> Block android/app/src/main/AndroidManifest.xml, inside <manifest>:

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

Schritt 3: Rutscht sanft ab

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();
}

Package presence is a reasonable proxy. It does not tell you whether Google Play services is up to date or enabled; if you also need that, add com.google.android.gms:play-services-base und verwenden GoogleApiAvailability.isGooglePlayServicesAvailable(), die auch auf Geräten ohne GMS funktioniert.

Schritt 3: Rückschrittig abstimmen

Benutzen 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();
    }
  }
}

aufrufen Sie ihn aus TypeScript:

  • Sign-in: Verstecke die Google-Schaltfläche und zeige stattdessen E-Mail, Apple- oder Facebook-Login an. Mit @capgo/capacitor-social-login Sie initialisieren 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 das in der Liste.
  • Push: Verwenden Sie Huawei Push Kit für HMS-Geräte. Es gibt keine offizielle Capacitor-Erweiterung; Huawei veröffentlicht Cordova-Plugins unter @hmscore/* die in Capacitor laufen, oder Sie können eine kleine native Erweiterung um den Push Kit SDK herum schreiben.
  • Karten: Verwenden Sie eine Web-Karte (Leaflet, MapLibre GL JS) innerhalb des WebView, die auf jedem Gerät funktioniert, oder Huawei Map Kit.
  • App bewerten: Auf Huawei verlinken Sie stattdessen auf Ihre AppGallery-Seite anstatt die Play-Bewertungsseite API aufzurufen.
  • Store linksDie App-Updateschaltfläche sollte die AppGallery öffnen.appmarket://details?id=com.example.app) öffnen und nicht den Google Play Store.

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

Schritt 4: Registrieren Sie ein HUAWEI-Entwicklerkonto

  1. Erstellen Sie ein HUAWEI-Konto bei Erstellen Sie einen HUAWEI-Konto bei .
  2. Complete Authentifizierungsprüfung Die Identitätsüberprüfung als Einzelperson oder Unternehmen abschließen. Einzelpersonen müssen typischerweise ein Ausweisdokument und Bankkartenangaben bereitstellen; Unternehmen müssen Geschäftsregistrierungsunterlagen bereitstellen. Die Überprüfung dauert in der Regel einen bis zwei Arbeitstage.
  3. Wählen Sie den Konto-Typ und das Land sorgfältig aus. Huawei lässt keine Umwandlung eines Einzelkontos in ein Unternehmenkonto zu, und das verifizierte Land oder die Region kann später nicht geändert werden.

Die Registrierung ist kostenlos.

Schritt 5: Erstellen Sie die App in AppGallery Connect

  1. Öffnen AppGallery Connect > Meine Apps > Neues App.
  2. Plattform: Android. Gerät: Mobiltelefon (auch Tablets abgedeckt).
  3. App-Name, Standard-Sprache und Paket-Name. Der Paket-Name muss übereinstimmen 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 Signierungschlü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 die Passwörter aus Umgebungsvariablen oder keystore.propertiesverwenden Sie sie nie im Commit):

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

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

Wenn Sie stattdessen ein AAB hochladen, erfordert AppGallery seinen App Signing-Dienst, was bedeutet, dass Huawei den finalen Signierungschlüssel generiert und speichert, dasselbe Modell wie Play App Signing.

Einige Dinge zu überprüfen, bevor Sie hochladen:

  • versionCode muss mit jedem Hochladen zunehmen.
  • Der App-Namen im APK sollte dem Namen im AppGallery entsprechen.
  • If Sie Apps außerhalb Chinas verteilen, stellen Sie Englisch (US) als Sprache in der Liste bereit.
  • 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 von 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 im Android-Entwicklerkonsolen registrieren.

Schritt 7: Die Liste vorbereiten

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

Anforderung Icon
Icon 216 x 216 PNG (512 x 512 auch akzeptiert), keine abgerundeten Ecken, die Sie hinzugefügt haben.
Screenshots 3 bis 8, 450 x 800 oder 800 x 450 px (oder proportional größer), gleiche Orientierung
bis zu 80 Zeichen Schritt 7: Die Liste vorbereiten
Einführung Bis zu 8.000 Zeichen
URL der Datenschutzrichtlinie Erforderlich, wenn die App personenbezogene Daten sammelt
Altersfreigabe Fragebogen in AppGallery Connect
Testkonto Erforderlich, wenn die App eine Anmeldung hat
Länder / Regionen Verteile die App explizit in Länder

Verwenden Sie keine Screenshot, die das Google Play-Logo, Android-Geräteframes, die von anderen Herstellern gebrandete sind, oder "Get it on Google Play"-Bilder enthalten. Huawei lehnt Listen ab, die auf andere Stores verweisen. Für die restlichen Assets können Sie die, die Sie für die anderen Stores erstellt haben, wieder verwenden; unsere Leitfaden für die App-Store- und Google-Play-Liste deckt sie ab.

Schritt 8: Hochladen, einreichen und überprüfen

  1. Im Versioneninformationen > Entwurf, laden Sie die 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. Einreichen zur Überprüfung.

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

  • Funktionen, die ohne Google Play-Dienste nicht funktionieren (Login-Button, der nichts tut, Kartenbildschirm leer).
  • App duplizieren: Eine App mit demselben Paketnamen existiert bereits auf AppGallery von einem anderen Entwickler oder Huawei hat Ihre App von Google Play kopiert. Kontaktieren Sie den Huawei-Entwicklerdienst mit Beweisen der Eigentümerschaft.
  • Verweise auf andere Stores im Bildschirmfoto oder im Text.
  • Englisch fehlt zur internationalen Verteilung.
  • Datenschutzrichtlinie fehlt oder nicht erreichbar von innen im App.

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

Schritt 9: Aktualisierungen schnell halten

Jede native Änderung wird erneut von Huawei überprüft, genau wie bei den anderen Stores. Für JavaScript, HTML und CSS-Änderungen Capgo Live-Updates liefern Sie das neue Bundle direkt an installierte Apps auf Huawei-, Google- und Apple-Geräten mit einer einzigen Upload, da der Updater Bundles von Ihrem Capgo-Endpunkt abruft und Google Play-Dienste nicht verwendet. Verwenden Sie einen dedizierten Kanal, wenn Ihr Huawei-Build unterschiedliche Funktionen hat:

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

Legen Sie die Standardkanal für den Huawei-Build bei der Zeit der Erstellung fest oder zuweisen Sie Geräte an den Kanal von Ihrer App. Der Capgo-Updater-Dokumentation erklärt Kanäle und Konfiguration.

Checkliste

  • Abhängigkeitsaudit durchgeführt, GMS-only-Funktionen aufgelistet
  • Runtime-Dienste-Überprüfung hinzugefügt und auf einem realen Huawei-Gerät getestet
  • Google-only-Funktionen versteckt oder ersetzt (Push, Anmeldung, Abrechnung, Maps, Bewertung)
  • HUAWEI-Entwicklerkonto verifiziert
  • App erstellt mit demselben Paketnamen wie capacitor.config.ts
  • Release-APK signiert mit einem gesicherten Keystore, versionCode bumpen
  • Icon, 3 bis 8 Screenshots, kurze und vollständige Einführung, Datenschutzrichtlinie
  • Keine Google Play-Referenzen in den Veröffentlichungsassets
  • Testkonto für Rezensionen, wenn erforderlich
  • Abgeschickt, Überprüfungs-E-Mail wird überwacht

Wenn Sie auch Google Play vorbereiten, lesen Sie wie Sie Apple- und Google Play-Entwicklerkonten erstellen um die 12-Test-Regel zu erfüllen, die nur dort gilt.

Live-Updates für Capacitor-Apps

Wenn ein Bug im Weblayer lebt, schicken Sie die Reparatur über Capgo anstatt Tage auf die Genehmigung durch das App-Store-Warteschleife zu warten. Die Benutzer erhalten die Aktualisierung im Hintergrund, während native Änderungen im normalen Überprüfungsprozess bleiben.

Neueste von unserem Blog

Capgo gibt Ihnen die besten Einblicke, die Sie benötigen, um eine wirklich professionelle mobile App zu erstellen.