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 :

Code:
** 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:

Code:
#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.
 
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 ?
 
Oui si le répertoire dont tu parles est bien le suivant :

C:\Program Files (x86)\Anywhere Software\Basic4android\Libraries
 
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.
 
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.
 
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...
 
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.
 
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 :

Code:
#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

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

Code:
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.
 
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.
 
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...
 
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 ...
 
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.
 
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: 583
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...
 
Back
Top