2017-06-05 140 views
7

我的項目的主要目標是創建一個Unity插件,以便能夠使用Google Fitness步數計數器API。它必須提供以下幾項功能:獲取每日步數,獲取總步驟,在Google帳戶中保存步驟金額,並在步驟金額達到指定值時最終發送最重要和最困難的發送通知。使用適用於Unity3D的Google Fitness API的Android插件

我決定做一個運行後臺服務的android插件,它將能夠發送上述通知,但是我在這個項目的一開始就遇到了一個問題。 Google服務初始化存在一個問題,當我在原生android應用程序中使用它時,它可以很好地工作,但是當我嘗試將它用作Unity中的android庫時,它總是失敗。

logcat的錯誤:

06-05 13:49:27.991 15144-15144/? E/GMPM: GoogleService failed to initialize, status: 10, Missing an expected resource: 'R.string.google_app_id' for initializing Google services. Possible causes are missing google-services.json or com.google.gms.google-services gradle plugin. 
06-05 13:49:27.991 15144-15144/? E/GMPM: Scheduler not set. Not logging error/warn. 
06-05 13:49:28.005 15144-15158/? E/GMPM: Uploading is not possible. App measurement disabled 

我在想,關鍵這個問題可能以某種方式提供從谷歌開發者控制檯生成的數據(appIds,SHA的等),「谷歌services.json」文件到Unity,但.aar從android studio生成的庫包含res/values/strings文件中的信息,我認爲它應該。

我測試許多可能的解決方案,包括:

  • 從統一出口的Android項目,並添加我的庫模塊將其

  • 提供我的庫作爲.jar文件和「谷歌services.json 」單獨

  • 直接在res /值/串提供在Unity必要的數據文件

  • 其添加到導出的項目

結束了與相同的錯誤我如上所述。

我做錯了什麼,或者可能有完全不同的方法來解決這個問題?

編輯:

Android清單從Unity(插件/ Android設備):

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="<UNITY APP PACKAGE NAME>" android:versionName="1.0" android:versionCode="1" android:installLocation="preferExternal"> 
    <supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" /> 

    <uses-permission android:name="android.permission.INTERNET" /> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/> 


    <application android:theme="@style/UnityThemeSelector" android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="true" android:isGame="true" android:banner="@drawable/app_banner"> 

    <activity android:name="<PLUGIN PACKAGE NAME + CLASS NAME>" android:label="@string/app_name" android:screenOrientation="fullSensor" android:launchMode="singleTask" android:configChanges="mcc|mnc|locale|touchscreen|keyboard|keyboardHidden|navigation|orientation|screenLayout|uiMode|screenSize|smallestScreenSize|fontScale"> 

     <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
     <category android:name="android.intent.category.LEANBACK_LAUNCHER" /> 
     </intent-filter> 

     <meta-data android:name="unityplayer.UnityActivity" android:value="true" /> 
    </activity> 

    </application> 

    <uses-sdk android:minSdkVersion="19" android:targetSdkVersion="23" /> 
    <uses-feature android:glEsVersion="0x00020000" /> 

    <uses-feature android:name="android.hardware.touchscreen" android:required="false" /> 
    <uses-feature android:name="android.hardware.touchscreen.multitouch" android:required="false" /> 
    <uses-feature android:name="android.hardware.touchscreen.multitouch.distinct" android:required="false" /> 
</manifest> 
+0

你提供給Unity的res/values/strings文件的數據是什麼?你的'android manifest'看起來像什麼? – Hristo

回答

1

上我發現怎麼會遇到這樣的問題,不同的設備多了幾分經過測試。在我的兩個主要測試設備上,每次安裝任何應用程序時,logcat都會顯示此錯誤。包括直接從Unity或Android Studio和Google Play商店構建的產品。這個錯誤似乎與我的問題根本沒有關係。

問題是我不得不在我的插件中擴展UnityPlayerActivity以允許顯示Google登錄窗口彈出窗口。

+0

我也有這個問題。你解決了這個問題嗎? – lutfianasari

+0

我設法讓Google登錄窗口出現,並且我得到了「連接」回調。我正在使用本教程:https://code.tutsplus.com/tutorials/google-fit-for-android-reading-sensor-data--cms-25723 –