example - Complemento de Android con Google Fitness API para Unity3D
healthkit android (1)
Después de probar un poco más en diferentes dispositivos, he descubierto cómo enfrentarme a este problema. En ambos dispositivos de prueba principales, logcat muestra este error cada vez que se instala una aplicación. Incluidos directamente construidos desde Unity o Android Studio y desde Google Play Store. Este error parece no tener ninguna relación con mi problema en absoluto.
El problema fue que tuve que extender UnityPlayerActivity en mi complemento para permitir que aparezca la ventana emergente de inicio de sesión de Google.
El objetivo principal de mi proyecto es crear un complemento de Unity que pueda usar la API del contador de pasos de Google Fitness. Tiene que proporcionar varias características como: contar los pasos diarios, obtener pasos totales, guardar el importe de los pasos en la cuenta de Google y, finalmente, las notificaciones de envío más importantes y más difíciles cuando el importe de los pasos ha alcanzado un valor específico.
Decidí crear un complemento para Android con el servicio de fondo en ejecución que pueda enviar esas notificaciones como se mencionó anteriormente, pero me encontré con un problema desde el principio de este proyecto. Hay un problema con la inicialización de los Servicios de Google, que funciona perfectamente cuando lo estoy usando en la aplicación nativa de Android, pero cuando intento usarlo como biblioteca de Android en Unity, siempre falla.
error de 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
Estaba pensando que la clave de este problema puede ser de alguna manera proporcionar datos (aplicaciones, SHA, etc.) generados en el archivo "google-services.json" de la consola de Google Developers en Unity, pero la biblioteca .aar que se generó desde el estudio de Android contiene esas informaciones en res / values / strings file como creo que debería.
Estaba probando muchas soluciones probables que incluyen:
exportar proyecto Android desde la unidad y agregar mi módulo de biblioteca a ella
proporcionando mi biblioteca como archivo .jar y "google-services.json" por separado
proporcionando los datos necesarios directamente en Unity en res / values / strings file
agregarlo al proyecto exportado
Terminó con el mismo error que mencioné anteriormente.
¿Estoy haciendo algo mal, o tal vez hay un enfoque completamente diferente a este problema?
Editar:
Manifiesto de Android de Unity (Plugins / 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>