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 found
和Facebook 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 run
或cordova 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)?