web-dev-qa-db-ja.com

Gradleの同期がcmakeで失敗する「原因:cmakeの外部ネイティブビルドの実行」

Android Studioで同僚のプロジェクトをビルドしようとしています。これには、プロジェクトに含まれる外部c/cppファイルをビルドするためにCMake SDKが必要です。私が実行している問題は、 SDKマネージャーを介してLLDB、NDK、およびCMake SDKツールをインストールした場合、cmakeパスを参照するモジュールのGradleは同期に失敗します。このプロジェクトをすでにインストールして機能している同僚は、この問題に遭遇していないため、それが疑われます私の環境設定で何かする必要があります。

これまでのところ、CMake SDKのアンインストールと再インストール、リンクされたC++プロジェクトの更新、gradleファイルからのcmakeパスへの参照の削除、およびmoduelの右クリックによる参照の追加-> C++プロジェクトとGradleのリンクを試みましたが、どれもこれらはうまくいった。

GradleでCMakeLists.txtへの参照をコメントアウトすると、同期され、問題がCMakeファイルへの参照に関連していることが示されます。また、CMakeLists.txtファイルでライブラリ参照をコメントアウトして、ファイル内の参照が原因でエラーが発生しているかどうかを確認しましたが、すべてをコメントアウトしても、gradleは同期できません。

これが私のgradleファイルです。

externalNativeBuild {
    cmake {
        path 'src/main/cpp/CMakeLists.txt'
    }
}

Build.gradleで同期を押す(もう一度試す)と、エラーメッセージに単に表示される

SIMPLE: Error configuring

Gradle同期が失敗したという事実を無視してビルドしようとすると、エラーメッセージは次のように表示されます。

Cause: executing external native build for cmake <my_project_path>\src\main\cpp\CMakeLists.txt

編集:my Android Studio NDKパス(Windowsの場合はC:\ Users\username\AppData\Local\Android\Sdk\ndk-bundle)の画像キャプチャへのリンクを追加しました) NDKパスキャプチャ

8
e.cho

Android studio go to:file-> project structure-> sdk location-> Android ndk location-> set path example my Macでのndkの場所は/ Users/username/Library/Android/sdk/ndk-bundleです

1
Ashok Kumar

同じエラーメッセージが表示され、CMakeLists.txtに構文エラーがあることがわかりました

0
shig

要するに-問題はプロジェクトと一緒にインポートされたbuild.gradleファイルにあるのかもしれません。

「build.gradle」行9を編集してみてください。クラスパス「com.Android.tools.build:gradle:3.1.1」で、gradleのバージョン番号を置き換えます(私の場合、「3.1.1」を「3.5.0」に置き換えました)。

詳細-から複製するときに同じ問題が発生しました: https://github.com/farzaa/DracoPortedToAndroid

私は上記を試みました(ndkパスの設定)が、ndk libへのパスが正しいため、それは問題ではありませんでした。したがって、最も可能性の高いエラーの原因は、クローンプロジェクトでインポートされたプロジェクト設定の一部でした。

インポートされたプロジェクトの「Gradle Scripts」(プロジェクトエクスプローラー)を、Android Studio環境で構築された新しいプロジェクトと比較します。新しいプロジェクトは正しいローカル設定になります。

私の場合、私は交換しました:

classpath 'com.Android.tools.build:gradle:3.1.1'

と:

classpath 'com.Android.tools.build:gradle:3.5.0'
0
yair baruch

これは、STLの共有バージョンとリンクする必要があるプロジェクトに共有ライブラリがあるためである可能性があります。以下をbuild.gradleに追加してみてください:

Android {
    defaultConfig {
        externalNativeBuild {
            cmake {
                arguments "-DANDROID_STL=c++_shared"
            }
        }
    }
}
0
donturner