使用LibGdx与Google Play服务/ BaseGameUtils(Gradle)的错误

时间:2014-05-22 21:04:46

标签: java android gradle libgdx

我正在使用Eclipse,LibGdx 1.0.1,最新的Google Play Lib和来自https://github.com/playgameservices/android-samples的最新BaseGameUtils

(Gradle项目)

我的BaseGameUtils有一些错误

GameHelper.java

// Api options to use when adding each API, null for none
GoogleApiClient.ApiOptions mGamesApiOptions = null; //error with this line
GoogleApiClient.ApiOptions mPlusApiOptions = null; //error with this line
GoogleApiClient.ApiOptions mAppStateApiOptions = null; //error with this line

/**
 * Sets the options to pass when setting up the Games API. Call before
 * setup().
 */
public void setGamesApiOptions(GoogleApiClient.ApiOptions options) { //error with this line
    doApiOptionsPreCheck();
    mGamesApiOptions = options; //error with this line
}

/**
 * Sets the options to pass when setting up the AppState API. Call before
 * setup().
 */
public void setAppStateApiOptions(GoogleApiClient.ApiOptions options) { //error with this line
    doApiOptionsPreCheck();
    mAppStateApiOptions = options; //error with this line
}

/**
 * Sets the options to pass when setting up the Plus API. Call before
 * setup().
 */
public void setPlusApiOptions(GoogleApiClient.ApiOptions options) { //error with this line
    doApiOptionsPreCheck();
    mPlusApiOptions = options; //error with this line
}

/**
 * Creates a GoogleApiClient.Builder for use with @link{#setup}. Normally,
 * you do not have to do this; use this method only if you need to make
 * nonstandard setup (e.g. adding extra scopes for other APIs) on the
 * GoogleApiClient.Builder before calling @link{#setup}.
 */
public GoogleApiClient.Builder createApiClientBuilder() {
    if (mSetupDone) {
        String error = "GameHelper: you called GameHelper.createApiClientBuilder() after "
                + "calling setup. You can only get a client builder BEFORE performing setup.";
        logError(error);
        throw new IllegalStateException(error);
    }

    GoogleApiClient.Builder builder = new GoogleApiClient.Builder(
            mActivity, this, this);

    if (0 != (mRequestedClients & CLIENT_GAMES)) {
        builder.addApi(Games.API, mGamesApiOptions); //error with this line
        builder.addScope(Games.SCOPE_GAMES);
    }

    if (0 != (mRequestedClients & CLIENT_PLUS)) {
        builder.addApi(Plus.API, mPlusApiOptions); //error with this line
        builder.addScope(Plus.SCOPE_PLUS_LOGIN);
    }

    if (0 != (mRequestedClients & CLIENT_APPSTATE)) {
        builder.addApi(AppStateManager.API, mAppStateApiOptions); //error with this line
        builder.addScope(AppStateManager.SCOPE_APP_STATE);
    }

    mGoogleApiClientBuilder = builder;
    return builder;
}

所以我在行上添加//error with this line,你猜错了。

就像我之前提到的,我相信我拥有最新的库,并且我确信我的项目是正确链接的。我在AndroidManifest.xml文件中也有必要的代码行。

3 个答案:

答案 0 :(得分:1)

Google Play游戏服务4.4上的一些API更改尚未反映在Android示例项目(https://github.com/playgameservices/android-samples/tree/master/BasicSamples/libraries/BaseGameUtils)上或由Google记录(据我所知)。

查看关于G + Android Developers条目的评论:

https://plus.google.com/+AndroidDevelopers/posts/8957tqzymuM

您可以使用社区修改的GameHelper,等待Google更新示例项目或反向GPGS 4.3。

答案 1 :(得分:1)

我使用了来自https://github.com/playgameservices/android-samples/tree/master/BasicSamples/libraries/BaseGameUtils/src/main/java/com/google/example/games/basegameutils的来源,但我的应用程序因以下错误而崩溃:

java.lang.NullPointerException: Null options are not permitted for this Api at
.. com.google.example.games.basegameutils.GameHelper.createApiClientBuilder(GameHelper.java:286    ) at 
com.google.example.games.basegameutils.GameHelper.setup(GameHelper.java:319) at
com.google.example.games.basegameutils.BaseGameActivity.onCreate(BaseGameActivity.java:105).

我更改了BaseGameActivity onCreate方法:

@Override
protected void onCreate(Bundle b) {
    super.onCreate(b);
    if (mHelper == null) {
        getGameHelper();
    }
    mHelper.setPlusApiOptions(new Plus.PlusOptions.Builder().build());
    mHelper.setup(this);
}

并且错误消失了。

答案 2 :(得分:0)

请使用此处提供的代码:https://gist.github.com/EmmanuelVinas/ef09a35bcc805ba6deb3

只需从GameHelper.java的导入到其末尾的所有内容,然后粘贴该要点的内容作为替代。

它有效