Плагин Apache Cordova Facebook (последняя версия / текущий мастер) приводит к сбою моего приложения для Android при инициализации

#android #facebook #apache #cordova #plugins

#Android #Facebook #apache #cordova #Плагины

Вопрос:

Я несколько раз создавал пример приложения, приведенного в последней версии (текущем мастере) плагина Facebook Apache Cordova:

https://github.com/phonegap/phonegap-facebook-plugin

В настоящее время я работаю только на Android.

В первый раз, когда я создал этот образец приложения (около двух недель назад), все работало нормально. Я успешно вошел в свою учетную запись Facebook, разместил статус на своей стене и вышел из системы (все остальные действия также работали нормально).

Но с тех пор я создавал этот образец приложения еще несколько раз (точно таким же образом), и он больше никогда не работал (последний раз, когда я пытался, был сегодня). В новых приложениях (с тем же кодом, что и в первом приложении, которое все еще работает) я нажимаю «ВОЙТИ С FACEBOOK», и мое приложение немедленно вылетает. Иногда приложение не завершает работу немедленно, и я могу получить сообщение «Аргумент ‘session’ не может быть нулевым». Затем я снова нажимаю «ВОЙТИ С FACEBOOK», и приложение выходит из строя. Иногда я могу получать это сообщение несколько раз, прежде чем приложение в конечном итоге выйдет из строя. Если я нажимаю «ВЫЙТИ Из FACEBOOK», я получаю сообщение: «Не найден действительный сеанс, необходимо вызвать init и войти в систему перед выходом».

Я также не думаю, что проблема в том, что у меня неправильный хэш-ключ или что-то в этом роде, потому что я каждый раз был осторожен с настройками facebook app.

Я также считаю, что каждый раз устанавливал плагин правильно, потому что я всегда делал это так же, как и в первый раз, и все работало нормально.

Итак, как получилось, что в моих последних попытках переменная сеанса равна NULL?? Почему это сработало только в первый раз?? Я очень расстроен..

Редактировать:

Вот соответствующий сегмент журнала LogCat:

 D/ConnectPlugin( 7064): login FB

W/dalvikvm( 7064): VFY: unable to resolve static field 2130 (com_facebook_internet_permission_error_title) in Lcom/facebook/android/R$string;

D/dalvikvm( 7064): VFY: replacing opcode 0x60 at 0x0010

I/dalvikvm( 7064): DexOpt: unable to optimize static field ref 0x0851 at 0x18 in Lcom/facebook/AuthorizationClient;.checkInternetPermission

W/dalvikvm( 7064): VFY: unable to resolve static field 2120 (com_facebook_login_activity_layout) in Lcom/facebook/android/R$layout;

D/dalvikvm( 7064): VFY: replacing opcode 0x60 at 0x0003

W/dalvikvm( 7064): VFY: unable to resolve static field 2103 (com_facebook_login_activity_progress_bar) in Lcom/facebook/android/R$id;

D/dalvikvm( 7064): VFY: replacing opcode 0x60 at 0x0008

I/ActivityManager( 2112): START {intent.toShortString} from pid 7064

I/power   ( 2112): *** acquire_dvfs_lock : lockType : 1  freq : 1000000 

D/PowerManagerService( 2112): acquireDVFSLockLocked : type : DVFS_MIN_LIMIT  frequency : 1000000  uid : 1000  pid : 2112  tag : ActivityManager

W/ActivityManager( 2112): mDVFSLock.acquire()

D/dalvikvm( 7064): GC_CONCURRENT freed 455K, 6% free 12931K/13639K, paused 4ms 5ms

W/PluginManager( 7064): THREAD WARNING: exec() call to FacebookConnectPlugin.login blocked the main thread for 207ms. Plugin should use CordovaInterface.getThreadPool().

D/CordovaActivity( 7064): Paused the application!

D/CordovaWebView( 7064): Handle the pause

D/FirewallPolicy( 2112): getURLFilterEnabled(true)

D/FirewallPolicy( 2112): isUrlBlocked - Policy disabled

D/webkit  ( 7064): Firewall not null

D/FirewallPolicy( 2112): getURLFilterEnabled(true)

D/FirewallPolicy( 2112): isUrlBlocked - Policy disabled

I/ClipboardServiceEx( 2112): mCBPickerDialog enter case. MSG_DISMISS_DIALOG

D/webkit  ( 7064): euler: isUrlBlocked = false

D/FirewallPolicy( 2112): getURLFilterEnabled(true)

D/FirewallPolicy( 2112): isUrlBlocked - Policy disabled

D/ActivityManager( 2112): Trying to launch applicationName

D/KeyguardViewMediator( 2112): setHidden false

I/ClipboardServiceEx( 2112): mCBPickerDialog enter case. MSG_DISMISS_DIALOG

D/AndroidRuntime( 7064): Shutting down VM

W/dalvikvm( 7064): threadid=1: thread exiting with uncaught exception (group=0x40c6c1f8)

E/AndroidRuntime( 7064): FATAL EXCEPTION: main

E/AndroidRuntime( 7064): java.lang.NoClassDefFoundError: com.facebook.android.R$layout

E/AndroidRuntime( 7064):    at com.facebook.LoginActivity.onCreate(LoginActivity.java:57)

E/AndroidRuntime( 7064):    at android.app.Activity.performCreate(Activity.java:4562)

E/AndroidRuntime( 7064):    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)

E/AndroidRuntime( 7064):    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)

E/AndroidRuntime( 7064):    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)

E/AndroidRuntime( 7064):    at android.app.ActivityThread.access$600(ActivityThread.java:128)

E/AndroidRuntime( 7064):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)

E/AndroidRuntime( 7064):    at android.os.Handler.dispatchMessage(Handler.java:99)

E/AndroidRuntime( 7064):    at android.os.Looper.loop(Looper.java:137)

E/AndroidRuntime( 7064):    at android.app.ActivityThread.main(ActivityThread.java:4514)

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

E/AndroidRuntime( 7064):    at java.lang.reflect.Method.invoke(Method.java:511)

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

E/AndroidRuntime( 7064):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)

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

W/ActivityManager( 2112):   Force finishing activity com.yomama.test/com.facebook.LoginActivity

W/ActivityManager( 2112):   Force finishing activity com.yomama.test/.Test
  

Еще одна странная вещь, которая произошла со мной вчера, заключалась в том, что я перекомпилировал и переустановил (на свой телефон) первое рабочее приложение, и внезапно оно тоже не сработало (я получил то же сообщение после нажатия кнопки «ВОЙТИ С FACEBOOK», а затем приложение разбилось). Затем я перекомпилировал и переустановил приложение снова, и оно снова работало нормально. Странно.

Комментарии:

1. Пожалуйста, опубликуйте свой журнал LogCat, если это врожденная проблема.

Ответ №1:

Попробуйте следующие шаги (из этой проблемы с GitHub; у меня сработало):

  ### Android Setup without Eclipse (just CLI)

 Follow the steps above:

cordova create myApp

cd myApp/

cordova platform add android

cordova -d plugin add https://github.com/phonegap/phonegap-facebook-plugin.git --variable APP_ID="123456789" --variable APP_NAME="myApplication"

// add FacebookLib

echo "android.library.reference.2=com.phonegap.plugins.facebookconnect/FacebookLib" >> platforms/android/project.properties

cp platforms/android/local.properties platforms/android/com.phonegap.plugins.facebookconnect/FacebookLib

android update project -p platforms/android/

cd platforms/android/

ant clean

cd com.phonegap.plugins.facebookconnect/FacebookLib

ant clean

open -e AndroidManifest.xml

// change your minSdkVersion and your targetSdkVersion to your environment settings.

ant release

cd ../../../..

cordova build android

With this steps you can add the Plugin without using Eclipse
  

Комментарии:

1. у меня это сработало, добавив «com.phonegap.plugins. facebookconnect» к пути FacebookLib