Kamu dapat menerbitkan aplikasi Capacitor di Huawei AppGallery dengan sama-sama build Android yang kamu kirim ke Google Play. Daftarkan akun HUAWEI Developers gratis, periksa plugin mana yang bergantung pada layanan Google Play (tidak ada di ponsel Huawei yang dirilis sejak akhir 2019), sembunyikan atau gantikan fitur-fitur tersebut, kemudian unggah APK yang ditandatangani di AppGallery Connect dengan deskripsi dan tunggu review. Panduan ini mencakup setiap langkah, termasuk cek kecil native yang dapat kamu masukkan ke aplikasi untuk mendeteksi layanan Google Play tanpa dependensi tambahan.
Siapa yang harus menerbitkan di AppGallery
AppGallery adalah toko default di ponsel dan tablet Huawei. Hal ini penting jika pengguna kamu termasuk:
- Pengguna di Eropa, Timur Tengah, Afrika, Amerika Latin, dan Asia Tenggara yang menggunakan perangkat Huawei yang dirilis setelah pembatasan perdagangan AS 2019, yang tidak memiliki layanan Google Play dan tidak memiliki Toko Play.
- Pelanggan bisnis atau pemerintah yang telah beralih ke perangkat keras Huawei.
Catatan tentang HarmonyOS: Ponsel Huawei yang dijual di luar daratan Tiongkok menjalankan EMUI, yang berbasis Android dan menginstal APK. Perangkat di daratan Tiongkok yang menjalankan HarmonyOS NEXT (HarmonyOS 5 dan seterusnya) hanya menjalankan aplikasi native HarmonyOS, sehingga APK Android tidak mencapai mereka. Panduan ini tentang AppGallery yang berbasis Android.
Langkah 1: Audit dependensi layanan Google Play
Capacitor sendiri hanya bergantung pada AndroidX dan library Android sendiri. Risiko datang dari plugin yang menarik library Google. Lihatlah dependensi Anda:
cd android
./gradlew :app:dependencies --configuration releaseRuntimeClasspath \
| grep -E "com.google.android.gms|com.google.firebase|com.google.android.play|billingclient" \
| sort -u
Kemudian urutkan mereka menjadi “berfungsi tanpa layanan Google Play” dan “memerlukan layanan Google Play”.
| Ketergantungan | Pada Huawei tanpa GMS | Plugin biasa |
|---|---|---|
| Firebase Cloud Messaging | Tidak berfungsi | @capacitor/push-notifications, Plugin pesan Firebase |
| Peta Google SDK | Tidak berfungsi | @capacitor/google-maps |
Google Sign-In ("play-services-auth, Manajer Kredensial Google ID) |
Tidak berfungsi | Penyedia Google dari @capgo/capacitor-social-login |
| Google Play Billing | Tidak berfungsi | @capgo/capacitor-native-purchases, RevenueCat di Android |
| Ulasan Aplikasi | Tidak berfungsi | @capgo/capacitor-in-app-review |
| Perbarui Aplikasi dalam Aplikasi | Tidak berfungsi | Bantuan pembaruan Play di @capgo/capacitor-updater |
| Bantuan integritas Play | Tidak berfungsi | Plugin pengakuan aplikasi pada Android |
Lokasi terkait (play-services-location) |
Terletak pada plugin; beberapa kembali ke LokasiManager Android | @capacitor/geolocation, plugin geolokasi latar belakang |
play-services-tasks, play-services-basement sendiri |
Baik (library sederhana) | Banyak plugin |
| Firestore, Database Saat Masa, Penyimpanan, Konfigurasi Jarak Jauh, Crashlytics, Autentikasi Email/Password | berfungsi | Plugin Firebase |
| Capgo pembaruan hidup | berfungsi | @capgo/capacitor-updater |
| Apple dan Facebook login | Kerja | @capgo/capacitor-social-login Provider Apple / Facebook |
“Tidak berfungsi” biasanya berarti panggilan melempar atau tidak pernah menyelesaikan. Jarang menghancurkan aplikasi seluruhnya, tetapi reviewer menguji di perangkat Huawei dan layar mati atau layar kosong adalah alasan penolakan umum.
Langkah 2: Deteksi Google Play services pada waktu runtime
Kamu bisa memeriksa Google Play services tanpa menambahkan ketergantungan Google apa pun dengan bertanya kepada manajer paket Android apakah com.google.android.gms is installed. Add a tiny local plugin to your Capacitor Android project.
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);
}
}
Daftarkan di MainActivity.java sebelum 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);
}
}
Karena Android 11, aplikasi hanya melihat paket lain yang mereka klaim. Tambahkan blok ke <queries> dalam android/app/src/main/AndroidManifest.xml] <manifest>:
<queries>
<package android:name="com.google.android.gms" />
<package android:name="com.huawei.hwid" />
</queries>
Hubungkan dari TypeScript:
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();
}
Presensi paket adalah proxy yang masuk akal. Ini tidak memberitahu Anda apakah layanan Google Play sudah terupdate atau diaktifkan; jika Anda juga membutuhkan itu, tambahkan com.google.android.gms:play-services-base dan gunakan GoogleApiAvailability.isGooglePlayServicesAvailable(), yang masih berfungsi bahkan pada perangkat tanpa GMS.
Langkah 3: Turunkan secara halus
Pakai hasilnya untuk mengaktifkan dan menonaktifkan fitur:
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();
}
}
}
Penggantian praktis:
- Pengenalan: sembunyikan tombol Google dan tampilkan login email, Apple, atau Facebook sebaliknya. Dengan
@capgo/capacitor-social-loginkamu hanya menginisialisasi penyedia yang kamu tunjukkan. - Pembayaran: Google Play Billing tidak tersedia. AppGallery memiliki Huawei IAP sendiri. Jika pembelian digital menjadi inti aplikasi, entah integrasikan Huawei IAP atau kirimkan build AppGallery tanpa pembelian dan katakan pada daftar.
- PushGunakan Huawei Push Kit untuk perangkat HMS. Tidak ada plugin resmi Capacitor; Huawei menerbitkan plugin Cordova di bawah
@hmscore/*yang berjalan di Capacitor, atau Anda juga dapat menulis plugin native kecil di sekitar Push Kit SDK. - MapsGunakan peta web (Leaflet, MapLibre GL JS) di dalam WebView, yang berfungsi di setiap perangkat, atau Huawei Map Kit.
- Berikan Ulasan AplikasiPilih AppGallery Huawei, buka halaman aplikasi Anda, dan ganti review Play dengan API.
- Tautan Toko) di perangkat Huawei, bukan toko Play.
appmarket://details?id=com.example.appdi perangkat Huawei, bukan di Play Store.
Tes pada perangkat Huawei nyata atau layanan debug Huawei di awan. Sebuah emulator dengan Google API akan menyembunyikan setiap masalah ini.
Langkah 4: Daftar akun HUAWEI Developers
- Membuat ID HUAWEI di https://developer.huawei.com.
- Lengkapi verifikasi identitas sebagai individu atau perusahaan. Individu biasanya menyediakan dokumen ID dan detail kartu bank; perusahaan menyediakan dokumen pendaftaran bisnis. Pengujian biasanya memakan waktu satu hingga dua hari kerja.
- Pilih jenis akun dan negara dengan hati-hati. Huawei tidak memungkinkan Anda mengubah akun individu menjadi akun perusahaan, dan negara atau wilayah yang diverifikasi tidak dapat diubah kemudian.
Pendaftaran gratis.
Langkah 5: Buat aplikasi di AppGallery Connect
- context AppGallery Connect > Aplikasi Saya > Aplikasi Baru.
- Platform: Platform:Perangkat: Telepon seluler (termasuk tablet juga).
- Nama aplikasi, bahasa default, dan nama paket. Nama paket harus sesuai dengan
appIdincapacitor.config.tstidak dapat diubah setelah unggahan pertama. - Langkah 6: Bangun dan tandatangani paket rilis
Langkah 6: Bangun dan tandatangani paket rilis
Page/area: About Capgo page. Role: UI label. Seen in: page about.astro. Message key `about_how_step_label` (About How Step Label).
bun run build
bunx cap sync android
cd android
./gradlew assembleRelease
Konfigurasi tanda tangan android/app/build.gradle (load password dari variabel lingkungan atau) keystore.properties(muat password dari variabel lingkungan atau
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
}
}
}
APK berada di android/app/build/outputs/apk/release/Jika Anda membutuhkan keystore, generator keystore Android Membuat keystore Android Simpanlah dengan aman: setiap update AppGallery masa depan harus ditandatangani dengan kunci yang sama.
Jika Anda mengunggah AAB, AppGallery memerlukan layanan tanda tangan aplikasi, yang berarti Huawei menghasilkan dan menyimpan kunci tanda tangan akhir, model yang sama dengan Play App Signing.
Beberapa hal untuk dicek sebelum unggah:
versionCodeJumlah versi harus meningkat dengan setiap unggahan.- Nama aplikasi di APK harus sesuai dengan nama daftar AppGallery.
- Jika Anda mendistribusikan di luar daratan Cina, berikan Inggris (Amerika Serikat) sebagai bahasa dalam daftar.
- Sejak 30 September 2026, verifikasi pengembang Android berlaku untuk aplikasi yang diinstal di perangkat yang telah disertifikasi di Brasil, Indonesia, Singapura, dan Thailand. Perangkat Huawei tanpa layanan Google tidak terverifikasi Google, tetapi jika paket yang sama juga diinstal dari luar Google Play di perangkat yang telah disertifikasi, daftarkan nama paket di Console Pengembang Android.
Langkah 7: Siapkan daftar
Daftar AppGallery memiliki spesifikasinya sendiri, berbeda dari Apple dan Google:
| Field | Requirement |
|---|---|
| Icon | 216 x 216 PNG (512 x 512 juga diterima), tidak ada sudut yang diubah oleh Anda |
| Screenshots | 3 hingga 8, 450 x 800 atau 800 x 450 px (atau proporsional lebih besar), sama orientasi |
| Ringkasan Pendahuluan | Up to 80 karakter |
| Pendahuluan | Up to 8,000 karakter |
| URL Kebijakan Privasi | Diperlukan jika aplikasi mengumpulkan data pribadi |
| Usia penggunaan | Kuesioner di AppGallery Connect |
| Akun uji coba | Diperlukan jika aplikasi memiliki login |
| Negara / wilayah | Pilih negara distribusi secara eksplisit |
Jangan gunakan screenshot yang menampilkan logo Google Play, frame perangkat Android yang ditandai oleh pemasok lain, atau bingkai "Get it on Google Play". Huawei menolak daftar yang merujuk ke toko lain. Untuk aset lainnya, gunakan apa yang Anda buat untuk toko lain; kami Petunjuk daftar App Store dan Google Play Mereka menutupinya.
Langkah 8: Unggah, ajukan, dan tinjau
- Di Versi informasi > DraftUpload APK di bawah ini: Versi perangkat lunak.
- Isi daftar, peringkat, privasi, dan negara.
- Set waktu rilis (langsung setelah persetujuan atau yang dijadwalkan).
- Kirimkan untuk tinjauan.
Tinjauan biasanya memakan beberapa hari kerja. Penolakan datang melalui email dengan referensi pedoman. Yang umum untuk aplikasi Capacitor:
- Fungsi yang tidak berfungsi tanpa layanan Google Play (tombol login yang tidak berfungsi, layar peta kosong).
- Aplikasi duplikat: aplikasi dengan nama paket yang sama sudah ada di AppGallery dari pengembang lain, atau Huawei sebelumnya menyalin aplikasi Anda dari Google Play. Hubungi dukungan pengembang Huawei dengan bukti kepemilikan.
- Referensi toko lain di screenshot atau teks.
- Penerapan Inggris Tidak tersedia untuk distribusi internasional.
- Kebijakan Privasi Tidak tersedia atau tidak dapat diakses dari dalam aplikasi.
AppGallery Connect juga memiliki sebuah Proses API, sehingga Anda dapat mengautomasi unggahan dari CI setelah versi pertama hidup.
Langkah 9: Simpan pembaruan cepat
Setiap perubahan native harus melewati ulasan Huawei lagi, seperti toko lainnya. Untuk perubahan JavaScript, HTML dan CSS, Capgo pembaruan waktu nyata 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
Atur saluran default untuk build Huawei pada waktu build, atau asingkan perangkat ke saluran dari aplikasi Anda. Dokumentasi pembaruan Capgo __CAPGO_KEEP_0__ pembaruan dokumen
Checklist
- Audit dependensi selesai, fitur GMS hanya
- Periksa layanan waktu eksekusi ditambahkan dan diuji pada perangkat Huawei nyata
- Fitur Google-only disembunyikan atau diganti (push, sign-in, billing, maps, review)
- Akun pengembang HUAWEI diverifikasi
- Aplikasi dibuat dengan nama paket yang sama sebagai
capacitor.config.ts - APK rilis ditandatangani dengan keystore yang disimpan
versionCodeDitambahkan - Icon, 3 hingga 8 screenshot, pengenalan singkat dan lengkap, kebijakan privasi
- Tidak ada referensi Google Play dalam aset daftar
- Jika perlu, akun uji untuk reviewer
- Dikirim, email tinjauan diawasi
Jika Anda juga mempersiapkan Google Play, baca bagaimana cara membuat akun pengembang Apple dan Google Play untuk aturan 12-pengujian yang hanya berlaku di sana.