Comments (18)
@potholiday thank you for showing all lines in your bulldozer.spec file. I built your test app by myself and tried to run it on my android device. It works!
This means this problem comes from your android device setting I think.
sorry for less helpful advice for you.
from kivmob.
Thanks for trying. I will try to install it in different device and let you know the result
from kivmob.
Hi potholiday.
Your link show a sample for iOS but i think this KivMob has not supported that platform so far.
TEST_DEVICE_ID varies depending on the device where you run your test program. So you have to check the ID by yourself.
For APP_ID, we can get that on Google play console but this is for Android.
I hope my comment will help you.
from kivmob.
@superjellyfish Sorry my bad this is the link for android test ads https://developers.google.com/admob/android/test-ads#sample_ad_units , I have registered a APP_ID in admob I am doing testing in kivy so how should I get TEST_DEVICE_ID for that? any idea
from kivmob.
I'm not sure where you are working on.
But If you have a "real" device to run your app, you can use an ID checking tool you can find on Google play by searching "id checker".
If you use some emulators, also you can use tools described above I think.
from kivmob.
I am doing testing inside my ubuntu system with kivy alone and no emulators. Is TEST_DEVICE_ID a requirement for deploying apps to play store or its just for testing alone?
from kivmob.
@potholiday this is just for testing alone not for deploying. If you don't need any tests of showing ads, you can ignore this part.
from kivmob.
@superjellyfish I am trying to run this sample code; as I dont know the TEST_DEVICE_ID i commented out that line
from kivmob import KivMob
from kivy.app import App
from kivy.uix.button import Button
class KivMobTest(App):
def build(self):
ads = KivMob("ca-app-pub-MYAPPID") #my app id from admob
#ads.add_test_device("TEST_DEVICE_ID") #dont know so commented it out
ads.new_interstitial("ca-app-pub-3940256099942544/1033173712") #test id from google site
ads.request_interstitial()
return Button(text='Show Interstitial',
on_release= lambda a:ads.show_interstitial())
KivMobTest().run()
this returns no ad
from kivmob.
@potholiday now I'm away from my laptop and cannot remember precisely but I could see the test ad after built it with command "buildozer android release".
from kivmob.
Thank you for taking your time an explaining things. I was initially trying to avoide apk building using buildozer because I want to optimize the code with ads first and then to create executable. It seems I have to build the apk. Now the problem is this
requirements = kivy, hostpython2, android, kivmob
android.permissions = INTERNET, ACCESS_NETWORK_STATE
android.p4a_dir = # dir/to/python-for-android-admob/
android.bootstrap = sdl2-admob
I changed all the parameters in my buildozer spec except android.p4a_dir
, I dont have any such parameters in my buildozer spec but I have p4a.source_dir
is this both same. Then where is this location /dir/to/python-for-android-admob/
and how to find it. I have kivy installed but not python-for-android
from kivmob.
Don't you copy python-for-android-admob from this repository? You should copy it to your working directory for this app and specify it's path.
from kivmob.
Sorry for the late reply, I was carrying out some work. Now I installed python-for-android-admob
in my app directory and made an apk using earlier python code. These are the buildozer spec changes I carried out.
requirements = kivy, hostpython2, android, kivmob
android.permissions = INTERNET, ACCESS_NETWORK_STATE
p4a.source_dir =./python-for-android-admob
p4a.bootstrap = sdl2-admob
The app compiled to apk and installed it in my android device without any error. But when I tried to open the app in my device its saying cant retrieve private data
and not opening the app.
from kivmob.
This doesn't look a problem of KivMob. Problem on device setting itself or other line in buildozer.spec, I've never met this problem though.
from kivmob.
Do I post my whole buildozer spec here. So that you can tell me what went wrong
This is my spec file
[app]
# (str) Title of your application
title = My Application
# (str) Package name
package.name = myapp
# (str) Package domain (needed for android/ios packaging)
package.domain = org.test
# (str) Source code where the main.py live
source.dir = .
# (list) Source files to include (let empty to include all the files)
source.include_exts = py,png,jpg,kv,atlas
# (list) List of inclusions using pattern matching
#source.include_patterns = assets/*,images/*.png
# (list) Source files to exclude (let empty to not exclude anything)
#source.exclude_exts = spec
# (list) List of directory to exclude (let empty to not exclude anything)
#source.exclude_dirs = tests, bin
# (list) List of exclusions using pattern matching
#source.exclude_patterns = license,images/*/*.jpg
# (str) Application versioning (method 1)
version = 0.1
# (str) Application versioning (method 2)
# version.regex = __version__ = ['"](.*)['"]
# version.filename = %(source.dir)s/main.py
# (list) Application requirements
# comma seperated e.g. requirements = sqlite3,kivy
requirements = kivy,hostpython2, android, kivmob
# (str) Custom source folders for requirements
# Sets custom source for any requirements with recipes
# requirements.source.kivy = ../../kivy
# (list) Garden requirements
#garden_requirements =
# (str) Presplash of the application
#presplash.filename = %(source.dir)s/data/presplash.png
# (str) Icon of the application
#icon.filename = %(source.dir)s/data/icon.png
# (str) Supported orientation (one of landscape, portrait or all)
orientation = portrait
# (list) List of service to declare
#services = NAME:ENTRYPOINT_TO_PY,NAME2:ENTRYPOINT2_TO_PY
#
# OSX Specific
#
#
# author = © Copyright Info
# change the major version of python used by the app
osx.python_version = 3
# Kivy version to use
osx.kivy_version = 1.9.1
#
# Android specific
#
# (bool) Indicate if the application should be fullscreen or not
fullscreen = 0
# (string) Presplash background color (for new android toolchain)
# Supported formats are: #RRGGBB #AARRGGBB or one of the following names:
# red, blue, green, black, white, gray, cyan, magenta, yellow, lightgray,
# darkgray, grey, lightgrey, darkgrey, aqua, fuchsia, lime, maroon, navy,
# olive, purple, silver, teal.
#android.presplash_color = #FFFFFF
# (list) Permissions
android.permissions = INTERNET, ACCESS_NETWORK_STATE
# (int) Android API to use
#android.api = 19
# (int) Minimum API required
#android.minapi = 9
# (int) Android SDK version to use
#android.sdk = 20
# (str) Android NDK version to use
#android.ndk = 9c
# (bool) Use --private data storage (True) or --dir public storage (False)
#android.private_storage = True
# (str) Android NDK directory (if empty, it will be automatically downloaded.)
#android.ndk_path =
# (str) Android SDK directory (if empty, it will be automatically downloaded.)
#android.sdk_path =
# (str) ANT directory (if empty, it will be automatically downloaded.)
#android.ant_path =
# (bool) If True, then skip trying to update the Android sdk
# This can be useful to avoid excess Internet downloads or save time
# when an update is due and you just want to test/build your package
# android.skip_update = False
# (str) Android entry point, default is ok for Kivy-based app
#android.entrypoint = org.renpy.android.PythonActivity
# (list) Pattern to whitelist for the whole project
#android.whitelist =
# (str) Path to a custom whitelist file
#android.whitelist_src =
# (str) Path to a custom blacklist file
#android.blacklist_src =
# (list) List of Java .jar files to add to the libs so that pyjnius can access
# their classes. Don't add jars that you do not need, since extra jars can slow
# down the build process. Allows wildcards matching, for example:
# OUYA-ODK/libs/*.jar
#android.add_jars = foo.jar,bar.jar,path/to/more/*.jar
# (list) List of Java files to add to the android project (can be java or a
# directory containing the files)
#android.add_src =
# (list) Android AAR archives to add (currently works only with sdl2_gradle
# bootstrap)
#android.add_aars =
# (list) Gradle dependencies to add (currently works only with sdl2_gradle
# bootstrap)
#android.gradle_dependencies =
# (str) python-for-android branch to use, defaults to master
#p4a.branch = stable
# (str) OUYA Console category. Should be one of GAME or APP
# If you leave this blank, OUYA support will not be enabled
#android.ouya.category = GAME
# (str) Filename of OUYA Console icon. It must be a 732x412 png image.
#android.ouya.icon.filename = %(source.dir)s/data/ouya_icon.png
# (str) XML file to include as an intent filters in <activity> tag
#android.manifest.intent_filters =
# (list) Android additionnal libraries to copy into libs/armeabi
#android.add_libs_armeabi = libs/android/*.so
#android.add_libs_armeabi_v7a = libs/android-v7/*.so
#android.add_libs_x86 = libs/android-x86/*.so
#android.add_libs_mips = libs/android-mips/*.so
# (bool) Indicate whether the screen should stay on
# Don't forget to add the WAKE_LOCK permission if you set this to True
#android.wakelock = False
# (list) Android application meta-data to set (key=value format)
#android.meta_data =
# (list) Android library project to add (will be added in the
# project.properties automatically.)
#android.library_references =
# (str) Android logcat filters to use
#android.logcat_filters = *:S python:D
# (bool) Copy library instead of making a libpymodules.so
#android.copy_libs = 1
# (str) The Android arch to build for, choices: armeabi-v7a, arm64-v8a, x86
android.arch = armeabi-v7a
#
# Python for android (p4a) specific
#
# (str) python-for-android git clone directory (if empty, it will be automatically cloned from github)
p4a.source_dir =./python-for-android-admob
# (str) The directory in which python-for-android should look for your own build recipes (if any)
#p4a.local_recipes =
# (str) Filename to the hook for p4a
#p4a.hook =
# (str) Bootstrap to use for android builds
p4a.bootstrap = sdl2-admob
#
# iOS specific
#
# (str) Path to a custom kivy-ios folder
#ios.kivy_ios_dir = ../kivy-ios
# (str) Name of the certificate to use for signing the debug version
# Get a list of available identities: buildozer ios list_identities
#ios.codesign.debug = "iPhone Developer: <lastname> <firstname> (<hexstring>)"
# (str) Name of the certificate to use for signing the release version
#ios.codesign.release = %(ios.codesign.debug)s
[buildozer]
# (int) Log level (0 = error only, 1 = info, 2 = debug (with command output))
log_level = 1
# (int) Display warning if buildozer is run as root (0 = False, 1 = True)
warn_on_root = 1
# (str) Path to build artifact storage, absolute or relative to spec file
# build_dir = ./.buildozer
# (str) Path to build output (i.e. .apk, .ipa) storage
# bin_dir = ./bin
# -----------------------------------------------------------------------------
# List as sections
#
# You can define all the "list" as [section:key].
# Each line will be considered as a option to the list.
# Let's take [app] / source.exclude_patterns.
# Instead of doing:
#
#[app]
#source.exclude_patterns = license,data/audio/*.wav,data/images/original/*
#
# This can be translated into:
#
#[app:source.exclude_patterns]
#license
#data/audio/*.wav
#data/images/original/*
#
# -----------------------------------------------------------------------------
# Profiles
#
# You can extend section / key with a profile
# For example, you want to deploy a demo version of your application without
# HD content. You could first change the title to add "(demo)" in the name
# and extend the excluded directories to remove the HD content.
#
#[app@demo]
#title = My Application (demo)
#
#[app:source.exclude_patterns@demo]
#images/hd/*
#
# Then, invoke the command line with the "demo" profile:
#
#buildozer --profile demo android debug
python code
from kivmob import KivMob
from kivy.app import App
from kivy.uix.button import Button
class KivMobTest(App):
def build(self):
ads = KivMob("ca-app-pub-somerrandomnum~somerrandomnum")
#ads.add_test_device("*")
ads.new_interstitial("ca-app-pub-3940256099942544/1033173712")
ads.request_interstitial()
return Button(text='Show Interstitial',size_hint_y=0.2,
on_release= lambda a:ads.show_interstitial())
KivMobTest().run()
from kivmob.
@potholiday Could you post the full error message here? Also, if the ad does not display immediately after pressing the button, wait a few seconds for the ad to load before trying again. The code in the demo folder uses is_interstitial_loaded
to check this.
Additionally, TEST_DEVICE_ID is a value specific to your android device and can be found in the logcat output. This is used to trigger test ads during development to prevent unnecessarily charging advertisers. AdMob has policies regarding this on their website, which I highly recommend reading. You can view your Android application logcat output using the following command:
adb logcat
from kivmob.
@superjellyfish @MichaelStott I was searching for the solution for my problem. It seems this is caused by python-for-android . In my device I have less storage capacity that may be the reason which causes this problem . Currently I am searching for some other android devices.
@MichaelStott Thank you for this project and I have this doubt. Is it necessaary to build an apk for testing/running ads with kivmob? Cant we run it from python file itself while development similar to our kivy apps .
from kivmob.
@potholiday It is necessary to build an apk. The project uses the original Google AdMob SDK, which only runs on mobile platforms (Android, iOS). python-for-android-admob provides the backend which mediates requests from the KivMob module to the AdMob SDK. That is why KivMob will only output log messages when running on a desktop environment.
Because this is an issue with python-for-android and not KivMob, I'm going to close this issue for now. Let me know if you encounter any other problems and good luck!
from kivmob.
Does this project support Py3?
Do we skip hostpython2 in buildozer.spec below while using python3crystax for python3?
requirements = kivy,hostpython2, android, kivmob
Please advise if we have to do anything more when compiling for py3..
from kivmob.
Related Issues (20)
- Importing KivMob twice HOT 11
- android.gradle_dependencies and API 33 HOT 3
- gradlew failed issue
- Interstitial ad and Banner ad don't show up HOT 10
- Multiple Logcat Errors (Kimob=Master, Api 33, Ver=com.google.firebase:firebase-ads:21.4.0) HOT 6
- I can't add KivMob HOT 2
- Interstitial Ads Not Working HOT 5
- .
- Google Play Console Ad_Id HOT 4
- [Feature Request]
- 'AndroidBridge' object has no attribute '_interstitial' HOT 14
- 'AndroidBridge' object has no attribute '_interstitial' HOT 3
- [WARNING] [KivMob ] Ads will not be shown.
- AttributeError: 'AndroidBridge' object has no attribute '_test_devices' HOT 1
- Buildozer gradlew failed HOT 2
- [Modded Kivmob] WORKS HOT 3
- How to make sure ad requests are not made when the screen is off? [Banner]
- README feature
- Ads not displaying
- KivMob banner ad doesn't show up HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from kivmob.