NDK と gradle CMake を使用する Android プロジェクトに Crashlytics サポートを追加しようとしています。これは、共有プロジェクトにシンボルが必要であることを意味します。したがって、リリース ビルド用のシンボルを作成する場合は、次のように呼び出します。gradlew crashlyticsUploadSymbolsRelease
https://docs.fabric.io/android/crashlytics/ndk.htmlの公式ドキュメントによると、シンボルの生成とアップロードのプロセスは、標準のプロジェクト構造を想定しています: デバッグ バイナリの src/main/obj、および src/main/libs ndk-build によって生成されたリリース バイナリ用。
gradle ファイルでは、これは次のような新しいブロックを意味します。
crashlytics {
enableNdk true
androidNdkOut 'src/main/obj'
androidNdkLibsOut 'src/main/libs'
}
私はgradle CMake統合を使用してネイティブライブラリを構築しているため、もちろんデフォルトパスは機能していません。リリース モードのネイティブ ライブラリはディレクトリに組み込まれ、build/intermediates/cmake/release/obj
デバッグ モードではbuild/intermediates/cmake/debug/obj
ディレクトリに移動します。
試行錯誤の結果、リリース ビルドを機能させるには、以下に示すように、リリース モードのネイティブ ライブラリへのパスを両方の行に配置する必要があると考えました。
crashlytics {
enableNdk true
androidNdkOut 'build/intermediates/cmake/release/obj'
androidNdkLibsOut 'build/intermediates/cmake/release/obj'
}
少なくとも私のシナリオでは同じディレクトリを指しているため、変数androidNdkOut
と変数の違いが本当にわかりません。androidNdkLibsOut
幸いなことに、リリース バイナリを操作するために Crashlytics が必要なだけなので、これは問題ではありません。
だから私の質問は:
androidNdkOut
1)との違いは何androidNdkLibsOut
ですか? デバッグ バイナリへのパスを一方に配置し、バイナリをリリースするパスを他方に配置できないのはなぜですか? 説明に加えて、具体的な例がいいでしょう。
2) いつかデバッグ ライブラリのシンボルも含めたい場合、gradle ファイルをどのように変更すればよいですか? コマンド
gradlew crashlyticsUploadSymbolsRelease
も機能するというgradlew crashlyticsUploadSymbolsDebug
ことですか?
これについては、Crashlytics NDK シンボルと Gradle タスクおよびCrashlytics NDK マルチ androidNdkOut パス サポートのスレッドで議論されていますが、実際にはこれら 2 つの質問には答えていません。