0

我正在尝试在我的Android 版Adob​​e Air游戏中启用Google Play 游戏。有 2 个完整的应用程序和一个演示程序。但看起来这两个应用程序都忽略了 SignIn/SubmitScore/ReportAchievement 代码。

我正在使用这个 ANE,但也尝试过这个,它是原始的前叉。因为所有的结果都是一样的。代码“忽略”,没有任何反应。

我的项目设置:

  • 所有项目都在 FlashDevelop 中完成、编译和打包。平台为 Air Mobile 14.0,SDK 为 Adob​​e Air 16.0。我对 Android 包使用自己的 .p12 证书,每个 App 版本一个。
  • 我在 FlashDevelop 上包含 ANE,就像我包含 Game Center ANE 一样,用于同一个 APP。游戏中心一号正在工作,所以我认为这个也应该没问题。
  • 我已将我的 com.google.android.gms.games.APP_ID 以及 ANE 所需的添加添加到 xml。

在我的代码中我做了(没有任何反应,没有调用回调,没有触发信号,没有登录弹出屏幕,但显示了我的“跟踪”通知,因此到达了代码):

Games.initialize();
addListeners(); //Adding SignIn and SignOut callbacks

Games.promptUserToSignInOnStartup(true);
Games.start();
NotificationSystem.notifyLoading("Connecting to Google Play Games Service");

在 Google 的开发者控制台上:

  • 这两个应用程序都发布了 Alpha/Beta 测试,还没有生产版本。
  • 我已经设置了 Play 游戏服务,它是“准备测试”。
  • 这两个应用程序都已链接到它并获得授权。我验证了 .p12 的 OAuth2.0 SHA1 指纹并且它们匹配。

这是我的 APK 的 AndroidManifest.xml,因为我无法想象问题出在代码端或 Google 的控制台端。我认为打包时它应该在 ANE 配置的某个地方。所以它可能在这里:

<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:installLocation="auto" package="air.mygame">
<application android:hardwareAccelerated="false" android:icon="@drawable/icon" android:label="@string/app_name">
    <activity android:configChanges="keyboardHidden|orientation|screenSize" android:label="@string/app_name" android:launchMode="singleTask" android:name=".AppEntry" android:screenOrientation="user" android:theme="@style/Theme.NoShadow" android:windowSoftInputMode="adjustResize|stateHidden">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
        <meta-data android:name="namespaceVersion" android:value="14.0"/>
        <meta-data android:name="aspectRatio" android:value="portrait"/>
        <meta-data android:name="autoOrients" android:value="true"/>
        <meta-data android:name="fullScreen" android:value="true"/>
        <meta-data android:name="uniqueappversionid" android:value="251bf45a-b5b6-49ae-bb1a-4337f47f8f34"/>
        <meta-data android:name="initialcontent" android:value="mygame.swf"/>
        <meta-data android:name="containsVideo" android:value="false"/>
    </activity>
</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.DISABLE_KEYGUARD"/>
<meta-data android:name="com.google.android.gms.games.APP_ID" android:value="MY_APP_ID_ON_GOOGLE_PLAY_GAMES"/>
<meta-data android:name="com.google.android.gms.version" android:value="4242000"/>
<activity android:name="com.google.api.games.SignInActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
<activity android:name="com.google.api.games.StubActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"/>
</manifest>
4

1 回答 1

1

好的!我发现了错误,它确实在 AndroidManifest.xml 中。

对于其他为此苦苦挣扎的人,问题是在使用 Adob​​e Air 时,我们不直接编辑 AndroidManifest.xml 文件,而是使用 manifestAdditions 标签编辑 application.xml。并且所需的添加物去了错误的地方。

我的 application.xml 就像:

<android>
   <manifestAdditions>
      <![CDATA[<manifest android:installLocation="auto">
         <uses-permission android:name="android.permission.INTERNET" />
         <uses-permission android:name="android.permission.WAKE_LOCK" />
         <uses-sdk android:minSdkVersion="9" />
         <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
         <!-- GooglePlay Games Services -->
         <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="\ MY_GOOGLE_PLAY_GAMES_APP_ID" />
         <meta-data android:name="com.google.android.gms.version" android:value="4242000" />
         <activity android:name="com.google.api.games.SignInActivity" 
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
         <activity android:name="com.google.api.games.StubActivity"
            android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
      </manifest>]]>
   </manifestAdditions>
</android>

查看Google 的指南,在最终的 AndroidManifest.xml 上的应用程序标记之外可能没有活动标记。另外,据此元数据标签也应该在应用标签内。

我只需要编辑 application.xml 所以它看起来像:

<android>
   <manifestAdditions>
      <![CDATA[<manifest android:installLocation="auto">
         <uses-permission android:name="android.permission.INTERNET" />
         <uses-permission android:name="android.permission.WAKE_LOCK" />
         <uses-sdk android:minSdkVersion="9" />
         <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />
         <!-- GooglePlay Games Services -->
         <application> <!-- This will be merged with application tag in the final manifest file -->
            <meta-data android:name="com.google.android.gms.games.APP_ID" android:value="\ MY_GOOGLE_PLAY_GAMES_APP_ID" />
            <meta-data android:name="com.google.android.gms.version" android:value="4242000" />
            <activity android:name="com.google.api.games.SignInActivity" 
               android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
            <activity android:name="com.google.api.games.StubActivity"
               android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />
         </application>
      </manifest>]]>
   </manifestAdditions>
</android>

要打开最终的 AndroidManifest.xml 文件进行检查,您可以使用 apktool。

于 2015-04-08T15:21:23.540 回答