我的項目的主要目標是創建一個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>
你提供給Unity的res/values/strings文件的數據是什麼?你的'android manifest'看起來像什麼? – Hristo