I am trying to update my app to move from the old Google Play Game Services to the new gpgs plugin. I am getting a module not found error when trying to load it.
V/Corona ( 2219): \> Class.forName: plugin.gpgs.LuaLoader W/dalvikvm( 2219): DexOpt: method is in an interface I/dalvikvm( 2219): Could not find method com.google.android.gms.common.api.PendingResult.setResultCallback, referenced from method plugin.gpgs.LuaLoader.getServerAuthCode W/dalvikvm( 2219): VFY: unable to resolve virtual method 605: Lcom/google/android/gms/common/api/PendingResult;.setResultCallback (Lcom/google/android/gms/common/api/ResultCallback;)V W/dalvikvm( 2219): VFY: rejecting opcode 0x6e at 0x004a W/dalvikvm( 2219): VFY: rejected Lplugin/gpgs/LuaLoader;.getServerAuthCode (Lcom/naef/jnlua/LuaState;)I W/dalvikvm( 2219): Verifier rejected class Lplugin/gpgs/LuaLoader; I/Corona ( 2219): WARNING: Could not load class 'plugin.gpgs.LuaLoader' W/System.err( 2219): java.lang.ClassNotFoundException: plugin.gpgs.LuaLoader W/System.err( 2219): at java.lang.Class.classForName(Native Method) W/System.err( 2219): at java.lang.Class.forName(Class.java:251) W/System.err( 2219): at java.lang.Class.forName(Class.java:216) W/System.err( 2219): at com.ansca.corona.NativeToJavaBridge.callLoadClass(NativeToJavaBridge.java:316) W/System.err( 2219): at com.ansca.corona.JavaToNativeShim.nativeResize(Native Method) W/System.err( 2219): at com.ansca.corona.JavaToNativeShim.resize(JavaToNativeShim.java:381) W/System.err( 2219): at com.ansca.corona.graphics.opengl.CoronaGLSurfaceView$CoronaRenderer.onSurfaceChanged(CoronaGLSurfaceView.java:378) W/System.err( 2219): at com.ansca.corona.graphics.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1612) W/System.err( 2219): at com.ansca.corona.graphics.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1378) W/System.err( 2219): Caused by: java.lang.VerifyError: plugin/gpgs/LuaLoader W/System.err( 2219): ... 9 more I/Corona ( 2219): ERROR: Runtime error I/Corona ( 2219): /Users/jenkins/slaveroot/workspace/Templates/label/android/platform/resources/init.lua:906: module 'plugin.gpgs' not found:resource (plugin.gpgs.lu) does not exist in archive I/Corona ( 2219): no field package.preload['plugin.gpgs'] I/Corona ( 2219): no file '(null)/plugin/gpgs.lua' I/Corona ( 2219): no file '(null)/plugin/gpgs.lua' I/Corona ( 2219): no file '/mnt/asec/com.sharkappsllc.HoppyNaut-1/lib/libplugin/gpgs.so' I/Corona ( 2219): no file './plugin/gpgs.so' I/Corona ( 2219): no file '(null)/plugin/gpgs.so' I/Corona ( 2219): no file '/mnt/asec/com.sharkappsllc.HoppyNaut-1/lib/libplugin.so' I/Corona ( 2219): no file './plugin.so' I/Corona ( 2219): no file '(null)/plugin.so' I/Corona ( 2219): no file '/mnt/asec/com.sharkappsllc.HoppyNaut-1/lib/libplugin.gpgs.so' I/Corona ( 2219): no file './plugin.gpgs.so' I/Corona ( 2219): no file '(null)/plugin.gpgs.so'
I made sure the plugin is active in the marketplace, but since this is my first time using it, there might be something else I am missing.
Here is the build.settings:
-- -- For more information on build.settings see the Corona SDK Build Guide at: -- http://docs.coronalabs.com/guide/distribution/buildSettings/index.html -- settings = { build = { -- leaves symbolic information in production (release) build neverStripDebugInfo = true }, orientation = { -- Supported values for orientation: -- portrait, portraitUpsideDown, landscapeLeft, landscapeRight default = "landscapeRight", supported = { "landscapeRight", "landscapeLeft" } }, android = { googlePlayGamesAppId = "952050824138", supportsTV = true, -- Android TV isGame = true, -- Android TV Game cagegorization --You can set your app to use a large heap by adding the largeHeap = true parameter. --For example, you might need to raise the max heap size on a particular device from --32 MB to 256 MB, allowing a Corona app to load 2048×2048 images. Note that this --setting is applicable only on Android 3.0 and higher. -- largeHeap = true, -- support 2048x2048 images mainIntentFilter = { categories = { "tv.ouya.intent.category.GAME", -- needed to show up in OUYA menu "android.intent.category.LEANBACK\_LAUNCHER", -- should be added when supportsTV=true }, actions = { "android.intent.action.MAIN" }, }, supportsScreens = { smallScreens = true, normalScreens = true, largeScreens = true, xlargeScreens = true, }, intentFilters = { actions = { "android.intent.action.VIEW" }, categories = { "android.intent.category.DEFAULT", "android.intent.category.BROWSABLE", }, data = { scheme = "hoppynaut" }, }, usesExpansionFile = false, -- needed for Google Play apps \>50mb usesPermissions = { "android.permission.INTERNET", "android.permission.WRITE\_EXTERNAL\_STORAGE", "android.permission.ACCESS\_NETWORK\_STATE", "com.android.vending.BILLING", "com.android.vending.CHECK\_LICENSE", "com.amazon.tv.permission.LAUNCHER\_SETTINGS" -- FIRE TV required to open web view -- Optional permission used to display current location via the GPS. -- "android.permission.ACCESS\_FINE\_LOCATION", -- Optional permission used to display current location via WiFi or cellular service. -- "android.permission.ACCESS\_COARSE\_LOCATION", }, usesFeatures = { -- If you set permissions "ACCESS\_FINE\_LOCATION" and "ACCESS\_COARSE\_LOCATION" above, -- then you might want to set up your app to not require location services as follows. -- Otherwise, devices that do not have location sevices (such as a GPS) will be unable -- to purchase this app in the app store. { name = "android.hardware.location", required = false }, { name = "android.hardware.location.gps", required = false }, { name = "android.hardware.location.network", required = false }, { name = "android.hardware.gamepad", required=false }, -- Android TV gamepad support }, }, -- android iphone = { iCloud = true, xcassets="Images.xcassets", plist = { ITSAppUsesNonExemptEncryption = false, -- tells Apple no non-exportable encryption used UIStatusBarHidden = false, UIPrerenderedIcon = true, -- set to false for "shine" overlay --UIApplicationExitsOnSuspend = true, -- uncomment to quit app on suspend UILaunchStoryboardName = "LaunchScreen", -- Required! -- NSLocationWhenInUseUsageDescription = "Device location is used to map nearby venues.", -- CFBundleShortVersionString = "1.0", -- override build number -- CFBundleVersion = "yyyy.mm.ddtime", -- override internal build number CFBundleDisplayName = "Hoppy Naut", CFBundleURLTypes = { { CFBundleURLSchemes = { "hoppynaut", } } }, UIAppFonts = { -- "TimKid.ttf", -- "d-puntillas-B-to-tiptoe.ttf", -- "d puntillas D to tiptoe.ttf", }, -- NSAppTransportSecurity necessary for non-SSL connections in iOS9+ NSAppTransportSecurity = { NSAllowsArbitraryLoads = true, -- need for ad providers }, --[[-- iOS app URL schemes: CFBundleURLTypes = { { CFBundleURLSchemes = { "fbXXXXXXXXXXXXXX", -- example scheme for facebook "coronasdkapp", -- example second scheme } } } --]] } }, -- iphone tvos = { iCloud = true, xcassets="Images.xcassets", plist = { ITSAppUsesNonExemptEncryption = false, -- tells Apple no non-exportable encryption used NSAppTransportSecurity = { NSAllowsArbitraryLoads = true, -- need for ad providers }, }, }, -- exclude files per platform excludeFiles = { -- all = { "\*secret.txt", "artwork/\*" }, all = { "Icon1024\*.png", "hoppynaut.iconset\*", "icon\_\*.png", "\*.sh", "doc/\*", "ITunesArtwork\*", "IconUnderground\*" }, iphone = { "Icon-\*dpi.png", "Icon-ouya\*", "Icon-win32\*", "Icon\*.icns", "Icon-tvos\*", "audio/\*.ogg", "audio/\*.mp3", "audio/\*.wav" }, tvos = { "Default\*.png", "Icon-\*dpi.png", "Icon-ouya\*", "Icon-win32\*", "Icon\*.icns", "audio/\*.ogg", "audio/\*.mp3", "audio/\*.wav" }, android = { "Icon.png", "Icon-win32\*", "Icon-osx\*", "Icon-tvos\*", "Icon\*.icns", "\*@2x.png", "\*@3x.png", "audio/\*.mp3", "audio/\*.m4a", "audio/\*.aac", "audio/\*.aif", "audio/\*.wav" }, osx = { "Default\*.png", "Icon-ouya\*", "Icon-\*dpi.png", "Icon-tvos\*", "Icon-win32\*", "\*@2x.png", "\*@3x.png", "audio/\*.ogg", "audio/\*.mp3", "audio/\*.wav" }, win32 = { "Default\*.png", "Icon-ouya\*", "Icon-\*dpi.png", "Icon-tvos\*", "Icon\*.icns", "\*@2x.png", "\*@3x.png", "audio/\*.mp3", "audio/\*.aif", "audio/\*.aac", "audio/\*.m4a" } }, -- PLUGINS plugins = { -- ADS and SHARING ["CoronaProvider.ads.vungle"] = { -- adds 3mb publisherId = "com.vungle", supportedPlatforms = { android=true, iphone=true } }, -- tvOS support dropped in 2017 -- ["plugin.applovin"] = -- { -- -- adds 1.1mb -- publisherId = "com.coronalabs", -- -- only in use for appletv because build fails on Android - too many plugins -- supportedPlatforms = { appletvos=true } -- }, -- GAME NETWORKS ["CoronaProvider.gameNetwork.apple"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true, ["iphone-sim"]=true } }, -- deprecated in Corona builds \> 2017.3005 -- ["plugin.google.play.services"] = -- also required for Flurry plug-in on Android -- { -- publisherId = "com.coronalabs", -- supportedPlatforms = { android=true, ["android-kindle"]=true } -- }, -- ["CoronaProvider.gameNetwork.google"] = -- { -- publisherId = "com.coronalabs", -- supportedPlatforms = { android=true } -- }, ["plugin.gpgs"] = { publisherId = "com.coronalabs", supportedPlatforms = { android=true, ["android-kindle"]=true } }, ["plugin.gamecircle"] = { publisherId = "COM\_INNOVATIVELEISURE", supportedPlatforms = { ["android-kindle"]=true } }, -- ANALYTICS ["plugin.flurry.analytics"] = { publisherId = "com.coronalabs", supportedPlatforms = { ["android-kindle"]=true, android=true, iphone=true } }, ["plugin.googleAnalytics"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true, android=true } }, -- also required by analytics, ads ["CoronaProvider.native.popup.social"] = { publisherId = "com.coronalabs", supportedPlatforms = { android=true, iphone=true } }, -- IAP ["plugin.google.iap.v3"] = { publisherId = "com.coronalabs", supportedPlatforms = { android=true } }, ["plugin.amazon.iap"] = { publisherId = "com.coronalabs", supportedPlatforms = { ["android-kindle"]=true } }, ["plugin.notifications"] = { publisherId = "com.coronalabs", supportedPlatforms = { ["android-kindle"]=true, android=true, iphone=true } }, -- iCloud storage added 1/8/2016 - for tvOS support ["plugin.iCloud"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true, appletvos=true, ["iphone-sim"]=true }, }, -- activity popups needed for social sharing in iOS 11 ["CoronaProvider.native.popup.activity"] = { publisherId = "com.coronalabs", supportedPlatforms = { iphone=true }, }, -- UNUSED FOR THIS APP -- ["plugin.fuse"] = -- { -- -- adds 10.1mb -- publisherId = "com.coronalabs" -- }, -- ["plugin.fuse.ads"] = -- { -- publisherId = "com.coronalabs" -- }, -- ["plugin.fbAudienceNetwork"] = -- { -- publisherId = "com.coronalabs", -- supportedPlatforms = { iphone=true, android=true, osx=true, ["win32-sim"]=true }, -- }, -- ["plugin.facebook.v4"] = -- { -- -- adds 1.7mb -- publisherId = "com.coronalabs" -- }, -- ["plugin.combre"] = -- { -- -- adds 22.9mb -- publisherId = "com.appsaholic", -- supportedPlatforms = { iphone=true, android=true, osx=true, win32=true } -- }, -- ["plugin.gameanalytics"] = -- { -- publisherId = "com.gameanalytics", -- }, -- ["plugin.advertisingId"] = -- { -- publisherId = "com.coronalabs" -- }, -- ["plugin.bit"] = -- { -- publisherId = "com.coronalabs" -- }, -- ["plugin.qrscanner"] = { -- publisherId = "com.spiralcodestudio", -- supportedPlatforms = { iphone=true, android=true, osx=true, ["win32-sim"]=true }, -- }, -- ["plugin.mwc"] = { -- publisherId = "com.xibalbastudios" -- multiply with carry RNG -- }, }, -- This table configures the desktop app window for Win32 and OS X: window = { -- Sets up how the window should be launched on startup (default is "normal"). -- Supports "normal", "minimized", "maximized", or "fullscreen". defaultMode = "normal", -- Sets the default launch width and height of the view/client area of the window. -- This is the region within the borders of the window that Corona renders to. -- Ideally, this should match or exceed your "config.lua" content width and height. defaultViewWidth = 800, defaultViewHeight = 450, -- Set the following to true to allow the end user to resize the window. -- If true, then you may need to handle Corona's "resize" event to re-layout your content. -- The window is not resizable by default; you must opt-in by setting this to true. resizable = true, -- These settings only apply if "resizable" (above) is set to true. -- Prevents the user from resizing the window to a size smaller than these values. -- This width and height is the region within the borders of the window. -- The width and height should be set to your "config.lua" file's content width and height. -- If settings are not specified, the window can be resized down to whatever the OS allows. minViewWidth = 800, minViewHeight = 450, -- Enables/disables the window's "close" button (enabled by default). -- If disabled, you must close the window in Lua via "native.requestExit()". -- Note that Corona does not currently provide an event when the close button is clicked. enableCloseButton = true, -- Enables/disables the window's minimize button (enabled by default). enableMinimizeButton = true, -- Enables/disables the window's maximize button (disabled by default). -- Note that the window will be resized when maximized and restored. -- If enabled, you may need to handle Corona's "resize" event to re-layout your content. enableMaximizeButton = true, -- Tells the runtime to suspend when the window is minimized (disabled by default). suspendWhenMinimized = true, -- Sets the window's title bar text to a localized string (no title bar text by default). -- Supports 2 letter ISO 639‐1 language codes (not case-sensitive). -- Supports optional 2 letter ISO 3166‐1 country codes (not case sensitive). -- Language and country codes must be separated by a dash (-). titleText = { -- The "default" text will be used if the system is using a language and/or -- country code not defined below. This serves as a fallback mechanism. default = "Hoppy Naut", -- This text is used on English language systems in the United States. -- Note that the country code is optional (used for regional purposes). ["en‐us"] = "Hoppy Naut", -- This text is used on English language systems in the United Kingdom. -- Note that the country code is optional (used for regional purposes). ["en‐gb"] = "Hoppy Naut", -- This text is used for all other English language systems. ["en"] = "Hoppy Naut", -- This text is used for all French language systems. ["fr"] = "Hoppy Naut", -- This text is used for all Spanish language systems. ["es"] = "Hoppy Naut", }, }, }
I am currently using build 2017.3158. If anyone spots anything odd or knows how to fix this error please let me know!
Best regards,
Tony