以下のよくある質問のリストをご確認ください。質問をクリックすると、回答が表示されます。
コンパイル時のネットワーク接続なし
ファイルのコンパイル時にネットワーク接続がない場合、コンパイルが失敗することがあります。次の手順に従って、コンパイル環境がネットワークに接続されていることを確認してください。
インターネットに接続されていることを確認します。
ブラウザのプロキシやサードパーティのプロキシソフトウェアなど、ネットワークプロキシに接続されていないことを確認します。
IDE プロキシが設定されていないことを確認します。

gradle.propertiesファイルで、Gradle プロキシが設定されていないことを確認します。これは、systemProp.http.proxyHostおよびsystemProp.http.proxyPortプロパティが設定されていないことを意味します。設定されている場合は、削除してください。
プログラムのコンパイル失敗
プログラムのコンパイルに失敗した場合は、次の手順に従ってトラブルシューティングを行い、問題を解決してください。
「コンパイル時のネットワーク接続なし」の手順に従って、コンパイル環境が安定したネットワークに接続されていることを確認します。
Gradle の実行ログをチェックして、新しい依存関係が有効であることを確認します。
依存関係の
group、artifact、version(GAV) パラメーターが正しいことを確認します。// デバッグパッケージを参照 group:artifact:version:raw@jar bundle "com.app.xxxxx.xxxx:test-build:1.0-SNAPSHOT:raw@jar" // リリースパッケージを参照 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"システムのコマンドラインインターフェイスで、次のコマンドを実行して Gradle の実行ログをエクスポートします。
// コマンドを実行する前に、productflavor プロパティが定義されていないことを確認してください。定義されている場合、コマンドは失敗します。 // 次のコマンドは、実行ログを log.txt ファイルにエクスポートします。 gradle buildDebug --info --debug -Plog=true > log.txtエクスポートされたログファイルを表示します。以下のようなレコードは、新しい依存関係が存在しないことを示しています。
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)ログ内の HTTP リンク (前のステップのログの 3 行目など) にアクセスし、ログインして Maven リポジトリを表示します。
説明ログインに必要なユーザー名とパスワードは、
build.gradleファイルに記載されています。次のコマンドを実行して、
gradleキャッシュをパージします。gradle clean --refresh-dependenciesMaven リポジトリに依存関係が含まれている場合は、個人ディレクトリから Gradle キャッシュを削除してから再コンパイルします。Gradle キャッシュを削除するには:
macOS、Linux、または UNIX システムでは、次のコマンドを実行します。
cd ~ cd .gradle cd caches rm -rf modules-2Windows では、デフォルトパス
C:\Users\{username}\.gradle\cachesに移動し、modules-2フォルダを削除します。
コンパイル中のカクつき
コンパイルプロセスが異常に遅い場合 (たとえば、20 分以上かかる場合)、次の手順に従ってコンパイル効率を向上させることができます。
「前のセクション」の手順に従って、コンパイル環境が安定したネットワークに接続されていることを確認します。
ファイアウォールが無効になっていることを確認します。
IntelliJ IDEA コンパイラにネットワークプロキシが設定されていないことを確認します。
コード内で、Maven リポジトリを事前に設定します。たとえば、次のコードは Alibaba Cloud Maven リポジトリを設定します。
apply plugin: 'maven' buildscript { repositories { mavenLocal() // まず、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/'} } }
NullPointerException によるコンパイル失敗
Apsara Stack に接続する際、設定ファイルをダウンロードして mPaaS に接続した後に、NullPointerException でコンパイルが失敗することがあります。この場合、設定ファイルを検査してください。13 個の必須フィールドがすべて存在し、フィールド名がパブリッククラウドからダウンロードしたファイルのものと一致していることを確認してください。
アプリケーションのデバッグ方法
開発中にコードをデバッグする必要があります。このトピックでは、2 つのデバッグ方法について説明します。
デバッグモードでアプリケーションを起動する
実行中のアプリケーションをデバッグする
デバッグモードでアプリケーションを起動する
シナリオ
application init中の初期化コードなど、アプリケーション起動時の初期コードをデバッグしたい場合。手順
コマンド
adb shell am start -W -S -D <application_package_name>/<first_activity_class_name>を実行します。たとえば、mPaaS Demo のパッケージ名はcom.mpaas.demoで、最初のアクティビティクラス名はcom.alipay.mobile.quinox.LauncherActivityです。コマンドadb shell am start -W -S -D com.mpaas.demo/com.alipay.mobile.quinox.LauncherActivityを実行して、アプリケーションをデバッグモードで起動できます。最初のアクティビティクラス名は、次の図に示されています。
コマンドを実行すると、携帯電話に次のダイアログボックスが表示されます。

デバッグしたいコード行にブレークポイントを設定し、図に示すようにアプリケーションのプロセスにアタッチします。

実行中のアプリケーションをデバッグする
シナリオ
ボタンのクリックやページへのナビゲーションなど、イベントがトリガーされた後にデバッグする必要がある場合。
手順
アプリケーションの実行後、[Attach to process] (
) ボタンをクリックしてデバッグを開始します。
mPaaS Portal および Bundle プロジェクトでの MultiDex の使用に関する注意事項
Portal および Bundle プロジェクトで MultiDex を使用することは推奨されません。唯一の例外は、単一の Portal プロジェクトで multiDexEnabled true が必要な場合です。Bundle が大きすぎる場合は、MultiDex サポートを有効にするのではなく、バンドルを分割してください。
Gradle キャッシュのクリア方法
Gradle プラグインの設定インターフェイスを開き、[Clean Cache] ボタンをクリックして、Gradle プラグインのすべてのキャッシュデータを削除します。

最新の Gradle プラグインへのアップグレード方法
このセクションは、10.1.68 ベースラインシリーズにのみ適用されます。このベースラインバージョンの詳細については、「ベースラインの概要」および「10.1.68 ベースラインシリーズのリリースノート」をご参照ください。
Google の公式 Android Gradle Plugin はバージョン 3.5.x です。
mPaaS は、バージョン 3.5.x の互換プラグインも提供しており、Google Android Gradle Plugin 3.5.3 および Gradle 6.2 の API をサポートしています。
インポート方法の変更
mPaaS プラグインをインポートするには、次の依存関係を追加するだけで済みます。公式の Android Gradle Plugin は、推移的な依存関係により自動的にインポートされるため、インポートする必要はありません。
dependencies { classpath 'com.alipay.android:android-gradle-plugin:3.5.18' }Gradle Wrapper のバージョンは 5.6 以降である必要があります。バージョン 6.2 の使用を推奨します。
使用方法の変更
apply plugin:'com.android.application'を使用する必要はなくなりました。portal プロジェクトがある場合は、
apply plugin:'com.alipay.portal'を使用するだけで済みます。bundle プロジェクトがある場合は、
apply plugin:'com.android.application'を削除し、apply plugin:'com.alipay.bundle'のみを使用します。library プロジェクトがある場合は、
apply plugin:'com.alipay.library'を削除し、apply plugin:'com.android.library'のみを使用します。
Android Studio 3.5 以降の最新の安定版を使用している場合は、
gradle.propertiesファイルにandroid.buildOnlyTargetAbi=falseを追加する必要があります。mPaaS Security Guard コンポーネントは V2 署名をサポートしていないため、Android Studio を使用して APK をデバッグおよびインストールするには、V2 署名を無効にする必要があります。コマンドラインからビルドし、`minSdkVersion` が 24 以上の場合は、V2 署名を無効にする必要もあります。V2 署名を無効にするには:
v2SigningEnabled false
キャッシュをクリアした後、ミニアプリと H5 ページが期待どおりに動作することをモニターし、確認してください。
Huawei EMUI 10 で input file タグがカメラを開けない問題
Huawei EMUI 10 の URI 実装は標準の Android と異なるため、Huawei EMUI 10 でカメラを開けない場合があります。この問題を解決するには、次の手順に従ってください。
1. ベースラインのアップグレード
32 シリーズのベースラインを使用している場合は、10.1.32.18 以降にアップグレードしてください。
60 シリーズのベースラインを使用している場合は、10.1.60.9 以降にアップグレードしてください。
68 シリーズのベースラインを使用している場合は、10.1.68-beta.3 以降にアップグレードしてください。
2. FileProvider の設定
既存の FileProvider を再利用するか、新しいものを作成できます。
FileProvider を継承する新しい Java クラスを作成します。
import android.support.v4.content.FileProvider; public class NebulaDemoFileProvider extends FileProvider { }res/xml に、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>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>説明android:authoritiesの値であるcom.mpaas.demo.nebula.providerは、mPaaS デモのサンプルです。この値はご自身のアプリケーション用に設定する必要があり、他の mPaaS アプリケーションとの競合を避けるためにcom.mpaas.demo.nebula.providerを使用してはなりません。
3. H5NebulaFileProvider の実装
H5NebulaFileProviderを実装する新しい Java クラスを作成します。getUriForFileメソッドを実装します。このメソッドでは、上記で実装したFileProviderを呼び出して 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; } }H5NebulaFileProviderを登録します。mPaaS の初期化が完了し、オフラインパッケージを開始する前に、H5NebulaFileProviderを登録します。登録はグローバルであり、一度だけ実行する必要があります。H5Utils.setProvider(H5NebulaFileProvider.class.getName(), new H5NebulaFileProviderImpl());
Library で mPaaS を使用または依存する方法
mPaaS フレームワークを使用する場合、モジュールを再利用する必要がある場合があります。これを行うには、モジュールを依存関係として追加します。このトピックでは、mPaaS スキャンコンポーネントのモジュールを例として使用します。
前提条件
ネイティブ AAR 方式を使用してプロジェクトを mPaaS に接続済みであること。
手順
Android プロジェクトで、
scanという名前の Android Library モジュールを作成します。
新しい scan モジュールの build.gradle ファイルに、
api platform("com.mpaas.android:$mpaas_artifact:$mpaas_baseline")を追加します。以下に例を示します。dependencies { …… // モジュールで mPaaS コンポーネント機能を使用する場合は、これを追加する必要があります。 api platform("com.mpaas.android:$mpaas_artifact:$mpaas_baseline") …… }Android Studio の mPaaS プラグインを使用して、scan モジュールにスキャンコンポーネントをインストールします。メニューパスは、[mPaaS] > [Native AAR Connection] > [Configure/Update Component] > [Start Configuration] です。インストール後、スキャンコンポーネントは自動的にロードされます。
メインの app プロジェクトを設定します。
plugins { id 'com.android.application' ...... // app の下の build.gradle ファイルに baseline.config (ベースライン) を追加する必要があります。 id 'com.alipay.apollo.baseline.config' }スキャンコンポーネントを使用する必要がある場所に、scan モジュールを依存関係として追加します。
dependencies { api platform("com.mpaas.android:$mpaas_artifact:$mpaas_baseline") .... api project(':scan')// スキャンコンポーネント }
実行時エラー 608 または libsgmain ネイティブエラーの解決方法
実行時に例外が発生した場合は、Android Studio の操作ログでキーワード SecException を検索します。エラーコード 608 または libsgmain ネイティブエラーが見つかった場合は、次の手順に従ってトラブルシューティングを行ってください。
res/drawable/yw_1222.jpgファイルが存在するかどうかを確認します。設定ファイルに Base64 が含まれているかどうかを確認します。
Gradle プラグイン
baseline.updateまたはbaseline.configが適用されているかどうかを確認します。
META-INF フォルダに
CERT.SF、MANIFEST.MF、CERT.RSAの 3 つのファイルが含まれているかどうかを確認します。app/build.gradleで、v1SignEnabledを有効にします。プロジェクトのルートディレクトリにある
build.gradleファイルにapply plugin: 'com.alipay.apollo.optimize'が含まれているかどうかを確認します。
これらのチェックがすべて合格した場合、問題はコンソールにアップロードされた署名付き APK パッケージ (署名エラーなど) にある可能性があります。APK パッケージを再度アップロードする必要があります。