次の FAQ リストを確認し、特定の質問をクリックして回答を表示します。
Apsara Stack にアクセスすると、構成をダウンロードして mPaaS にアクセスした後、コンパイルが拒否され、NullPointerException が発生します
実行時に 608 エラーまたは libsgmain でのネイティブ エラーを修正する方法
コンパイル時にネットワーク接続がない
ファイルをコンパイルしているときにネットワークがない場合、コンパイルが失敗する可能性があります。次の手順に従って、コンパイル環境のネットワークが接続されていることを確認します。
インターネットに接続されていることを確認します。
ブラウザのプロキシ設定やサードパーティのネットワークプロキシを含め、ネットワークプロキシが接続されていないことを確認します。
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.txt4 番目の手順からエクスポートされたログ ファイルを確認します。最新のログに次のレコードが表示されます。これは、追加された依存関係が存在しないことを意味します。
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 リンクにアクセスしてログインし、Maven ライブラリを確認します。たとえば、http リンクは、前の手順にリストされているログの 3 行目にすることができます。
説明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 "既知のユーザーを使用"
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/'}
}
}Apsara Stack にアクセスすると、構成をダウンロードして mPaaS にアクセスした後、コンパイルが拒否され、NullPointerException が発生します
一般に、これは構成ファイル、つまり conf ファイルの問題です。フィールドを確認する必要があります。13 のフィールドのいずれかが欠落しているかどうかを確認します。パブリック クラウドからダウンロードしたファイルと比較し、フィールド名が正しいことを確認します。
アプリケーションをデバッグする方法
開発中は、コードをデバッグする必要があります。このトピックでは、2 つのデバッグ方法について説明します。
デバッグ モードでアプリケーションを起動する
アプリケーションを実行してから、デバッグを開始する
デバッグ モードでアプリケーションを起動する
ユースケース:
デバッグ アプリケーションの起動時に使用したい初期コード。たとえば、アプリケーションの初期化中にコードを初期化します。
手順:
コマンド
adb shell am start -W -S -D アプリケーション パック名/アプリケーションによって起動される最初のページのタイプ名を実行します。たとえば、mPaaS デモのパック名はcom.mpaas.demoで、アプリケーションによって起動される最初のページのタイプ名はcom.alipay.mobile.quinox.LauncherActivityです。コマンドラインadb shell am start -W -S -D com.mpaas.demo/com.alipay.mobile.quinox.LauncherActivityを使用して、デバッグ モードでアプリケーションを起動できます。起動される最初のタイプ名については、次の図を参照してください。
コマンドが実行されると、携帯電話に次のダイアログ ボックスが表示されます。

デバッグするコード行にブレークポイントを設定します。次に、ブレークポイントをアプリケーションが存在するプロセスにアタッチします。次の図を参照してください。

アプリケーションを実行してから、デバッグを開始する
ユースケース:
イベントをトリガーした後にデバッグを開始します。たとえば、ボタンをクリックしたとき、またはページにリダイレクトしたときにのみデバッグする必要があります。
手順:
アプリケーションを実行した後、アタッチされた
ボタンをクリックします。または、上記のコマンドを実行した後、アタッチされたボタンをクリックしてから、デバッグを開始します。
mPaaS ポータルおよびバンドル プロジェクトで MultiDex を使用する場合の注意事項
ポータルとバンドルは、MultiDex に介入することは推奨されません。単一のポータル プロジェクトにいて、multiDexEnabled true を使用する必要がある場合を除きます。バンドルが大きすぎる場合は、バンドルを分割する方法でのみ続行できます。バンドルで multidex サポートをアクティブにしないでください。
Gradle キャッシュをクリアする方法
Gradle プラグインの構成ページを開き、キャッシュのクリア ボタンをクリックして、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.3 の API をサポートしています。
アクセス方法の変更
Android Gradle Plugin の公式プラグインをインポートする代わりに、次の依存関係を追加することでプラグインをインポートするだけで済みます。依存関係の伝達により、プラグインは自動的にインポートされます。
dependencies { classpath 'com.alipay.android:android-gradle-plugin:3.5.18' }Gradle Wrapper のバージョンを 5.6 以降のバージョンにスペックアップする必要があります。バージョン 6.3 を使用することをお勧めします。
使用方法の変更
apply plugin:'com.android.applicationを使用する必要はありません。ポータル プロジェクトにいる場合は、
apply plugin:'com.alipay.portal'を使用するだけで済みます。バンドル プロジェクトにいる場合は、
apply plugin:'com.android.application'を削除し、apply plugin:'com.alipay.bundle'を使用するだけで済みます。ライブラリ プロジェクトにいる場合は、
apply plugin:'com.alipay.library'を削除し、apply plugin:'com.android.libraryを使用するだけで済みます。
Android Studio 3.5 以降の最新の安定バージョンを使用している場合は、gradle.properties に
android.buildOnlyTargetAbi=falseを追加する必要があります。当社のワイヤレス セキュリティ コンポーネントは、現時点では V2 署名をサポートしていません。したがって、Android Studio デバッグを使用して APK をインストールする必要がある場合は、V2 署名を無効にする必要があります。コマンドラインを使用して作成し、minSdkVersion が 24 以上の場合も、V2 署名を無効にする必要があります。V2 署名を無効にする方法は次のとおりです。
v2SigningEnabled false
キャッシュをクリアした後、ミニ プログラムと HTML5 が機能するかどうかを確認する必要があります。
Huawei 10 システムの入力ファイル ラベルからカメラを起動できません
Huawei 10 システム URI の実装と標準の Android の実装にはいくつかの違いがあります。したがって、Huawei 10 でカメラを起動できないなどの問題が発生する可能性があります。この問題を解決するには、次の手順を実行する必要があります。
1. ベースラインをスペックアップする
32 ベースラインを使用している場合は、ベースラインを 10.1.32.18 以降にスペックアップする必要があります。
60 ベースラインを使用している場合は、ベースラインを 10.1.60.9 以降にスペックアップする必要があります。
68 ベースラインを使用している場合は、ベースラインを 10.1.68-beta.3 以降にスペックアップする必要があります。
2. FileProvider を構成する
現在の 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 サンプル コードです。アプリケーションに基づいて自分で構成する必要があります。また、値を com.mpaas.demo.nebula.provider として構成することはできません。これは、他の mPaaS アプリケーションと競合します。
3. H5NebulaFileProvider を実装する
新しい Java クラスを作成し、H5NebulaFileProvider と 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 を登録します。1 回登録すると、グローバルに有効になります。
H5Utils.setProvider(H5NebulaFileProvider.class.getName(), new H5NebulaFileProviderImpl());
ライブラリで mPaaS に依存して使用するにはどうすればよいですか?
mPaaS を使用している間、モジュールを再利用する必要がある場合があります。再利用は、モジュールを依存関係として追加することで実装されます。このセクションでは、スキャン モジュールを再利用する例を使用して、この方法を説明します。
前提条件
プロジェクトは、ネイティブ AAR モードで mPaaS にアクセスされています。
手順
プロジェクトに Android ライブラリ タイプのスキャン モジュールを作成します。

新しく作成したスキャン モジュールの 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 プラグインでスキャン モジュールにスキャン コンポーネントをインストールします。ディレクトリは次のとおりです。mPaaS > ネイティブ AAR モード > コンポーネントの構成/更新 > 構成の開始。インストール後、スキャン コンポーネントは自動的にロードされます。
アプリ メイン プロジェクトを構成します。
plugins { id 'com.android.application' ...... // baseline.config (baseline) は、app モジュールの build.gradle ファイルに追加する必要があります。 id 'com.alipay.apollo.baseline.config' }モジュールを呼び出します。
使用されている場所にスキャン モジュールをインポートします。
dependencies { api platform("com.mpaas.android:$mpaas_artifact:$mpaas_baseline") .... api project(':scan')//スキャン モジュール }
実行時に 608 エラーまたは libsgmain でのネイティブ エラーを修正する方法
実行時に例外が発生した場合、Android Studio 実行時ログでキーワード
SecExcetpionを検索し、608 エラー コードまたは libsgmain のネイティブ エラーがあることがわかった場合は、以下の手順に従ってトラブルシューティングできます。APK を Android Studio に直接ドラッグ アンド ドロップし、Androidmenifest ファイルの targetSdkVersion が 26 ~ 28 のバージョンであるかどうかを確認します。

res/drawable/yw_1222.jpgファイルが存在するかどうかを確認します。構成ファイルで Base64 を確認します。
Gradle プラグイン
baseline.updateまたはbaseline.configが適用されているかどうかを確認します。
META-INF に 3 つのファイル、CERT.SF、MANIFEST.MF、および CERT.RSA があるかどうかを確認します。
app/build.gradleでv1SignEnabledを有効にします。プロジェクト ルート ディレクトリの
build.gradleにpply plugin: 'com.alipay.apollo.optimize'があるかどうか。
上記の確認手順を実行し、結果が正しいことを確認した後、コンソールにアップロードされた署名付き APK パッケージに問題があることを意味します。署名が正しくない場合は、APK パッケージを再アップロードする必要があります。