Cordova:适用于 Android 的 Facebook 插件构建错误

Posted

技术标签:

【中文标题】Cordova:适用于 Android 的 Facebook 插件构建错误【英文标题】:Cordova: Facebook Plugin for Android Build Error 【发布时间】:2014-05-17 05:18:32 【问题描述】:

我使用 Cordova 3.4 和 android 版 Cordova Facebook Plugin 在 Android 上构建示例 Cordova Facebook 应用程序。

这是我做的步骤:

1 创建一个空白的 Cordova 应用程序

2 编辑 Test/config.xml 并插入

 <feature name="org.apache.cordova.facebook.Connect">
     <param name="android-package" value="org.apache.cordova.facebook.ConnectPlugin" />
 </feature>

3 安装适用于 Android 的 Facebook SDK 和 Facebook APK

4 从 Cordova Facebook Plugin 文件夹将 ConnectPlugin.java 从 src/android/ 复制到 测试/平台/android/src/org/apache/cordova/facebook/

5 从 Cordova Facebook 插件文件夹将 www/cdv-plugin-fb-connect.js 和 www/facebook-js-sdk.js 复制到应用程序的 Test/www 文件夹中

6 转到 Test/ 并执行 cordova build

最后一步输出如下错误:

BUILD FAILED
/Applications/adt-bundle-mac-x86_64-20140321/sdk/tools/ant/build.xml:601: The following error occurred while executing this line:
/Users/mg/Documents/Android/Plugins/facebook-android-sdk-3.8.0/facebook/build.xml:46: sdk.dir is missing. Make sure to generate local.properties using 'android update project' or to inject it through an env var

Total time: 0 seconds
Error code 1 for command: ant with args: debug,-f,/Users/mg/Documents/Android/Test/platforms/android/build.xml,-Dout.dir=ant-build,-Dgen.absolute.dir=ant-gen
Error: /Users/mg/Documents/Android/Test/platforms/android/cordova/build: Command failed with exit code 2
    at ChildProcess.whenDone (/usr/local/lib/node_modules/cordova/src/superspawn.js:112:23)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at maybeClose (child_process.js:743:16)
    at Process.ChildProcess._handle.onexit (child_process.js:810:5)

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

您的问题的解决方案在这一行:

/Users/mg/Documents/Android/Plugins/facebook-android-sdk-3.8.0/facebook/build.xml:46:sdk.dir 丢失。确保使用 'android update project' 生成 local.properties 或通过 env var 注入它

您的 facebook SDK 没有找到 android SDK 目录。所以你需要运行:

android更新项目--path /Users/mg/Documents/Android/Plugins/facebook-android-sdk-3.8.0/facebook

然后再试一次。

【讨论】:

我按照你说的做了,但是没有成功。 @fsi 是否保持相同的错误?还是另一个? 同样的错误,但不知何故我做到了。输入:android update project -s -t "android-19" -p . 然后ant clean release 然后我可以构建并运行成功。但是仍然给出关于Facebook class cannot be foundFacebook cannot init 之类的错误。【参考方案2】:

我遇到了同样的问题,我做了什么:

在 SDK facebook 文件夹中,创建 local.properties 文件并放置您的路径:

sdk.dir=/my/path/to/adt-bundle-linux-x86_64-20140702/sdk

您可以从主项目的 local.properties 复制。

现在,如果想使用 cordova cli 和 eclipse,你需要知道 adt build 和 ant build 是不同的,你可以在这里看到https://***.com/a/19746506/1833734。所以,这里有诀窍:

如果你想使用 ant(cordova 控制台):

    禁用 Eclipse 自动构建(在项目菜单中) 转到您的主项目文件夹(在控制台中)并键入:ant clean。你的主要项目是这样的:/path/to/my/cordova/project/platforms/android 现在使用cordova runcordova build 之类的命令

PS。检查主项目的Eclipse中的属性,facebook插件添加facebook sdk库,在我的情况下路径错误,所以我修复了添加我自己的路径。这会在 eclipse 和 cordova-cli 中产生中断。

如果你需要改成eclipse,你需要这样做:

    项目->清理(清理所有项目、facebook sdk、主项目和cordova lib) 项目->全部构建 快跑!

因此,您需要使用这些步骤,而无需将 eclipse 更改为 cordova-cli,反之亦然。

最后提示:使用 cordova cli 后不要忘记刷新 (f5) eclipse 项目。

【讨论】:

以上是关于Cordova:适用于 Android 的 Facebook 插件构建错误的主要内容,如果未能解决你的问题,请参考以下文章

Cordova 相机插件适用于模拟器,而不适用于 Android 设备

如何在适用于 Android 和 cordova 的项目中单击通知时显示特定页面?

Phonegap/Cordova Geolocation 不适用于 Android 4.0+,但适用于所有其他平台

如何将适用于 Android 的 Pushwoosh 插件添加到 Cordova IBM Worklight (@Eclipse)?

适用于 iOS 的 Cordova 文件选择器?

适用于VS 2017的Cordova工具 - 不支持的类文件版本52