🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

Q&A

解決済

1回答

2729閲覧

UnityからGoogleFitのAPIを呼び出すと、NoClassDefFoundErrorが出て動作しない

Hapoo

総合スコア0

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Google

Googleは、アメリカ合衆国に位置する、インターネット関連のサービスや製品を提供している企業です。検索エンジンからアプリケーションの提供まで、多岐にわたるサービスを提供しています。

0グッド

0クリップ

投稿2021/02/12 14:37

編集2021/02/12 15:23

前提・実現したいこと

UnityからGoogleFitのAPIを呼び出したいです。
AndroidStudioでプロジェクトを作成、GoogleFitを扱うコードを記述しAARプラグインとしてビルド、UnityのPlugins/Androidフォルダ以下に置きました。

Unityでプロジェクトを作成、AndroidJavaObjectで該当クラスのインスタンスを作成し呼び出すコードを記述し、実機に転送して実行したところ、Logcatで以下のようなエラーが表示されました。

発生している問題・エラーメッセージ

Caused by: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/fitness/FitnessOptions; (省略) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.fitness.FitnessOptions" on path: DexPathList[[zip file "/data/app/com.DefaultCompany.GoogleFitUnityTest-2/base.apk"],nativeLibraryDirectories=[/data/app/com.DefaultCompany.GoogleFitUnityTest-2/lib/arm, /data/app/com.DefaultCompany.GoogleFitUnityTest-2/base.apk!/lib/armeabi-v7a, /vendor/lib, /system/lib]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) (省略) Suppressed: java.lang.ClassNotFoundException: com.google.android.gms.fitness.FitnessOptions at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 14 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available

該当のソースコード

Java

1public class GoogleFitTest { 2 public GoogleFitTest() { 3 // おそらくここの呼び出しでエラーを起こしている 4 FitnessOptions fitnessOptions = FitnessOptions.builder() 5 .addDataType(DataType.TYPE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ) 6 .addDataType(DataType.AGGREGATE_STEP_COUNT_DELTA, FitnessOptions.ACCESS_READ) 7 .build(); 8 } 9}

試したこと

Google-Play-Services-Fitnessが実行時に解決出来ていないのだと思い、Google Maven epositoryからplay-services-fitness-19.0.0.aarをダウンロードし、UnityのPlugins/Android 以下に配置してみましたが改善しませんでした。

Plugins/AndroidではなくPlugins/Android/libsに配置も試してみましたが改善しませんでした。

play-services-fitness-19.0.0.aarのUnity設定で「Load on startup」にチェックを入れてみましたが改善しませんでした。

プラグイン側のbuild.gradleに記述されている

dependencies { implementation 'com.google.android.gms:play-services-fitness:19.0.0' }

implementationapicompileに変えてみましたが改善しませんでした。

プラグインではなくAPKとしてビルドし実機に転送した時は問題ありませんでした。

補足情報(FW/ツールのバージョンなど)

Unity2019.4.17f1
AndroidStudo3.6.2
テストに使用した実機はNexus5X(Android6.0.1)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

解決しました。

UnityのPlayerSettings内にある「Custom Main Gradle Template」にチェックを入れます。
mainTemplate.gradleファイルが生成されるので開き、dependencies内を以下のように変更します。

dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) // 追加部分:GoogleFit用のimpletement設定、プラグイン側と合わせる必要がある implementation 'com.google.android.gms:play-services-fitness:19.0.0' implementation 'com.google.android.gms:play-services-auth:19.0.0' **DEPS**}

これでエラーが出なくなりました。

投稿2021/02/13 14:07

Hapoo

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問