我配置了facebook和onesignal。
Build failure
Unable to merge android manifests. See the Console for more details.
在控制台中:
Error: Error while saving blame file, build will continue
Error: The prefix "tools" for attribute "tools:overrideLibrary" associated with an element type "uses-sdk" is not bound.
UnityEditor.HostView:OnGUI()
在这个错误之后,我添加了AndroidManifest。xml文件xmlns:tools=”http://schemas.android.com/tools“我创建的APK没有任何错误。但在设备上显示如错误!
09-21 17:36:32.321 25682 25702 V com.facebook.unity.FB: SetUserAgentSuffix(Unity.7.10.0)
09-21 17:36:32.391 25682 25702 E Unity : AndroidJavaException: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/facebook/FacebookActivity;
09-21 17:36:32.391 25682 25702 E Unity : java.lang.NoClassDefFoundError: Failed resolution of: Lcom/facebook/FacebookActivity;
09-21 17:36:32.391 25682 25702 E Unity : at com.facebook.internal.Validate.hasFacebookActivity(Validate.java:216)
09-21 17:36:32.391 25682 25702 E Unity : at com.facebook.FacebookSdk.sdkInitialize(FacebookSdk.java:265)
09-21 17:36:32.391 25682 25702 E Unity : at com.facebook.unity.FB.Init(FB.java:86)
09-21 17:36:32.391 25682 25702 E Unity : at com.unity3d.player.UnityPlayer.nativeRender(Native Method)
09-21 17:36:32.391 25682 25702 E Unity : at com.unity3d.player.UnityPlayer.c(Unknown Source)
09-21 17:36:32.391 25682 25702 E Unity : at com.unity3d.player.UnityPlayer$c$1.handleMessage(Unknown Source)
09-21 17:36:32.391 25682 25702 E Unity : at android.os.Handler.dispatchMessage(Handler.java:98)
09-21 17:36:32.391 25682 25702 E Unity : at android.os.Looper.loop(Looper.java:148)
09-21 17:36:32.391 25682 25702 E Unity : at com.unity3d.player.UnityPlayer$c.run(Unknown Source)
09-21 17:36:32.391 25682 25702 E Unity : Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.FacebookActivity" on path: DexPathList[[zip file "/data/app/.../base.apk"],
如果我删除OneSingal SDK,所有软件都可以正常工作!
AndroidManifest。xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" package="com.unity3d.player" android:installLocation="preferExternal" android:versionCode="1" android:versionName="1.0">
<supports-screens android:smallScreens="true" android:normalScreens="true" android:largeScreens="true" android:xlargeScreens="true" android:anyDensity="true" />
<application android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:icon="@drawable/app_icon" android:label="@string/app_name" android:debuggable="true">
<activity android:name="com.unity3d.player.UnityPlayerActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<meta-data android:name="unityplayer.UnityActivity" android:value="true" />
</activity>
<activity android:name="com.facebook.unity.FBUnityLoginActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
<activity android:name="com.facebook.unity.FBUnityDialogsActivity" android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
<activity android:name="com.facebook.unity.FBUnityAppLinkActivity" android:exported="true" />
<activity android:name="com.facebook.unity.FBUnityDeepLinkingActivity" android:exported="true" />
<activity android:name="com.facebook.unity.FBUnityGameRequestActivity" />
<activity android:name="com.facebook.unity.FBUnityCreateGameGroupActivity" />
<activity android:name="com.facebook.unity.FBUnityJoinGameGroupActivity" />
<activity android:name="com.facebook.unity.AppInviteDialogActivity" />
<meta-data android:name="com.facebook.sdk.ApplicationId" android:value="fb149293168895610" />
<provider android:name="com.facebook.FacebookContentProvider" android:authorities="com.facebook.app.FacebookContentProvider149293168895610" android:exported="true" />
</application>
</manifest>
<!--
WARNING: Do NOT Modify! Changes will be overwritten by the OneSignal plugin.
Make your changes to Assets/Plugins/Android/AndroidManifest.xml instead.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.onesignal.onesignalsdk"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="9" />
<permission android:name="com.challenges_inc.realmultiplayerracing.permission.C2D_MESSAGE" android:protectionLevel="signature" />
<uses-permission android:name="com.challenges_inc.realmultiplayerracing.permission.C2D_MESSAGE" />
<application>
<receiver
android:name="com.onesignal.GcmBroadcastReceiver"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.challenges_inc.realmultiplayerracing" />
</intent-filter>
</receiver>
</application>
</manifest>
void Start() {
FacebookInit ();
}
private void FacebookInit() {
if (!FB.IsInitialized) {
FB.Init (InitCallback, OnHideUnity);
} else {
InitCallback ();
}
}
private void InitCallback () {
if (FB.IsInitialized) {
Debug.Log("Initialized the Facebook SDK");
FB.ActivateApp ();
if (FB.IsLoggedIn) {
OneSignalHandler();
} else {
Debug.Log("FB.IsLoggedIn is false");
}
} else {
Debug.Log("Failed to Initialize the Facebook SDK");
}
}
private void OnHideUnity (bool isGameShown) {
//...
}
public void OnClickConnectToFacebook() {
FB.LogInWithReadPermissions(new List<string>(){"public_profile", "email", "user_friends"}, AuthCallback);
}
private void AuthCallback (ILoginResult result) {
if (FB.IsLoggedIn) {
OneSignalHandler();
} else {
Debug.Log("FB.IsLoggedIn is false");
}
}
void OneSignalHandler() {
OneSignal.SetLogLevel(OneSignal.LOG_LEVEL.INFO, OneSignal.LOG_LEVEL.INFO);
string user_id = Facebook.Unity.AccessToken.CurrentAccessToken.UserId;
Debug.Log ("UserID: " + user_id);
OneSignal.StartInit("ONE-SIGNAL-APP-ID")
.EndInit();
OneSignal.SendTag ("user_id", user_id);
OneSignal.inFocusDisplayType = OneSignal.OSInFocusDisplayOption.Notification;
}
Unity3D版本:
操作系统:
Facebook SDK:
2.4.0
Android min SDK:
16
Android target SDK:
25