J'aimerais d'importation (et d'utiliser) les Google Play Services de la bibliothèque dans un projet Android, mais j'ai du mal avec ce qui doit être un problème de dépendance.
L'ensemble de la documentation écrite par google est basé sur Eclipse. Nous utilisons IntelliJ IDEA.
Les choses que je connais:
- Je sais comment faire pour importer des Modules, des Bibliothèques, ajouter des Dépendances, etc. dans IntelliJ.
- Je sais aussi que, selon le guide de démarrage Google, vous devez ajouter le google-play-services-lib dans (Eclipse) en tant que projet (par l'importation de code existant dans l'espace de travail), et que vous pouvez le faire à l'Ide, par l'ajout d'un nouveau module de code existant. C'est la même procédure, autre nom.
- Je comprends aussi ce que l'Ordre et l'Exportation de l'onglet dans Eclipse (Ide, est-il trop).
Les choses que j'ai fait:
- J'ai copié (pour la sécurité) de la google-play-services_lib le dossier du SDK Android à ma racine du projet. J'ai donc /myprj et /google-play-services_lib au même niveau (j'ai aussi /facebooksdk et /actionbarsherlock au même niveau) et a procédé à l' "Module d'Importation" (à partir de la source existante). Puis cliqué sur suivant, suivant, suivant... (il a travaillé, il a été reconnu).
Le projet de la structure ressemble à ceci (nom intentionnellement floue):
- Cette correctement ajouté un module (comme vous pouvez le voir dans la capture ci-dessus). Maintenant, j'ai besoin d'ajouter la dépendance donc mon principal projet sait à ce sujet. Je vais à mon modules et dans la liste, sélectionnez mon principal module puis dépendances onglet. Je peux voir un peu de bibliothèques (Joda time, android requête, gson, etc.) et de deux modules: FacebookSDK et actionbarsherlock. So far So good. Et c'est quand les choses deviennent étranges.
Dépendances que j'ai essayé d'ajouter.
REMARQUE: Dans la plupart des cas, j'ai essayé en cochant et décochant la case à cocher exporter et j'ai aussi essayé d'ajouter ce point à l'sherlockbar module en même temps, juste pour le test. Je sais il y a beaucoup de combinaisons, mais bon.
1) Ajout d'un Pot ou d'un répertoire (sachant que c'était faux, j'ai essayé). et souligne le .jar qui est à l'intérieur du google play module /libs, nommé: google-play-services.jar.
2) Ajouter une Bibliothèque (et puis l'ajouter au projet(s))
3) Ajouter le Module de Dépendance, (tout en ayant mon principal projet est sélectionné). Il affiche un pop-up comme ceci:
PROBLÈME
Même quand je peut faire référence à une PlusClient , et j'ai le droit importations, lorsque j'essaie d'ajouter un SignInButton dans ma mise en page xml, j'obtiens une erreur.
Il n'y a aucun point dans le collage de l'ensemble de la Mise en page XML car il n'a pas quelque chose d'étrange, c'est juste un RelativeLayout avec un peu de textviews. J'ai ajouté le g+ bouton comme ceci:
<com.google.android.gms.common.SignInButton
android:id="@+id/sign_in_button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/logo_login"
android:layout_marginBottom="30dip" />
Tout comme Google dit.
Le premier signe que quelque chose peut être de l'ordre est le fait que IntelliJ avertissements vous dire que l'élément "n'est pas valide ici", mais je suppose que c'est une limitation de la concepteur visuel plutôt que d'un réel problème.
Cependant, lorsque je lance le projet, j'obtiens ceci:
07-30 17:50:44.854: ERROR/ActivityThread(22324): Failed to inflate
android.view.InflateException: Binary XML file line #22: Error inflating class com.google.android.gms.common.SignInButton
at android.view.LayoutInflater.createView(LayoutInflater.java:606)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
at com.actionbarsherlock.internal.ActionBarSherlockNative.setContentView(ActionBarSherlockNative.java:134)
at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SherlockFragmentActivity.java:262)
at com.myapp.ui.activities.LoginSignupActivity.onCreate(LoginSignupActivity.java:64)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2033)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
at android.app.ActivityThread.access$600(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4575)
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:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:586)
... 24 more
Caused by: java.lang.NoClassDefFoundError: com.google.android.gms.R$drawable
at com.google.android.gms.internal.aa.b(Unknown Source)
at com.google.android.gms.internal.aa.a(Unknown Source)
at com.google.android.gms.common.SignInButton.c(Unknown Source)
at com.google.android.gms.common.SignInButton.d(Unknown Source)
at com.google.android.gms.common.SignInButton.setStyle(Unknown Source)
at com.google.android.gms.common.SignInButton.<init>(Unknown Source)
at com.google.android.gms.common.SignInButton.<init>(Unknown Source)
... 27 more
Voici la ligne qui attire mon attention:
Causés par: java.lang.NoClassDefFoundError: com.google.android.gms.R$drawable
L'exception suivante ci-dessous:
07-30 17:50:44.870: ERROR/AndroidRuntime(22324): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.myapp/com.myapp.ui.activities.LoginSignupActivity}: android.view.InflateException: Binary XML file line #22: Error inflating class com.google.android.gms.common.SignInButton
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2079)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2104)
at android.app.ActivityThread.access$600(ActivityThread.java:132)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1157)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4575)
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:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
Caused by: android.view.InflateException: Binary XML file line #22: Error inflating class com.google.android.gms.common.SignInButton
at android.view.LayoutInflater.createView(LayoutInflater.java:606)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:680)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:739)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:742)
at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:251)
at com.actionbarsherlock.internal.ActionBarSherlockNative.setContentView(ActionBarSherlockNative.java:134)
at com.actionbarsherlock.app.SherlockFragmentActivity.setContentView(SherlockFragmentActivity.java:262)
at com.myapp.ui.activities.LoginSignupActivity.onCreate(LoginSignupActivity.java:64)
at android.app.Activity.performCreate(Activity.java:4465)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2033)
... 11 more
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.constructNative(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:417)
at android.view.LayoutInflater.createView(LayoutInflater.java:586)
... 24 more
Caused by: java.lang.NoClassDefFoundError: com.google.android.gms.R$drawable
at com.google.android.gms.internal.aa.b(Unknown Source)
at com.google.android.gms.internal.aa.a(Unknown Source)
at com.google.android.gms.common.SignInButton.c(Unknown Source)
at com.google.android.gms.common.SignInButton.d(Unknown Source)
at com.google.android.gms.common.SignInButton.setStyle(Unknown Source)
at com.google.android.gms.common.SignInButton.<init>(Unknown Source)
at com.google.android.gms.common.SignInButton.<init>(Unknown Source)
... 27 more
Si je supprime le code à partir de la Mise en page, il fonctionne.
Mon idée est que cela a à voir avec la façon dont Android gère le R(moyens) et, par conséquent, il peut ne pas être de trouver de la ressource pour le bouton.
Personne n'a réussi à utiliser: Intellij Idea (12+) avec ActionbarSherlock et Google+ de la Bibliothèque?
Si oui, comment? :)