【发布时间】:2016-10-09 03:59:38
【问题描述】:
我正在尝试在eclipse cocos2d-x v2游戏中集成Branch SDK,
在库中添加了 Branch-2.4.5.jar,目标设置为棒棒糖
遵循集成指南https://dev.branch.io/getting-started/sdk-integration-guide/guide/android/
-
在 Branch.getAutoInstance(this) 上崩溃,所以从这里尝试了选项 1-Android: Branch.io tutorial: Branch.getAutoInstance(this);
原因:java.lang.ClassCastException:com.casualgames.Game.Game 无法转换为 android.app.Application E/AndroidRuntime(22756):在 io.branch.referral.Branch.getAutoInstance(Branch.java:565) E/AndroidRuntime(22756):在 com.casualgames.Game.Game.onStart(Game.java:493) E/AndroidRuntime(22756):在 android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1194) E/AndroidRuntime(22756):在 android.app.Activity.performStart(Activity.java:5258) E/AndroidRuntime(22756):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2171)
长时间尝试各种方法后,错误仍然存在。
下面是清单
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.casualgames.Game"
android:installLocation="auto"
android:versionCode="82"
android:versionName="6.3.12" >
<uses-sdk android:minSdkVersion="9" />
<uses-feature android:glEsVersion="0x00020000" />
<application
android:icon="@drawable/icon"
android:label="@string/app_name"
android:name="io.branch.referral.BranchApp">
<meta-data
android:name="io.branch.sdk.TestMode"
android:value="true" />
<meta-data
android:name="io.branch.sdk.BranchKey"
android:value="key_live_kmxxxxxxxx_my_key_value" />
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
<meta-data
android:name="com.google.android.gms.games.APP_ID"
android:value="@string/games_app_id" />
<activity
android:name=".Game"
android:configChanges="orientation"
android:label="@string/app_name"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<data android:scheme="schemename" android:host="open" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />
<receiver
android:name="io.branch.referral.InstallListener"
android:exported="true" >
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
</application>
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:xlargeScreens="true" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.USE_CREDENTIALS" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.VIBRATE" />
</manifest>
下面是我的类文件
package com.casualgames.Game;
import io.branch.referral.Branch;
import io.branch.referral.BranchError;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import android.content.Intent;
import org.cocos2dx.lib.Cocos2dxActivity;
import org.cocos2dx.lib.Cocos2dxGLSurfaceView;
import org.json.JSONObject;
import android.annotation.SuppressLint;
import android.app.AlarmManager;
import android.app.AlertDialog;
import android.app.PendingIntent;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.net.Uri;
import android.os.Bundle;
import android.util.Base64;
import android.util.Log;
import android.widget.RelativeLayout;
import com.nidogames.Game.basegameutils.BaseGameActivity;
import android.provider.Settings;
import android.provider.Settings.Secure;
public class Game extends BaseGameActivity{
private static Context mContext;
private static final String TAG = “Game”;
private RelativeLayout mAdsLayout;
public static native void resumeGame();
public static native void quitGame();
private Cocos2dxGLSurfaceView glSurfaceView;
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
mContext = this;
String versionName = pinfo.versionName;
Branch.getAutoInstance(this.getApplication());
Log.i(TAG, "Finished oncreate");
}
public Cocos2dxGLSurfaceView onCreateView() {
glSurfaceView = new Cocos2dxGLSurfaceView(this);
glSurfaceView.setEGLConfigChooser(5, 6, 5, 0, 16, 8);
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB)
{
this.hideSystemUI();
}
return glSurfaceView;
}
@Override
protected void onPause() {
super.onPause();
}
@Override
protected void onResume(){
super.onResume();
}
@Override
protected void onStart() {
super.onStart();
Branch branch = Branch.getAutoInstance(this);
branch.initSession(new Branch.BranchReferralInitListener(){
@Override
public void onInitFinished(JSONObject referringParams, BranchError error) {
if (error == null) {
} else {
Log.i("MyApp", error.getMessage());
}
}
}, this.getIntent().getData(), this);
}
@Override
protected void onStop() {
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
@Override
public void onNewIntent(Intent intent) {
this.setIntent(intent);
}
}
【问题讨论】:
-
来自 Branch 的 Alex here:我不知道 Eclipse 上的 Branch 有任何具体问题。您是否在控制台中收到任何特定的错误消息?还可以尝试打开debug mode,因为这会触发一些可能有用的额外日志记录。
-
嗨@AlexBauer,感谢您的回复。我已编辑问题以包括崩溃日志。它发生在 OnCreate for Branch.getAutoInstance 或 OnStart 中删除 Branch.getAutoInstance 在 OnCreate
标签: android eclipse cocos2d-x branch.io cocos2d-x-2.x