Appodeal + Amazon = app won't run due to "Google Play Services"

Hi folks.

I’ve recently implemented Appodeal but as a result I am no longer able to build working apps for Amazon, due to a “Corona: Developer Error”, notifying that Google Play Services has been included with a non-Google target (Amazon).

Google Play Services is not in the build file.  When I disable Appodeal the build works on Amazon as expected.  

I am using the BETA version of the Appodeal plugin.

Here’s the error: https://photos.app.goo.gl/yVKdF9Z6i5HijEHq6

settings = { splashScreen = { enable = false }, orientation = { default = "landscapeRight", supported = { "landscapeLeft", "landscapeRight", }, }, excludeFiles = { -- CARNAGE WANTS does not want any OGG files for market (amazon) as they were created for windows support only.... thus let's save the app size. We also only want the icons for our market all = { "\*.ogg" , "Launch.png" , "Launch@2x.png" , "Launch@3x.png" , "FireRabbitLaunchScreen.storyboardc" , "Images.xcassets" , "Icon-40.png" , "Icon-58.png" , "Icon-76.png" , "Icon-80.png" , "Icon-87.png" , "Icon-120.png" , "Icon-152.png" , "Icon-167.png" , "Icon-180.png" , "Icon-1024.png" , "carnageflexibles/horseHUD\*" , "carnageflexibles/swinventory\*" } }, plugins = { ["CoronaProvider.native.popup.social"] = { publisherId = "com.coronalabs", }, ["plugin.zip"] = { publisherId = "com.coronalabs" }, ["plugin.CoronaSplashControl"] = { publisherId = "com.coronalabs" }, -- Base ['plugin.appodeal.base'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.AmazonAds'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.GoogleAdMob'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.TwitterMoPub'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.StartApp'] = { publisherId = 'com.coronalabs' }, -- Interstitial ['plugin.appodeal.AdColony'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.AppLovin'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Chartboost'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.InMobi'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.IronSource'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Mobvista'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.MyTarget'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.MillenialMedia'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Ogury'] = { publisherId = 'com.coronalabs' }, -- Rewarded Video ['plugin.appodeal.Unity'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Vungle'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.Tapjoy'] = { publisherId = 'com.coronalabs' }, ["plugin.iap\_badger"] = { publisherId = "uk.co.happymongoose", }, ["plugin.amazon.iap"] = { publisherId = "com.coronalabs", }, }, android = { usesPermissions = { "android.permission.INTERNET", "android.permission.ACCESS\_NETWORK\_STATE", "android.permission.ACCESS\_COARSE\_LOCATION", "android.permission.GET\_ACCOUNTS", }, }, }

I saw others having this issue that resolved it by removing Flurry and Facebook, which I have, but it does nothing.

Please assist.

Cheers,

Chris

Just tried the non-BETA version and same issue.

Which of these plugins is using Google Play Services?  I thought Appodeal was advertised by Corona as fully supporting Amazon?

Cheers,

Fire

I’ve removed all Appodeal plugins but the base ones, and still no luck on Amazon.

Using build Corona build 3428, btw.

Here’s the build settings that doesn’t work.  Remember that if I remove reference to Appodeal entirely it DOES work.

settings = { splashScreen = { enable = false }, orientation = { default = "landscapeRight", supported = { "landscapeLeft", "landscapeRight", }, }, excludeFiles = { -- CARNAGE WANTS does not want any OGG files for market (amazon) as they were created for windows support only.... thus let's save the app size. We also only want the icons for our market all = { "\*.ogg" , "Launch.png" , "Launch@2x.png" , "Launch@3x.png" , "FireRabbitLaunchScreen.storyboardc" , "Images.xcassets" , "Icon-40.png" , "Icon-58.png" , "Icon-76.png" , "Icon-80.png" , "Icon-87.png" , "Icon-120.png" , "Icon-152.png" , "Icon-167.png" , "Icon-180.png" , "Icon-1024.png" , "carnageflexibles/horseHUD\*" , "carnageflexibles/swinventory\*" } }, plugins = { ["CoronaProvider.native.popup.social"] = { publisherId = "com.coronalabs", }, ["plugin.zip"] = { publisherId = "com.coronalabs" }, ["plugin.CoronaSplashControl"] = { publisherId = "com.coronalabs" }, -- Base ['plugin.appodeal.beta.base'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.AmazonAds'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.GoogleAdMob'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.TwitterMoPub'] = { publisherId = 'com.coronalabs' }, ['plugin.appodeal.beta.StartApp'] = { publisherId = 'com.coronalabs' }, ["plugin.iap\_badger"] = { publisherId = "uk.co.happymongoose", }, -- IN-APP PURCHASES (AMAZON) ["plugin.amazon.iap"] = { publisherId = "com.coronalabs", }, }, android = { usesPermissions = { "android.permission.INTERNET", "android.permission.ACCESS\_NETWORK\_STATE", "android.permission.WRITE\_EXTERNAL\_STORAGE", "android.permission.ACCESS\_COARSE\_LOCATION", "android.permission.GET\_ACCOUNTS", }, }, }

Perhaps this is the culprit:

        [‘plugin.appodeal.beta.GoogleAdMob’] = { publisherId = ‘com.coronalabs’ },

This set up worked for me as a couple of weeks ago:

--Appodeal Amazon ['plugin.appodeal.base'] = { publisherId = 'com.coronalabs', supportedPlatforms = {["android-kindle"] = true } }, ['plugin.appodeal.AmazonAds'] = { publisherId = 'com.coronalabs', supportedPlatforms = {["android-kindle"] = true } }, ['plugin.appodeal.TwitterMoPub'] = { publisherId = 'com.coronalabs', supportedPlatforms = {["android-kindle"] = true} }, ['plugin.appodeal.StartApp'] = { publisherId = 'com.coronalabs', supportedPlatforms = {["android-kindle"] = true } }, -- End of Base ['plugin.appodeal.InMobi'] = { publisherId = 'com.coronalabs', supportedPlatforms = {["android-kindle"] = true} }, ['plugin.appodeal.AppLovin'] = { publisherId = 'com.coronalabs', supportedPlatforms = {["android-kindle"] = true} }, ['plugin.appodeal.MillenialMedia'] = { publisherId = 'com.coronalabs', supportedPlatforms = {["android-kindle"] = true} }, ['plugin.appodeal.AdColony'] = { publisherId = 'com.coronalabs', supportedPlatforms = {["android-kindle"] = true} }, ['plugin.appodeal.Chartboost'] = { publisherId = 'com.coronalabs', supportedPlatforms = {["android-kindle"] = true} }, ['plugin.appodeal.IronSource'] = { publisherId = 'com.coronalabs', supportedPlatforms = {["android-kindle"] = true} },

Thanks, I’ll try it, but your own documentation (https://docs.coronalabs.com/plugin/appodeal/) states that the base section must be kept, and Appodeal STRONGLY recommends against disabling AdMob as they are tightly partnered with them and use them to deliver the majority of the ads.

Thanks, will give this a try!  It was actually your post that I was referencing when I said someone had success removing Facebook and Flurry on Amazon :slight_smile:

Hey, did you have to disable the ads on the Appodeal interface, or during init, for plugins you did NOT include?  For example, did you have to disable Facebook ads in your init code or on the Appodeal website because you did not include the Facebook plugin in your build.settings?

Hi Rob.  Still didn’t work.  Something else is including it.

Let me try and explain.

You have to have the base Appodeal plugin.  It has function calls that the API calls use. You must have this.

If you want to use AdMob, for instance, you have to include the AdMob Base. Then if you only want AdMob rewarded video, you can skip the banner and interstitial entries and only include the rewarded video plugin. Those ad type specific plugins depend on the provider’s base. It’s something like this:

appodeal base       admob base             admob banner             admob interstitial             admob rewarded video       inmobi base             inmobi banners etc.

You can see how the dependencies cascade from each other.  These also support the supportedPlatforms entries so you can conditionally load them based on platform:

 ['plugin.appodeal.beta.GoogleAdMob'] = { publisherId = 'com.coronalabs' , supportedPlatforms = "android" },

Rob

Thanks for explanation.  Can you please assist in determining which of Corona’s Appodeal plugins that we include in our build.settings is including the Google Play Services plugin, so that I can publish to Amazon targetting Kindle devices?  It wasn’t GoogleAdMob.

Is there somewhere in Corona documentation where this is detailed?  We should know when we reference a plugin what other plugins it may reference.  We can see this in Unity in the manifest.  Is there a way of determining this with Corona?

Rob, this is a Corona plugin issue.  I see others on the forum are having the same issue.

This build.settings does NOT work and shows the Corona error (only Appodeal base included):

 plugins = { ["CoronaProvider.native.popup.social"] = { publisherId = "com.coronalabs", }, ["plugin.zip"] = { publisherId = "com.coronalabs" }, ["plugin.CoronaSplashControl"] = { publisherId = "com.coronalabs" }, -- Base ['plugin.appodeal.beta.base'] = { publisherId = 'com.coronalabs' }, -- IAP Badger ["plugin.iap\_badger"] = { publisherId = "uk.co.happymongoose", }, -- IN-APP PURCHASES (AMAZON) ["plugin.amazon.iap"] = { publisherId = "com.coronalabs", }, },

This build.settings DOES work on Amazon (same as above, but Appodeal base is commented out):

 plugins = { ["CoronaProvider.native.popup.social"] = { publisherId = "com.coronalabs", }, ["plugin.zip"] = { publisherId = "com.coronalabs" }, ["plugin.CoronaSplashControl"] = { publisherId = "com.coronalabs" }, -- Base --['plugin.appodeal.beta.base'] = { publisherId = 'com.coronalabs' }, -- IAP Badger ["plugin.iap\_badger"] = { publisherId = "uk.co.happymongoose", }, -- IN-APP PURCHASES (AMAZON) ["plugin.amazon.iap"] = { publisherId = "com.coronalabs", }, },

Appodeal plugin does not work on Amazon, with Corona SDK build 2018.3428.  Beta or not.

Can you acknowledge and let us know if there is a solution, workaround, or fix in progress?

Hi there, guys!

When Appodeal first introduced their Android modular SDK, Amazon store build support was suspended. As of right now, there is no Amazon store Appodeal SDK modular build, so it’s not a _Corona plugin issue, _sadly, we can’t fully support Amazon store builds on a modular plugin, since Appodeal doesn’t have an SDK for that atm.

Appodeal team is already working on Amazon store Appodeal SDK modular build for quite some time, but they can’t give an ETA for now, I will update you on this.

Since some users gave a positive feedback on building for Amazon store just fine, we left that ability, instead of just putting a stub for Amazon builds, saying something like “You can’t build for Amazon store for now” and calling it a day. Right now Corona Appodeal modular plugin doesn’t support Amazon store builds, since we don’t even have an Appodeal SDK for that.

As of right now, we are trying to create some kind of a temporary solution, while Appodeal is working on an SDK, but don’t quote me on that. There’s not much we can do without Appodeal SDK for Amazon, as I’ve said.

Can I ask a link, where you read it? Not to be picky, but like, since Appodeal SDK for Amazon is not ready yet, we can’t provide support for Corona Appodeal modular plugin builds for Amazon store. Advertising that you’ve seen is misleading and we should remove it. But I don’t remember Corona advertising it in the first place, hence why a question about where did you got that info. Thanks in advance!

Since some users gave a positive feedback on building for Amazon store just fine, we left that ability, instead of just putting a stub for Amazon builds, 

Please don’t stub it out. I have been successful in building it most of the time that I have tried. It isn’t usually easy and sometimes it does not make sense why it works, but I have been able consistently.

I’ll try today and see if I can make it work. Maybe it broke with a recent change. But it doesn’t look like Corona has done in a change in recent months.

Thanks for update, karpovpw.

We very much want this plugin to work on Amazon.  Clearly it does not with recent builds.

We contacted Appodeal and they’re going to give us an update Monday.  

Corona is marketed as a cross-platform/market solution, so if a plugin doesn’t work on a market supported by Corona it should be indicated in the documentation.  I would not have spent a week adapting our own game engines to use the Appodeal plugin if I had known Amazon was not supported.  IMO that’s a big drawback that people should know before getting to the point they are building the app and testing it on device.  This goes for any plugin, not just Appodeal.  

Count me as a +1 looking for Amazon support with Appodeal.  If there’s something we can do to help make this happen please let us know.

Rabbit you said you do native builds?

We build for iOS, GooglePlay, and Amazon (including on Fire/Kindle devices).  Is targeting Kindle/Fire what you mean by native?

We used to build for Windows and Samsung but they’re not worth the time anymore.

I mean do you use the simulator to build or you Android Studio?

Simulator.  Didn’t know I could use Android Studio!

Yes, you can build with Android Studio. As a workaround let me see if I can get it to build with Appodeal on Amazon. I’ll report back. It is sort of a pain, but once you have it set up it works every time.