Tinjau daftar pertanyaan yang sering diajukan berikut ini. Klik pertanyaan untuk melihat jawabannya.
Catatan penggunaan MultiDex pada proyek mPaaS Portal dan Bundle
Tag input file tidak dapat membuka kamera pada Huawei EMUI 10
Cara menggunakan atau menambahkan dependensi mPaaS dalam Library
Cara mengatasi error runtime 608 atau error native libsgmain
Tidak ada koneksi jaringan saat kompilasi
Jika Anda tidak memiliki koneksi jaringan saat mengompilasi file, proses kompilasi mungkin gagal. Ikuti langkah-langkah berikut untuk memastikan lingkungan kompilasi Anda terhubung ke jaringan.
Pastikan Anda terhubung ke Internet.
Pastikan Anda tidak terhubung ke proxy jaringan, seperti proxy browser atau perangkat lunak proxy pihak ketiga.
Pastikan tidak ada proxy IDE yang diatur.

Pada file
gradle.properties, pastikan tidak ada proxy Gradle yang diatur. Artinya, propertisystemProp.http.proxyHostdansystemProp.http.proxyPorttidak diatur. Jika sudah diatur, hapus properti tersebut.
Kompilasi program gagal
Jika program gagal dikompilasi, ikuti langkah-langkah berikut untuk memecahkan masalah dan menyelesaikannya.
Ikuti langkah-langkah dalam Tidak ada koneksi jaringan saat kompilasi untuk memastikan lingkungan kompilasi Anda memiliki koneksi jaringan yang stabil.
Periksa log eksekusi Gradle untuk memastikan dependensi baru valid.
Verifikasi bahwa parameter
group,artifact, danversion(GAV) dari dependensi tersebut benar.// Referensi paket debug group:artifact:version:raw@jar bundle "com.app.xxxxx.xxxx:test-build:1.0-SNAPSHOT:raw@jar" // Referensi paket release group:artifact:version@jar bundle "com.app.xxxxx.xxxx:test-build:1.0-SNAPSHOT@jar" manifest "com.app.xxxxx.xxxx:test-build:1.0-SNAPSHOT:AndroidManifest@xml"Pada antarmuka baris perintah sistem Anda, jalankan perintah berikut untuk mengekspor log eksekusi Gradle:
// Sebelum menjalankan perintah, pastikan properti productflavor tidak didefinisikan. Jika tidak, perintah akan gagal. // Perintah berikut mengekspor log eksekusi ke file log.txt. gradle buildDebug --info --debug -Plog=true > log.txtLihat file log yang diekspor. Catatan seperti berikut menunjukkan bahwa dependensi baru tidak tersedia.
Caused by: org.gradle.internal.resolve.ArtifactNotFoundException: Could not find nebulacore-build-AndroidManifest.xml (com.alipay.android.phone.wallet:nebulacore-build:1.6.0.171211174825). Searched in the following locations: http://mvn.cloud.alipay.com/nexus/content/repositories/releases/com/alipay/android/phone/wallet/nebulacore-build/1.6.0.171211174825/nebulacore-build-1.6.0.171211174825-AndroidManifest.xml at org.gradle.internal.resolve.result.DefaultBuildableArtifactResolveResult.notFound(DefaultBuildableArtifactResolveResult.java:38) at org.gradle.api.internal.artifacts.ivyservice.ivyresolve.CachingModuleComponentRepository$LocateInCacheRepositoryAccess.resolveArtifactFromCache(CachingModuleComponentRepository.java:260)Akses tautan HTTP dalam log (misalnya baris ketiga pada log dari langkah sebelumnya) dan login untuk melihat Repositori Maven.
CatatanAnda dapat menemukan username dan password yang diperlukan untuk login di file
build.gradle.Jalankan perintah berikut untuk purge cache
gradle.gradle clean --refresh-dependenciesJika Repositori Maven berisi dependensi tersebut, hapus cache Gradle dari direktori pribadi Anda lalu kompilasi ulang. Untuk menghapus cache Gradle:
Pada sistem macOS, Linux, atau Unix, jalankan perintah berikut.
cd ~ cd .gradle cd caches rm -rf modules-2Pada Windows, buka path default
C:\Users\{username}\.gradle\cachesdan hapus foldermodules-2.
Perlambatan selama kompilasi
Jika proses kompilasi sangat lambat (misalnya, memakan waktu lebih dari 20 menit), Anda dapat mengikuti langkah-langkah berikut untuk meningkatkan efisiensi kompilasi.
Ikuti langkah-langkah dalam bagian sebelumnya untuk memastikan lingkungan kompilasi Anda memiliki koneksi jaringan yang stabil.
Pastikan firewall dinonaktifkan.
Pastikan tidak ada proxy jaringan yang dikonfigurasi untuk kompiler IntelliJ IDEA.
Dalam kode Anda, konfigurasikan Repositori Maven terlebih dahulu. Contohnya, kode berikut mengonfigurasi Repositori Maven Alibaba Cloud.
apply plugin: 'maven' buildscript { repositories { mavenLocal() // Pertama, muat gambar Maven maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'} maven { credentials { username "Use a known user" password "Use a known password" } url "http://mvn.cloud.alipay.com/nexus/content/repositories/releases/" } } dependencies { classpath 'com.android.tools.build:gradle:2.1.3' classpath 'com.alipay.android:android-gradle-plugin:2.1.3.3.3' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' } } allprojects { repositories { flatDir { dirs 'libs' } mavenLocal() maven { credentials { username "xxxxxxxxx" password "xxxxxxx" } url "http://mvn.cloud.alipay.com/nexus/content/repositories/releases/" } maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'} } }
Kompilasi gagal dengan NullPointerException
Saat menghubungkan ke Apsara Stack, kompilasi mungkin gagal dengan NullPointerException setelah Anda mengunduh file konfigurasi dan menghubungkan ke mPaaS. Jika hal ini terjadi, periksa file konfigurasi tersebut. Pastikan semua 13 bidang wajib tersedia dan nama bidang sesuai dengan yang ada di file yang diunduh dari public cloud.
Cara melakukan debug aplikasi
Anda perlu melakukan debug kode selama pengembangan. Topik ini menjelaskan dua metode debugging.
Jalankan aplikasi dalam mode debug
Debug aplikasi setelah aplikasi berjalan
Jalankan aplikasi dalam mode debug
Skenario
Anda ingin melakukan debug kode awal saat aplikasi dimulai, seperti kode inisialisasi selama
application init.Prosedur
Jalankan perintah
adb shell am start -W -S -D <application_package_name>/<first_activity_class_name>. Misalnya, nama paket mPaaS Demo adalahcom.mpaas.demo, dan nama kelas aktivitas pertama adalahcom.alipay.mobile.quinox.LauncherActivity. Anda dapat menjalankan perintahadb shell am start -W -S -D com.mpaas.demo/com.alipay.mobile.quinox.LauncherActivityuntuk menjalankan aplikasi dalam mode debug. Nama kelas aktivitas pertama ditampilkan pada gambar berikut.
Setelah menjalankan perintah, dialog berikut muncul di ponsel Anda.

Atur breakpoint pada baris kode yang ingin Anda debug, lalu attach ke proses aplikasi, seperti yang ditunjukkan pada gambar.

Debug aplikasi setelah aplikasi berjalan
Skenario
Anda perlu melakukan debug setelah suatu event dipicu, seperti menekan tombol atau berpindah ke halaman tertentu.
Prosedur
Setelah aplikasi berjalan, klik tombol Attach to process (
) untuk memulai debugging.
Catatan penggunaan MultiDex pada proyek mPaaS Portal dan Bundle
Kami tidak merekomendasikan penggunaan MultiDex untuk proyek Portal dan Bundle. Satu-satunya pengecualian adalah jika proyek portal tunggal memerlukan multiDexEnabled true. Jika ukuran Bundle terlalu besar, lakukan pemisahan bundle alih-alih mengaktifkan dukungan MultiDex untuknya.
Cara membersihkan cache Gradle
Buka antarmuka pengaturan untuk plugin Gradle dan klik tombol Clean Cache untuk menghapus semua data cache plugin Gradle.

Cara upgrade ke plugin Gradle terbaru
Bagian ini hanya berlaku untuk seri baseline 10.1.68. Untuk informasi lebih lanjut tentang versi baseline ini, lihat Pengenalan baseline dan Catatan rilis seri baseline 10.1.68.
Plugin Android Gradle resmi dari Google adalah versi 3.5.x.
mPaaS juga menyediakan plugin kompatibel versi 3.5.x, yang mendukung API Google Android Gradle Plugin 3.5.3 dan Gradle 6.2.
Perubahan pada metode impor
Anda hanya perlu menambahkan dependensi berikut untuk mengimpor plugin mPaaS. Anda tidak perlu mengimpor plugin Android Gradle resmi karena secara otomatis diimpor melalui dependensi transitif.
dependencies { classpath 'com.alipay.android:android-gradle-plugin:3.5.18' }Versi Gradle Wrapper harus 5.6 atau lebih baru. Kami merekomendasikan menggunakan versi 6.2.
Perubahan pada penggunaan
Anda tidak perlu lagi menggunakan
apply plugin:'com.android.application'.Jika Anda memiliki proyek portal, cukup gunakan
apply plugin:'com.alipay.portal'.Jika Anda memiliki proyek bundle, hapus
apply plugin:'com.android.application', dan gunakan hanyaapply plugin:'com.alipay.bundle'.Jika Anda memiliki proyek library, hapus
apply plugin:'com.alipay.library', dan gunakan hanyaapply plugin:'com.android.library'.
Jika Anda menggunakan versi stabil terbaru Android Studio 3.5 atau lebih baru, Anda perlu menambahkan
android.buildOnlyTargetAbi=falseke filegradle.properties.Karena Komponen Security Guard mPaaS tidak mendukung penandatanganan V2, Anda harus menonaktifkan penandatanganan V2 untuk melakukan debug dan menginstal APK menggunakan Android Studio. Jika Anda membangun dari command line dan minSdkVersion Anda 24 atau lebih tinggi, Anda juga perlu menonaktifkan penandatanganan V2. Untuk menonaktifkan penandatanganan V2:
v2SigningEnabled false
Setelah membersihkan cache, pantau dan pastikan program mini dan halaman H5 berfungsi sebagaimana mestinya.
Tag input file tidak dapat membuka kamera pada Huawei EMUI 10
Karena implementasi URI pada Huawei EMUI 10 berbeda dari standar Android, Anda mungkin tidak dapat membuka kamera pada Huawei EMUI 10. Ikuti langkah-langkah berikut untuk mengatasi masalah ini.
1. Upgrade baseline
Jika Anda menggunakan baseline seri 32, upgrade ke 10.1.32.18 atau lebih baru.
Jika Anda menggunakan baseline seri 60, upgrade ke 10.1.60.9 atau lebih baru.
Jika Anda menggunakan baseline seri 68, upgrade ke 10.1.68-beta.3 atau lebih baru.
2. Konfigurasi FileProvider
Anda dapat menggunakan kembali FileProvider yang sudah ada atau membuat yang baru.
Buat kelas Java baru yang mewarisi FileProvider.
import android.support.v4.content.FileProvider; public class NebulaDemoFileProvider extends FileProvider { }Di res/xml, buat file baru bernama nebula_fileprovider_path.xml.
<?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="external" path="."/> </paths>Tambahkan konfigurasi ke AndroidManifest.
<provider android:name="com.mpaas.demo.nebula.NebulaDemoFileProvider" android:authorities="com.mpaas.demo.nebula.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/nebula_fileprovider_path" /> </provider>CatatanNilai
android:authorities,com.mpaas.demo.nebula.provider, adalah contoh dari demo mPaaS. Anda harus mengatur nilai ini untuk aplikasi Anda sendiri dan tidak boleh menggunakancom.mpaas.demo.nebula.provideruntuk mencegah konflik dengan aplikasi mPaaS lainnya.
3. Implementasikan H5NebulaFileProvider
Buat kelas Java baru yang mengimplementasikan
H5NebulaFileProvider. Implementasikan metodegetUriForFile. Dalam metode ini, panggilFileProvideryang telah Anda implementasikan di atas untuk menghasilkan URI.public class H5NebulaFileProviderImpl implements H5NebulaFileProvider { private static final String TAG = "H5FileProviderImpl"; @Override public Uri getUriForFile(File file) { try { return getUriForFileImpl(file); } catch (Exception e) { H5Log.e(TAG, e); } return null; } private static Uri getUriForFileImpl(File file) { Uri fileUri = null; if (Build.VERSION.SDK_INT >= 24) { fileUri = NebulaDemoFileProvider.getUriForFile(LauncherApplicationAgent.getInstance().getApplicationContext(), "com.mpaas.demo.nebula.provider", file); } else { fileUri = Uri.fromFile(file); } return fileUri; } }Daftarkan
H5NebulaFileProvider. Setelah inisialisasi mPaaS selesai dan sebelum memulai paket offline, daftarkanH5NebulaFileProvider. Pendaftaran bersifat global dan hanya perlu dilakukan sekali.H5Utils.setProvider(H5NebulaFileProvider.class.getName(), new H5NebulaFileProviderImpl());
Cara menggunakan atau menambahkan dependensi mPaaS dalam Library
Saat menggunakan framework mPaaS, terkadang Anda perlu menggunakan kembali modul. Untuk melakukannya, tambahkan modul sebagai dependensi. Topik ini menggunakan modul Komponen Scan mPaaS sebagai contoh.
Prasyarat
Anda telah menghubungkan proyek Anda ke mPaaS menggunakan metode native AAR.
Prosedur
Dalam proyek Android Anda, buat modul Android Library bernama
scan.
Dalam file build.gradle modul scan yang baru, tambahkan
api platform("com.mpaas.android:$mpaas_artifact:$mpaas_baseline"). Berikut contohnya:dependencies { …… // Ini harus ditambahkan saat menggunakan fitur komponen mPaaS dalam modul. api platform("com.mpaas.android:$mpaas_artifact:$mpaas_baseline") …… }Gunakan plugin mPaaS di Android Studio untuk menginstal Komponen Scan pada modul scan. Jalur menu: mPaaS > Native AAR Connection > Configure/Update Component > Start Configuration. Setelah instalasi, Komponen Scan akan dimuat secara otomatis.
Konfigurasikan proyek aplikasi utama.
plugins { id 'com.android.application' ...... // Anda harus menambahkan baseline.config (baseline) ke file build.gradle di bawah app. id 'com.alipay.apollo.baseline.config' }Tambahkan modul scan sebagai dependensi di tempat Anda perlu menggunakan Komponen Scan.
dependencies { api platform("com.mpaas.android:$mpaas_artifact:$mpaas_baseline") .... api project(':scan')// Komponen Scan }
Cara mengatasi error runtime 608 atau error native libsgmain
Jika terjadi exception saat runtime, cari kata kunci SecException dalam log operasional Android Studio. Jika Anda menemukan kode kesalahan 608 atau error native libsgmain, ikuti langkah-langkah berikut untuk memecahkan masalah.
Periksa apakah file
res/drawable/yw_1222.jpgada.Periksa apakah file konfigurasi berisi Base64.
Periksa apakah plugin Gradle
baseline.updateataubaseline.configditerapkan.
Periksa apakah folder META-INF berisi tiga file berikut:
CERT.SF,MANIFEST.MF, danCERT.RSA.Dalam
app/build.gradle, aktifkanv1SignEnabled.Periksa apakah file
build.gradledi direktori root proyek berisiapply plugin: 'com.alipay.apollo.optimize'.
Jika semua pemeriksaan ini berhasil, kemungkinan besar masalahnya terletak pada paket APK bertanda tangan yang diunggah ke Konsol, seperti kesalahan signature. Anda harus mengunggah ulang paket APK tersebut.