【问题标题】:cocos2dx v3.9 integration with facebook sdkcocos2dx v3.9 与 facebook sdk 集成
【发布时间】:2016-05-15 10:49:15
【问题描述】:

我想在 cocos2dx v3.9 上将 facebook 集成到我的游戏中,但我遇到了问题。请问你能帮帮我吗? 所以让我一步一步描述我的行为:

1) 我已经下载了sdkbox from sdkbox official site

2) 我创建了新的应用程序on dev facebook

注意: - 我创建基本设置 - 我已经完成了适用于所有人的应用程序(绿点在我的应用程序名称附近) - 在设置中点击添加平台 - Android - 下载 openssl 并在终端中执行命令: keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%.android\debug.keystore | openssl sha1 -二进制 | openssl base64 所以复制缓冲区中的符号序列 - 打开浏览器并将序列符号从缓冲区粘贴到键散列字段 - 然后填写包名(类名留空),然后点击保存打开警报对话框和下一个文本

Google Play 软件包名称

在 Google Play 上验证包名 org.cocos.CocosProject 时出现问题。请检查包名称,然后重试。 如果您的应用尚未在 Google Play 上公开列出,您可以忽略此消息。

所以我的应用未在 Google Play 上公开列出,因此我点击了使用此软件包名称

3) 之后我进入命令行,打开我的游戏所在的目录: 并设置 facebook sdkbox:

  • sdkbox import facebook - 我得到错误的输出(不要修补 AppDelegate.cpp(我调查了问题,似乎是因为我已经更改了包含 AppDelegate.cpp)看起来没问题,我继续设置)
  • 在 proj.android/res/values/strings.xml 我用

    添加新行

    我的_FACEBOOK_APP_ID

  • 并在 proj.android/AndroidManifest.xml 文件中将 _replace_with_your_app_id_ 替换为我的 Facebook 应用 ID

  • 在 proj.android/project.properties 中,将目标更改为 target=android-15

我编译我的项目。 在 proj.android/project.properties 的内容之后:

target=android-15

android.library.reference.1=libs/facebook_lib/

所以当我在 android 上运行应用程序时,它会因此类错误而崩溃(来自 adb logcat)

E/AndroidRuntime( 3322): FATAL EXCEPTION: main

E/AndroidRuntime( 3322): java.lang.RuntimeException: Unable to get provider com.facebook.FacebookContentProvider: java.lang.ClassNotFoundException: Didn't find class "com.facebook.FacebookContentProvider" on path: DexPathList[[zip file "/mnt/asec/org.cocos.Test-1/pkg.apk"],nativeLibraryDirectories=[/mnt/asec/org.cocos.Test-1/lib, /vendor/lib, /system/lib]]

E/AndroidRuntime( 3322):    at android.app.ActivityThread.installProvider(ActivityThread.java:5100)

E/AndroidRuntime( 3322):    at android.app.ActivityThread.installContentProviders(ActivityThread.java:4680)

E/AndroidRuntime( 3322):    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4613)

E/AndroidRuntime( 3322):    at android.app.ActivityThread.access$1300(ActivityThread.java:162)

E/AndroidRuntime( 3322):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1424)

E/AndroidRuntime( 3322):    at android.os.Handler.dispatchMessage(Handler.java:107)

E/AndroidRuntime( 3322):    at android.os.Looper.loop(Looper.java:194)

E/AndroidRuntime( 3322):    at android.app.ActivityThread.main(ActivityThread.java:5371)

E/AndroidRuntime( 3322):    at java.lang.reflect.Method.invokeNative(Native Method)

E/AndroidRuntime( 3322):    at java.lang.reflect.Method.invoke(Method.java:525)

E/AndroidRuntime( 3322):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:833)

E/AndroidRuntime( 3322):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)

E/AndroidRuntime( 3322):    at dalvik.system.NativeStart.main(Native Method)

E/AndroidRuntime( 3322): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.facebook.FacebookContentProvider" on path: DexPathList[[zip file "/mnt/asec/org.cocos.Test-1/pkg.apk"],nativeLibraryDirectories=[/mnt/asec/org.cocos.Test-1/lib, /vendor/lib, /system/lib]]

E/AndroidRuntime( 3322):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:53)

E/AndroidRuntime( 3322):    at java.lang.ClassLoader.loadClass(ClassLoader.java:501)

E/AndroidRuntime( 3322):    at java.lang.ClassLoader.loadClass(ClassLoader.java:461)

E/AndroidRuntime( 3322):    at android.app.ActivityThread.installProvider(ActivityThread.java:5085)

E/AndroidRuntime( 3322):    ... 12 more

请你帮帮我吧!感谢您提供任何想法和任何有用的链接。

谢谢

更新:

<?xml version='1.0' encoding='UTF-8'?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="org.cocos.Test" android:installLocation="auto" android:versionCode="1" android:versionName="1.0">
    <uses-sdk android:minSdkVersion="9" />
    <uses-feature android:glEsVersion="0x00020000" />
    <application hardwareAccelerated="true" android:icon="@drawable/icon" android:label="@string/app_name">
        <meta-data android:name="android.app.lib_name" android:value="cocos2dcpp" />
        <activity android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/app_name" android:name="org.cocos2dx.cpp.AppActivity" android:screenOrientation="landscape" android:theme="@android:style/Theme.NoTitleBar.Fullscreen">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation" android:label="@string/app_name" android:name="com.facebook.FacebookActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" />
        <meta-data android:name="com.facebook.sdk.ApplicationId" android:value="@string/facebook_app_id" />
        <provider android:authorities="com.facebook.app.FacebookContentProviderMY_FB_APP_ID" android:exported="true" android:name="com.facebook.FacebookContentProvider" />
    </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" />
</manifest>

更新我没有在 facebook 上发布我的应用,可能我的包名不是唯一的

更新我如何在 facebook 上创建应用程序 1)继续https://developers.facebook.com/并使用基本设置创建新应用程序,填写显示名称和电子邮件,然后选择类型-游戏。然后单击创建应用程序ID 2)所以接下来我继续应用审查并发布应用程序(在我的应用程序附近的那个绿点之后) 3)所以请注意,下一步对我来说绝对是模糊的,我打开设置点击添加平台,选择android,进入终端输入下一条命令

keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%.android\debug.keystore | openssl sha1 -binary | openssl base64

我得到序列符号并输入密钥哈希,然后用我的名称包 google play 填充字段。然后点击保存。

更新

我的步骤有什么问题?有什么想法吗?

有用的链接:

【问题讨论】:

  • 你能显示清单吗?
  • @Striker 感谢您的关注,我更新了我的帖子。
  • 您是否在 facebook 上设置了应用程序?您不需要发布它进行测试;刚刚链接。
  • 是的,我已经完成了,更新了我的帖子,一步一步地描述了我是如何在 facebook 上创建应用程序的。
  • 设置 android:exported="false" 并尝试。您必须在发布时将其改回。

标签: android facebook cocos2d-x cocos2d-x-3.0


【解决方案1】:

所以请检查底部文件proj.android中的Build.xml,必须有所有*.jar文件的路径示例

<target name="-pre-compile">
        <!-- Redefine project.all.jars.path before -compile executes -->
        <path id="project.all.jars.path">
            <fileset file="./jars/*.jar" />
            <fileset file="./jars/facebook_lib/bin/*.jar" />
            <fileset file="./jars/facebook_lib/libs/*.jar" />
            <fileset file="${sdk.dir}/tools/support/*.jar" />
        </path>
    </target>

所以现在游戏开始时没有崩溃。

【讨论】:

    猜你喜欢
    • 2014-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-09
    • 2012-12-24
    相关资源
    最近更新 更多