French Ajout d'AdMob dans une application

Calvero

Member
Licensed User
Bonjour,

J'ai suivi les étapes de différents tuto présent ici ainsi que des tutos vidéos sur Youtube :

https://www.b4x.com/android/forum/threads/admob-tutorial-add-ads-to-your-application.7300/

pour l'intégration d'AdMob dans mon appli, mais il y a un point où je bloque :

B4X:
** Service (starter) Create **
** Service (starter) Start **
** Activity (main) Create, isFirst = true **
java.lang.NoClassDefFoundError: android.support.v4.util.SimpleArrayMap
    at com.google.android.gms.ads.internal.zzs.<init>(Unknown Source)
    at com.google.android.gms.ads.internal.zzs.<init>(Unknown Source)
    at com.google.android.gms.ads.internal.zzb.<init>(Unknown Source)
    at com.google.android.gms.ads.internal.zzc.<init>(Unknown Source)
    at com.google.android.gms.ads.internal.zzf.<init>(Unknown Source)
    at com.google.android.gms.ads.internal.ClientApi.createBannerAdManager(Unknown Source)
    at com.google.android.gms.ads.internal.client.zzl.createBannerAdManager(Unknown Source)
    at com.google.android.gms.ads.internal.client.zze.zza(Unknown Source)
    at com.google.android.gms.ads.internal.client.zzab.zzdh(Unknown Source)
    at com.google.android.gms.ads.internal.client.zzab.zzdg(Unknown Source)
    at com.google.android.gms.ads.internal.client.zzab.zza(Unknown Source)
    at com.google.android.gms.ads.BaseAdView.loadAd(Unknown Source)
    at com.google.android.gms.ads.AdView.loadAd(Unknown Source)
    at anywheresoftware.b4a.admobwrapper.AdViewWrapper.LoadAd(AdViewWrapper.java:118)
    at b4a.example.main._activity_create(main.java:456)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at anywheresoftware.b4a.shell.Shell.runMethod(Shell.java:702)
    at anywheresoftware.b4a.shell.Shell.raiseEventImpl(Shell.java:339)
    at anywheresoftware.b4a.shell.Shell.raiseEvent(Shell.java:246)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at anywheresoftware.b4a.ShellBA.raiseEvent2(ShellBA.java:134)
    at b4a.example.main.afterFirstLayout(main.java:102)
    at b4a.example.main.access$000(main.java:17)
    at b4a.example.main$WaitForLayout.run(main.java:80)
    at android.os.Handler.handleCallback(Handler.java:730)
    at android.os.Handler.dispatchMessage(Handler.java:92)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5103)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:525)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    at dalvik.system.NativeStart.main(Native Method)
** Activity (main) Resume **
** Activity (main) Pause, UserClosed = true **
** Service (starter) Destroy **

Alors j'ai déjà vu des gens qui avait le même problème que moi; voici la réponse qu'il a eu :

This class is included in the latest version of android-support-v4.jar. Download it from Android SDK Manager and copy it to the additional libraries folder.

You need to add this line to the project:

B4X:
#AdditionalJar: android-support-v4

Sauf que pour moi cette solution n'a pas marché et mon problème est toujours le même. Quelqu'un a-t-il une solution ? Merci d'avance de vos réponses.
 

klaus

Expert
Licensed User
Longtime User
This class is included in the latest version of android-support-v4.jar. Download it from Android SDK Manager and copy it to the additional libraries folder.
Est-ce que tu as copié le fichier android-support-v4.jar du AndroidSDK dans le répertoire des Additional Libarries ?
 

Calvero

Member
Licensed User
Oui si le répertoire dont tu parles est bien le suivant :

C:\Program Files (x86)\Anywhere Software\Basic4android\Libraries
 

klaus

Expert
Licensed User
Longtime User
Il est déconseillé de sauver des libraries additionnelles dans C:\Program Files (x86)\Anywhere Software\Basic4android\Libraries.
Il est conseillé de définir un autre répertoire pour les libraries additionnelles comme par exemple: C:\B4A\AdditionalLibraries.
Dans l'éditeur de B4A (IDE) dans le meunu Tools cliques sur Configure Paths.

upload_2016-5-12_11-39-9.png



Dans la fenêtre ci dessous entres le nom du répertoire.

upload_2016-5-12_11-41-12.png


Si tu sauves des librairies additionnelles dans C:\Program Files (x86)\Anywhere Software\Basic4android\Libraries, lors d'une mise à jour de B4A dans le même répertoire les libraires additionnelles seront supprimées.

Tu peux également définir un répertoire pour des modules partagées Shared Modules.

Depuis quelle version de Android\Platforms\android-xx as tu copié le fichier android-support-v4.jar ?
La version doit être 13 ou plus élevée.
 

Calvero

Member
Licensed User
Alors j'ai appliqué ce que tu m'as dit concernant le répertoire des librairies additionnelles.

b4a.png


C'est cette infos que tu veux ?

C:\Users\Calvero\AppData\Local\Android\android-sdk\platforms\android-23\android.jar

Du coup j'ai mis mon android-support-v4.jar dans C:\B4A\AdditionalLibraries.

Alors pour tout avouer je ne maitrise pas et ne comprend pas le sens exact de ce que j'ai en faisant tout ça, du coup je me contente d'appliquer pas à pas les procédures que je trouve et là en l’occurrence ce que tu me dis. Aide dont je te remercie d'ailleurs.
 

Calvero

Member
Licensed User
Non toujours pas j'ai toujours la même erreur...

Ben en fait je ne comprends pas bien l'utilité de ces librairies additionnelles ou quoi, mais c'est pas grave :). Ne te tracasse pas pour ça et ne perds du temps à m'expliquer mon but premier est surtout que cela fonctionne, d'où mon recours à ce forum pour le reste j'irais me former sur internet comme je l'ai fais jusqu'à maintenant.

J'aimerais passer à la publication de mon application et bloquer si près du but, c'est crispant...

Il y a certainement une chose que j'ai mal faite mais je ne sais pas laquelle...
 

klaus

Expert
Licensed User
Longtime User
Je n'ai jamais utilisé AdMob.
Si tu as suivi à la lettre la marche à suvre ça devrait fonctionner.

D'après le message d'erreur il semble que B4A ne trouve pas une classe.
Es-tu sûr d'avoir copié une version récente de android-support-v4.jar dans C:\B4A\AdditionalLibraries ?
Le fichier se trouve dans ...Android\extras\android\support\v4.
 

Calvero

Member
Licensed User
J'ai été rechercher le fichier dans le répertoire que tu m'as indiqué, j'ai remplacé celui que j'avais mis mais toujours pareil.

Y a-t-il dans B4A une option à cocher ? ou un bout de code que j'aurais pu omettre ?

Ci-dessus un aperçu de ce que j'ai modifié dans le code :

B4X:
#Region  Project Attributes  
[...]
#AdditionalRes: C:\Users\Calvero\AppData\Local\Android\android-sdk\extras\google\google_play_services\libproject\google-play-services_lib\res, com.google.android.gms
    #AdditionalJar: android-support-v4
[...]
#End Region

B4X:
Sub Globals
    Dim AdView1 As AdView
[...]
End Sub

B4X:
Sub Activity_Create(FirstTime As Boolean)
    AdView1.Initialize("Ad", "ca-app-pub-1535076440620438/3475637909")
    Activity.AddView(AdView1, 0dip, 0dip, 320dip, 50dip)' AdView1.LoadAd 'loads an adcdsz
    AdView1.LoadAd

[...]

End Sub

Les librairies que j'ai cochées et SDK que j'ai installés :

b4a.png
b4a2.png


A la rigueur si tu as une autre régies publicitaire à me conseiller je ne suis pas contre, j'ai pris celle là suite à ce que j'ai lu sur internet mais ne suis pas fermés à d'autres.
 

klaus

Expert
Licensed User
Longtime User
Il me semble qu'il y a une incohérence dans tes emplacements:
Dans Path Configuration tu as pour Android:
C:Users\Damocles\AppData\Local\Android\android-sdk\...
Et dans #AdditionalRes: C:\Users\Calvero\AppData\Local\Android\android-sdk\...
Les deux déclarations ne pointent pas sur le même répertoire.
Je ne sais pas si ça résoudra le problème.
 

Calvero

Member
Licensed User
Oui non en fait c'est un problème de capture je me suis raté, mais effectivement c'est bien Damocles des deux côtés c'est le même dossier utilisateur...
 

Calvero

Member
Licensed User
Y a pas de mal tu as le mérites d'avoir voulu m'aider, merci beaucoup ! Je vais essayer de poster en anglais même si mon anglais est foireux ...
 

Calvero

Member
Licensed User
Ah j'ai une infos de plus je sais pas si ça peu te mettre sur la piste, mais avec l'émulateur j'ai l'erreur par contre avec B4A Bridge sur mon smartphone je n'ai pas l'erreur et l'application fonctionne.

Bon le bandeau de pub ne s'affiche pas mais ça c'est un autre problème que je vais tenter de résoudre seul avant de te solliciter, mais déjà ça donne un indice de plus.
 

klaus

Expert
Licensed User
Longtime User
Ca ne m'étonne pas.
Je ne travaille plus avec des émulateurs depuis longtemps.
L'émulateur Android est une catastrophe, il est horriblement lent et ne permet tout.
J'avais testé l'émulateur Genymotion, il est plus rapide, mais ça n'est qu'un émulateur et ne remplace pas un appareil réel.
Pour vérifier le look d'un Layout sur différents appareils il y a dans le Designer la fonction ci dessous qui montre un layout sur différents appareils.

upload_2016-5-12_22-0-15.png
 

Attachments

  • upload_2016-5-12_21-59-52.png
    upload_2016-5-12_21-59-52.png
    3.2 KB · Views: 301

Calvero

Member
Licensed User
Oui je me suis déjà servi de cette fonction, après si Genymotion je m'en sers mais j'ai le même bug...

Le défaut c'est que je dois faire les captures d’écrans de l'application sur tablette sauf que je n'ai pas de tablette réelle :). Donc j'émule une nexus 10 ou 7 c'est une nécessité pour moi que l'appli se lance sur l'émulateur de ce fait là.

Je me suis déjà servi de cette fonction elle est pratique quand tu fais des scripts dans le designer... comme moi je retouche toutes mes tailles en fonction de l’échelle dans mon code main, l'option Send UI to cloud ne me donne aucun rendu car presque tout se fait hors du designer...
 
Top