studio smart google java android libgdx admob

smart - java-libgdx build.gradle no es lo mismo para AdMob



libgdx admob (1)

Estoy construyendo una aplicación para android y usando libGdx, revisé un millón de tutoriales sobre cómo agregar Admob, cada solicitud de tutorial para ajustar el archivo build.gradle pero mi archivo no es el mismo que ellos, tienen dependencias y cosas diferentes allí, alguna idea de cómo agregar admob en mi build.gradle?

el android build.gradle:

android { buildToolsVersion "25.0.2" compileSdkVersion 25 sourceSets { main { manifest.srcFile ''AndroidManifest.xml'' java.srcDirs = [''src''] aidl.srcDirs = [''src''] renderscript.srcDirs = [''src''] res.srcDirs = [''res''] assets.srcDirs = [''assets''] jniLibs.srcDirs = [''libs''] } instrumentTest.setRoot(''tests'') } packagingOptions { exclude ''META-INF/robovm/ios/robovm.xml'' } defaultConfig { applicationId "com.badlogic.drop" minSdkVersion 8 targetSdkVersion 25 } } // called every time gradle gets executed, takes the native dependencies of // the natives configuration, and extracts them to the proper libs/ folders // so they get packed with the APK. task copyAndroidNatives() { file("libs/armeabi/").mkdirs(); file("libs/armeabi-v7a/").mkdirs(); file("libs/arm64-v8a/").mkdirs(); file("libs/x86_64/").mkdirs(); file("libs/x86/").mkdirs(); configurations.natives.files.each { jar -> def outputDir = null if(jar.name.endsWith("natives-arm64-v8a.jar")) outputDir = file("libs/arm64-v8a") if(jar.name.endsWith("natives-armeabi-v7a.jar")) outputDir = file("libs/armeabi-v7a") if(jar.name.endsWith("natives-armeabi.jar")) outputDir = file("libs/armeabi") if(jar.name.endsWith("natives-x86_64.jar")) outputDir = file("libs/x86_64") if(jar.name.endsWith("natives-x86.jar")) outputDir = file("libs/x86") if(outputDir != null) { copy { from zipTree(jar) into outputDir include "*.so" } } } } task run(type: Exec) { def path def localProperties = project.file("../local.properties") if (localProperties.exists()) { Properties properties = new Properties() localProperties.withInputStream { instr -> properties.load(instr) } def sdkDir = properties.getProperty(''sdk.dir'') if (sdkDir) { path = sdkDir } else { path = "$System.env.ANDROID_HOME" } } else { path = "$System.env.ANDROID_HOME" } def adb = path + "/platform-tools/adb" commandLine "$adb", ''shell'', ''am'', ''start'', ''-n'', ''com.badlogic.drop/com.badlogic.drop.AndroidLauncher'' } // sets up the Android Eclipse project, using the old Ant based build. eclipse { // need to specify Java source sets explicitly, SpringSource Gradle Eclipse plugin // ignores any nodes added in classpath.file.withXml sourceSets { main { java.srcDirs "src", ''gen'' } } jdt { sourceCompatibility = 1.6 targetCompatibility = 1.6 } classpath { plusConfigurations += [ project.configurations.compile ] containers ''com.android.ide.eclipse.adt.ANDROID_FRAMEWORK'', ''com.android.ide.eclipse.adt.LIBRARIES'' } project { name = appName + "-android" natures ''com.android.ide.eclipse.adt.AndroidNature'' buildCommands.clear(); buildCommand "com.android.ide.eclipse.adt.ResourceManagerBuilder" buildCommand "com.android.ide.eclipse.adt.PreCompilerBuilder" buildCommand "org.eclipse.jdt.core.javabuilder" buildCommand "com.android.ide.eclipse.adt.ApkBuilder" } } // sets up the Android Idea project, using the old Ant based build. idea { module { sourceDirs += file("src"); scopes = [ COMPILE: [plus:[project.configurations.compile]]] iml { withXml { def node = it.asNode() def builder = NodeBuilder.newInstance(); builder.current = node; builder.component(name: "FacetManager") { facet(type: "android", name: "Android") { configuration { option(name: "UPDATE_PROPERTY_FILES", value:"true") } } } } } } }

y el núcleo build.gradle:

apply plugin: "java" sourceCompatibility = 1.6 [compileJava, compileTestJava]*.options*.encoding = ''UTF-8'' sourceSets.main.java.srcDirs = [ "src/" ] eclipse.project { name = appName + "-core" }

y finalmente el escritorio build.gradle:

apply plugin: "java" sourceCompatibility = 1.6 sourceSets.main.java.srcDirs = [ "src/" ] project.ext.mainClassName = "com.badlogic.drop.desktop.DesktopLauncher" project.ext.assetsDir = new File("../android/assets"); task run(dependsOn: classes, type: JavaExec) { main = project.mainClassName classpath = sourceSets.main.runtimeClasspath standardInput = System.in workingDir = project.assetsDir ignoreExitValue = true } task dist(type: Jar) { from files(sourceSets.main.output.classesDir) from files(sourceSets.main.output.resourcesDir) from {configurations.compile.collect {zipTree(it)}} from files(project.assetsDir); manifest { attributes ''Main-Class'': project.mainClassName } } dist.dependsOn classes eclipse { project { name = appName + "-desktop" linkedResource name: ''assets'', type: ''2'', location: ''PARENT-1-PROJECT_LOC/android/assets'' } } task afterEclipseImport(description: "Post processing after project generation", group: "IDE") { doLast { def classpath = new XmlParser().parse(file(".classpath")) new Node(classpath, "classpathentry", [ kind: ''src'', path: ''assets'' ]); def writer = new FileWriter(file(".classpath")) def printer = new XmlNodePrinter(new PrintWriter(writer)) printer.setPreserveWhitespace(true) printer.print(classpath) } }


Olvídese de build.gradle de escritorio y módulo principal.

Es de esperar que estés utilizando la integración de Firebase Admob en lugar de la integración heredada de AdMob, así que primero debes integrar Firebase y AdMob Ad.

Agregue esta parte al módulo build.gradle of android.

dependencies { compile ''com.google.firebase:firebase-core:10.2.1'' compile ''com.google.firebase:firebase-ads:10.2.1'' compile ''com.android.support:support-annotations:25.3.1'' } apply plugin: ''com.google.gms.google-services''

En su archivo build.gradle del proyecto raíz

Agregue como dependencias en buildscript para la integración de Firebase.

classpath ''com.google.gms:google-services:3.0.0''

Cambios en AndroidManifest.xml

<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" /> <activity android:name="com.google.android.gms.ads.AdActivity" android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:theme="@android:style/Theme.Translucent" />

Comience a Codificar parte, cree vista después de la inicialización de MobileAds.

MobileAds.initialize(activity.getApplicationContext(), APP_ID); initView(); protected void initView(){ // Create and setup the AdMobHelper view topView = new AdView(activity); topView.setAdSize(AdSize.BANNER); topView.setAdUnitId(TopAdUnitId); bottomView = new AdView(activity); bottomView.setAdSize(AdSize.BANNER); bottomView.setAdUnitId(BottomAdUnitId); AdRequest.Builder adRequestBuilder = new AdRequest.Builder(); //adRequestBuilder.addTestDevice(AdRequest.DEVICE_ID_EMULATOR); topView.loadAd(adRequestBuilder.build()); AdRequest.Builder adRequestBuilder1 = new AdRequest.Builder(); adRequestBuilder1.addTestDevice(AdRequest.DEVICE_ID_EMULATOR); bottomView.loadAd(adRequestBuilder1.build()); crateInterestial(); // Do the stuff that initialize() would do for you callForInitializeForView(); }

Puede verificar este proyecto para la integración de anuncios (AdMob con / sin Firebase, RevMob, Chartboost, StartApp ...) con LibGDX.