【发布时间】: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