Mục tiêu chính của dự án của tôi là tạo plugin Unity có thể sử dụng API bộ đếm bước của Google Fitness. Nó phải cung cấp một số tính năng như: nhận số bước hàng ngày, nhận tổng số bước, tiết kiệm số tiền trên tài khoản google và cuối cùng là thông báo gửi quan trọng nhất và khó nhất khi số lượng bước đạt đến giá trị được chỉ định.Plugin Android sử dụng API Google Fitness cho Unity3D
Tôi quyết định tạo một plugin android với dịch vụ chạy nền sẽ có thể gửi những thông báo như đã đề cập ở trên, nhưng tôi gặp phải sự cố khi bắt đầu dự án này. Đã xảy ra sự cố khi khởi chạy Dịch vụ của Google, hoạt động hoàn hảo khi tôi sử dụng ứng dụng đó trong ứng dụng Android gốc, nhưng khi tôi đang cố gắng sử dụng nó làm thư viện android trong Unity, nó luôn thất bại.
logcat lỗi:
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
Tôi đã suy nghĩ quan trọng mà cho vấn đề này có thể là bằng cách nào đó cung cấp dữ liệu (appIds, Shas vv) từ được tạo ra trong Google Developers console “google-services.json” tập tin vào Unity, nhưng thư viện .aar được tạo từ studio android chứa những thông tin đó trong tệp res/values / strings như tôi nghĩ.
tôi đã được thử nghiệm nhiều giải pháp có thể xảy ra bao gồm:
xuất khẩu dự án android từ đoàn kết và thêm mô-đun thư viện của tôi để nó
cung cấp thư viện của tôi dưới dạng file .jar và “google-services.json ”Riêng
cung cấp dữ liệu cần thiết trực tiếp trong Unity trong tệp res/values / strings
thêm nó vào dự án đã xuất
Đã kết thúc với cùng lỗi như tôi đã đề cập ở trên.
Tôi đang làm điều gì đó sai, hoặc có thể có một cách tiếp cận hoàn toàn khác với vấn đề này?
Edit:
Android Manifest từ 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>
Dữ liệu bạn cung cấp cho tệp res/values / strings của 'Unity' là gì? và 'biểu hiện android' của bạn trông như thế nào? – Hristo