Кажется, не получает ресурс Facebook SDK при использовании Facebook Android SDK в IntelliJ IDEA 12
Согласно статье Добавить Facebook SDK в проект IntelliJ Android? Я решил добавить файл "facebook.jar" в качестве модуля в разделе "Зависимости" в структуре проекта. Процесс компиляции работает нормально. Однако, когда я пытался использовать "Вход в сеанс" для входа в Facebook, я получил сообщение об ошибке во время выполнения, например:
02-06 20:15:56.648: ERROR/AndroidRuntime(5891): FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.facebook.android.R$layout
at com.facebook.LoginActivity.onCreate(LoginActivity.java:55)
at android.app.Activity.performCreate(Activity.java:4524)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1071)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2189)
at android.app.ActivityThread.access$600(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1261)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:4894)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)
Похоже, что facebook.jar не содержит сам ресурс макета, предоставленный в Facebook SDK? Не знаю, прав я или нет. Я импортирую текущий проект, собираю и запускаю свое приложение через eclipse, и оно работает как шарм. Все работает без нареканий. Тем не менее, будучи сторонником IntelliJ IDEA, я хотел бы попытаться найти решение этой проблемы. Большое спасибо.
4 ответа
ОК, наконец-то получил SDK для Android на Facebook. Вот порядок шагов, которые я сделал.
- Откройте и будьте в вашем текущем проекте Android, затем выберите
File
|New Module
- Выберите "
Library Module
"на левой боковой панели. - Заполните необходимую информацию на правой боковой панели. Здесь я только что дал:
Module name
: "facebook"Content root
: Выберите, где находится загруженный Android SDK для Facebook, и обязательно выберите подпапку с именем "Facebook".Module file location
: то же самое, что и rootPackage name
: com.facebook.android (догадаешьсяназначить произвольно?)
- Нажмите
finish
кнопка и вау ~ вы получили модуль Android SDK facebook в вашем проекте. - Идти к
File
|Project Structure
затем выберитеModules
страницы на левой панели - Выберите свой оригинальный проект Android, нажмите кнопку "Плюс" (Добавить), чтобы добавить новый
Module Dependency
, вы увидите модуль Facebook, который мы создали выше, только что показанный для выбора. Выберите это. - Нажмите кнопку Применить, ОК. Тогда вы получили Android SDK Facebook работал безупречно в вашем приложении для Android. Congrats!!
У меня была та же проблема, но я использую Eclipse, поэтому мои шаги для решения этой проблемы с помощью Eclipse:
1-во затмении после того, как вы импортируете FacebookSDK в свою рабочую область, щелкните правой кнопкой мыши библиотеку FacebookSDk, затем выберите свойства или нажмите Alt + ввод 2 - выберите "путь сборки Java" из окна "Лето" и перейдите на вкладку "Библиотеки".
3- нажмите "добавить внешние баночки", затем перейдите на Facebook путь SDK или местоположение, выберите папку libs, добавьте файл android-support-v4 и файл болтов
теперь вы сделали, вы счастливы
я надеюсь, что это произойдет
Решение Cloud не подействовало на меня, поэтому я опубликую свое ниже. В частности, мой не работал, потому что я уже использовал библиотеку поддержки appcompat, так что это будет особенно полезно в этом случае.
Делайте только выделенные шаги, если вы уже используете библиотеку поддержки APPCOMPAT.
- Нажмите
File
->Project Structure
->Modules
, Нажмите наgreen +
->Import module
, Выберитеfacebook
папка изfacebook SDK
и нажмитеOK
, - Выбрать
Create module from existing sources
->Next
->Next
,
- Нажмите
split (the pink/blue button at the top)
, ТипFacebookDependencies
вName
-> выбратьbolts..
->OK
, Снимите флажок с другого (libs?).
- Нажмите
Next
->Next
->Finish
,
Нажмите на
green +
справа ->2. Library
-> (библиотека, которая содержит ваш android-support-v4.jar - вы можете проверить вLibraries
страница слева) ->Add Selected
,Нажмите на
green +
справа ->3. Module Dependency
->appcompat
->OK
,
Нажмите
your module
,Нажмите на
green +
справа ->2. Library
->FacebookDependencies
(или как оно было ранее на шаге 3) ->Add Selected
,Нажмите на
green +
справа ->3. Module Dependency
->facebook
->OK
,
Гораздо более простой подход - импортировать Facebook SDK в виде библиотеки AAR в сборке вашего Android-приложения Gradle. Для этого я предлагаю не изобретать велосипед и использовать проект facebook-api-android-aar (см. https://github.com/mente/facebook-api-android-aar). Как объяснено в документации этого проекта (в файле README.md), простой способ - использовать предварительно созданный артефакт Maven из SDK Facebook, добавив следующий код в файл build.gradle вашего приложения:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:+'
}
}
repositories {
mavenCentral()
mavenLocal()
maven {
url "http://mente.github.io/facebook-api-android-aar"
}
}
apply plugin: 'android'
dependencies {
compile ('com.facebook:facebook-android-sdk:+@aar') {
transitive = true
}
// other dependecies definition here
}
android {
//android build setup
}
Вот и все. Обратите внимание, что этот инструмент поддерживает версии 3.0.2, 3.5.0, 3.5.2, 3.6.0, 3.7.0, 3.8.0, 3.14.1, 3.15.0, 3.16 из Facebook SDK.
Чао