Forums Développement Multimédia

Aller au contenu

ANE pour Admob

ane admob android air

185 réponses à ce sujet

#1 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 24 January 2020 - 07:01 AM

Bonjour,

Je tente d'installer un ANE Admob suivant le tuto trouvé ici, j'ai installé le ANE, modifié le descripteur, mais j'ai une erreur que je ne saisie pas, un petit coup de pouce serait le bienvenu.

Erreur issue de cette partie du script:


import so.cuo.platform.admob.*;
Admob.getInstance().initAdmobSDK(new ExtraParameter());
 

message d'erreur: Séquence 1, Calque 'ADMOB', Image 1, ligne 3, colonne 42 1067 : Contrainte implicite d'une valeur du type so.cuo.platform.admob:ExtraParameter vers un type sans rapport String.

Merci d'avance pour votre aide.

#2 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 24 January 2020 - 08:50 AM

sur GitHub, il est expliqué comment utilisé l'ANE

Admob.getInstance().initAdmobSDK("your admob app ID"); // à trouver sur le site [url="https://admob.google.com/home/"]admob[/url]
 
méfie-toi de ces ane gratuites, surtout pour admob, si le concepteur modifie l' "admob app ID" à ton insu, il va récupérer tous tes gains.
regarde ce lien ( pour admob c'est délicat d'utiliser une ane gratuite )

Perso je l'ai créé pour Android avec "Android Studio" en Java sur Windows, pour iOS avec Xcode en Objective-c sur Mac

#3 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 24 January 2020 - 22:28 PM

Salut pol2095,
Effectivement ça fait réfléchir, ça ma stoppé dans mon élan du coup, merci de m'avoir averti, je vais me renseigner d'avantage sur le sujet pour trouver une solution.

#4 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 27 January 2020 - 18:43 PM

Bonsoir,

J'ai fouiné un peu sur le net et effectivement lilili87222 ne paraît pas très recommandable, j''ai cherché un peu via Google et j'ai trouvé un Ane payant ici -> milkmanplugins.com mais je ne sait pas si c'est le seul ou si il y a d'autres solutions.
Vous en pensez quoi ?

#5 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 27 January 2020 - 23:07 PM

Mauvaise idée, ne supporte pas Air 33 et Android 64 bit.
distriqt me parait plus sérieux.

#6 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 28 January 2020 - 06:37 AM

Merci ;-)

#7 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 29 January 2020 - 06:36 AM

Bonjour,
Bon, enfin de compte je vais laisser tomber, 40 $ c'est déjà pas donné mais en plus c'est pour une license d'un an, je ne pense pas que ça en vaille la peine :cry:

#8 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 29 January 2020 - 21:08 PM

pour Android et/ou iOS ?

#9 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 30 January 2020 - 06:23 AM

Salut pol2095, exclusivement pour Android.

#10 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 01 February 2020 - 17:59 PM

Si tu maîtrises un peu Android Studio et Java (ça ressemble à l'as3) je peux te donner un coup de main pour créer l'ane.

#11 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 01 February 2020 - 19:02 PM

Salut pol2095,
Et bien pourquoi pas, avec plaisir comme d'habitude, de plus je suis curieux de savoir comment ce fabrique un ANE, alors je suis partant.

#12 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 01 February 2020 - 20:57 PM

On va commencer par une ane d'exemple
Il faut d'abord télécharger Android Studio

Start a new project

Image IPB

Image IPB

c'est là que tu donnes un nom à ton projet : AdMob par exemple
package : com.google.ads (par exemple)

Copier <AIR SDK>\lib\android\FlashRuntimeExtensions.jar dans

Image IPB

Image IPB

Image IPB

Image IPB

on va supprimer les fichiers qui ne vont pas nous servir

Image IPB

Image IPB

#13 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 01 February 2020 - 20:58 PM

étape importante :
remplacer sur la première ligne "application" par "library"
commenter la ligne avec "applicationId"
supprimer les 4 ligne avec "test" (inutile)

Image IPB

maintenant on clique "sync now"

Image IPB

on peut compiler

Image IPB

on a maintenant le fichier aar qui contient le jar qui nous servira pour l'ane

Image IPB

quand tu arrives ici, on pourra continuer

#14 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 01 February 2020 - 22:39 PM

Studio Android stagne à l'étape -> Add As Library... la synchronisation me donne 16 mn d'attente, je ne sais pas si c'est le logiciel ou le PC.
J'ai fermé et recommencé cette étape mais le menu ne me propose plus Add As Library... parconsequent dans la prochaine étape -> Android -> app je n'ai pas java, je vais tenter de recommencer un autre projet depuis le début.

#15 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 01 February 2020 - 22:46 PM

bizarre, chez moi c'est quelques secondes, c'est vrai qu'Android Studio est lent mais quand même
as-tu sélectionné Java comme language pour le projet ?

#16 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 01 February 2020 - 23:14 PM

Oui, et dans la section android j'ai pas manifests, java ça ce présente comme ça
Image IPB

#17 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 01 February 2020 - 23:24 PM

Que dit "Build Output"

Image IPB

#18 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 08:41 AM

Bonjour pol2095, ça ne veux pas synchroniser, ça tourne en boucle, j'ai réinstallé Android Studio au cas ou mais pas de changement.
Image IPB

#19 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 08:51 AM

Dans la fenêtre Event Log il y a cette ligne en rouge -> Gradle sync failed: java.lang.NullPointerException (40 s 13 ms)

#20 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 08:58 AM

Il y a un problème avec Gradle, tu es sous Windows 64 bit ?

#21 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 09:02 AM

oui, Windows 64 bits

#22 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 09:04 AM

qu'affiche le fichier "build.gradle" dans le dossier gradle

#23 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 09:17 AM

Image IPB

#24 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 09:21 AM

le contenu du fichier

#25 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 09:27 AM


// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
    repositories {
            google()
            jcenter()
           
    }
    dependencies {
            classpath 'com.android.tools.build:gradle:3.5.3'
           
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
            google()
            jcenter()
           
    }
}
task clean(type: Delete) {
    delete rootProject.buildDir
}
 


#26 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 09:36 AM

c'est correct, que mets-tu dans la fenêtre "create new project" (capture d'écran 2)

#27 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 09:39 AM

AdMob
com.google.ads
C:\Users\Laurent\AndroidStudioProjects\AdMob
java
api 24

#28 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 09:50 AM

essaie api 29
avant d'ajouter "FlashRuntimeExtensions.jar" il synchronise

#29 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 10:00 AM

Avec l'API 29 ça passe il y a eu une mise à jour du NDK il me semble, cela dit on est restreint pour la diffusion en APi 29 ?

#30 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 10:11 AM

Installe l'api 25

Tools > SDK Manager

Image IPB

et ensuite choisi api 25 dans "create new project"

#31 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 10:24 AM

C'est ok, je reprend le tuto depuis le départ.

#32 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 10:51 AM

Voilà, tout est ok jusqu'a la compilation, on fait la suite quand tu veux. merci.

#33 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 11:14 AM

En fait ce n'est pas grave de mettre l'api 29, ce qui compte pour l'ane c'est la ligne "minSdkVersion 14" dans "build.gradlle (Module:app)", on va juste récupérer les classes Java, c'est juste pour savoir si l' API est disponible pour toutes les versions

#34 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 11:21 AM

on va créer 3 classes Java :

Image IPB

- AdMobExtensionContext
package com.google.ads;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import java.util.HashMap;
import java.util.Map;
public class AdMobExtensionContext extends FREContext {
        @Override
        public void dispose() {
                // TODO Auto-generated method stub
        }
        @Override
        public Map<String, FREFunction> getFunctions() {
                //Log.e("AIR_DeviceInfoNE", "Map function called");
                Map<String, FREFunction> functionMap=new HashMap<String, FREFunction>();
                functionMap.put("admob", new AdMob());
                return functionMap;
        }
}

- AdMobExtension
package com.google.ads;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREExtension;
public class AdMobExtension implements FREExtension {
        /** Called when the activity is first created. */
        @Override
        public FREContext createContext(String arg0) {
                // TODO Auto-generated method stub
                //Log.e("AIR_Deviceinfo", "Inside Create Context");
                return new AdMobExtensionContext();
        }
        @Override
        public void dispose() {
                // TODO Auto-generated method stub
        }
        @Override
        public void initialize() {
                // TODO Auto-generated method stub
        }
}

- AdMob
package com.google.ads;
//import android.app.Activity;
import android.os.Build;
import com.adobe.fre.FREContext;
import com.adobe.fre.FREFunction;
import com.adobe.fre.FREObject;
public class AdMob implements FREFunction {
        @Override
        public FREObject call(FREContext arg0, FREObject[] arg1) {
                FREObject result = null;
                AdMobExtensionContext extContext = (AdMobExtensionContext) arg0;
                //Activity activity = extContext.getActivity();
                String text = "";
                try
                {
                        text = arg1[0].getAsString();
                }
                catch (Exception e)
                {
                        //Log.e("AIR_ERROR", e.getMessage());
                }
                try
                {
                        result = FREObject.newObject( text + " " + Build.VERSION.RELEASE );
                }
                catch (Exception e) {
                        //Log.e("AIR_ERROR", e.getMessage());
                }
                extContext.dispatchStatusEventAsync("INFO", "end");
                return result;
        }
}

maintenant il faut récupérer le fichier "app-debug.aar" comme décrit plus haut dans "<AndroidStudioProjects>\AdMob\app\build\outputs\aar", avec winrar récupérer le fichier "classes.jar" à l'intérieur.
quand tu l'as récupéré on peut continuer

quelle version du SDK Air utilises-tu ?

#35 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 12:16 PM

C'est ok pour le fichier "classes.jar", pour la version SDK j'utilise Adobe AIR 32.0.

#36 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 12:28 PM

Tu ne peux plus publier ou mettre à jour des applications sur Google Play avec ?

#37 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 12:46 PM

???

#38 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 12:53 PM

Il faut télécharger Harman AIR SDK 33 qui supporte Android 64 bit.

#39 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 13:05 PM

ok, ça veux dire que je dois modifier mon sdk dans flash pour tout les nouvelles apk à publier sur Google Play ?

#40 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 13:34 PM

Tout à fait, par contre en version gratuite il y a un splashscreen Adobe Air et Harman au démarrage, sinon il faut payer.
Télécharge le SDK Harman, on va créer l'ANE en version 32.0 pour tester sans modifier Flash.

#41 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 15:45 PM

Si tu veux compiler en 64 bit (obligatoire depuis août) pour Android avec Adobe Animate :

il faut décommenter les lignes dans le fichier "adt.cfg"qui se trouve dans le dossier "lib" du SDK 33.0 (enlever le #)
#DefaultArch=armv8
#OverrideArch=armv8
en fait tu compile une fois avec les lignes commentées pour avoir la version 32 bit (pour les anciens appareils), puis tu décommentes les 2 lignes pour avoir la version 64 bit

attention si la version 32 bit a le numéro de version 1.000.110
la version 64 bit devra avoir la version 1.000.112 (incrémenté de 2)

ensuite dans Google Play on peut ajouter 2 apks par release

#42 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 16:26 PM

J'ai téléchargé Harman AIR SDK 33, avant de faire des bétises, faut -il le monter dans animate en remplacement de AIR 32.0 ou pas ?
Autre question sur ton dernier post, "2 apks par release" c'est google play qui sélectionnera la version en 32 ou 64 bits suivant l'appareil connecté ?

#43 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 16:28 PM

oui, c'est Google Play qui choisit
pour compiler l'ane ce n'est pas indispensable, pour tester non plus, pour publier l'apk sur Google Play oui
il suffit de repérer le chemin du dossier "bin" du sdk, où l'as-tu placé ?

#44 cortoh

  • Members
  • PipPipPipPipPipPipPipPip
  • 601 messages

Posté 02 February 2020 - 18:53 PM

Je laissé Harman AIR SDK 33 dans téléchargement, sinon tu ma donné trop d'infos d'un seul coup pol2095 j'ai perdu le fil :? .
Pour l'étape du ANE pour AdMob la dernière action était de récupérer le fichier "classes.jar" que j'ai mis dans un dossier en attente et télécharger Harman Air SDK33, je me suit arrêté là, j'attend tes instructions pour la suite.


Parallèlement, si je ne dis pas de bétises, je dois gérer le kit SDK d'Adobe AIr dans Animate et sélectionner Harman AIR SDK 33 qui sera le nouvel Air pour la publication de mes APKs que je pourrais éventuellement modifier en 32 ou 64 bits en modifiant le fichier "adt.cfg" comme tu me l'a expliqué.

#45 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1893 messages

Posté 02 February 2020 - 19:16 PM

on passe à la création de l'ane, il faut créer un swc pour communiquer avec les classes natives
on crée un dossier "ane_admob" par exemple sur le bureau
dans ce dossier on crée un dossier "src"
dans le dossier "src" on crée un dossier "com"
dans le dossier "com" on crée un dossier "google"
dans le dossier "google" on crée un dossier "ads"
dans le dossier "ads" on va créer 2 fichiers *.as :
- AdMob.as
package com.google.ads
{
        import flash.events.EventDispatcher;
        import flash.events.StatusEvent;
        import flash.external.ExtensionContext;

        public class AdMob extends EventDispatcher
        {
                private var extContext:ExtensionContext = null;

                public function AdMob()
                {
                        extContext = ExtensionContext.createExtensionContext("com.google.ads", null);
                        extContext.addEventListener(StatusEvent.STATUS, onStatus);
                }

                public function init(value:String):String
                {
                        return extContext.call("admob", value) as String;
                }

                private function onStatus(event:StatusEvent):void
                {
                        if (event.code == "INFO")
                        {
                                dispatchEvent( new AdMobEvent( AdMobEvent.INFO, event.level ) );
                        }
                }

                public function dispose():void
                {
                        extContext.removeEventListener(StatusEvent.STATUS, onStatus);
                        extContext.dispose();
                        extContext = null;
                }
        }
}

- AdMobEvent.as
package com.google.ads
{
        import flash.events.Event;
 
        public class AdMobEvent extends Event
        {
                public static const INFO:String = "info";
         
                public var message:String;
         
                public function AdMobEvent(type:String, message:String, bubbles:Boolean=false, cancelable:Boolean=false)
                {
                        super(type, bubbles, cancelable);
                        this.message = message;
                }
         
                override public function clone():Event
                {
                        return new AdMobEvent(type, this.message, bubbles, cancelable);
                }
         
                public override function toString():String
                {
                        return formatToString("AdMobEvent", "type", "message", "bubbles", "cancelable");
                }
        }
}

maintenant on retourne dans le dossier "ane_admob"
dans la barre de titre de l'explorateur windows on tape "cmd", l'invite de commande va se lancer
Image IPB

<AIRSDK_33_Harman>\bin\compc +configname=air -include-sources src -source-path src -output AdMob.swc
 
remplace <AIRSDK_33_Harman> par le chemin complet du sdk harman

le swc est créé, ouvre le avec winrar et extrait "library.swf" et met le dans "ane_admob"

place le fichier "classes.jar" dans "ane_admob" et renomme le en "AdMob.jar"

Image IPB

quand tu arrives ici, on pourra continuer



2 utilisateur(s) li(sen)t ce sujet

0 membre(s), 2 invité(s), 0 utilisateur(s) anonyme(s)