title: Latest Google Services (v. 21) ANE + AIRMobile native extension failed resolving interface
body: <p>I am trying to add latest Google Plus (<strong>google-play-services.jar</strong>) support to an Air mobile app by creating a native extension. 
  The code doesn't have compile-time errors or warnings, the JAR is exported fine, ANE is built and included in project without problems,
  but when I run my apk, it crushes. In device-crush-logs I can see following error:</p>
  
  <pre><code>12-04 11:08:18.602 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.602 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  </code></pre>
  
  <p>At first I tried to build an extension from empty project, all by myself.
  After that I found an extension with open source at github github.com/alextel69/google-play-game-services-ane/
  I build that extension and include in my AIR mobile project and it works fine, but the <strong>google-play-services.jar</strong> is too old and doesn't contain classes I need,
  so i tried to replace it's <strong>libs/google-play-services.jar</strong> and <strong>libs/android-support-v4.jar</strong> with the newest ones that I got in my Android SDK Manager.
  And that caused the above errors.
  In this way, I did not modify a single code line, or ANT's build.xml, or anything else, I just switched old <strong>android-support-v4.jar</strong> + <strong>google-play-services.jar</strong> (works fine!) with newer <strong>android-support-v4.jar</strong> + <strong>google-play-services.jar</strong> (fails). I mean the ANE is built fine, even the extension is created and some of it's methods work and return values, but as I referense to google-service code, I get that strange error.</p>
  
  <p>Though interfaces in both old and new JARs seem to be equal: <em>dl.dropboxusercontent.com/u/13839683/ane/jars_compare.png</em> .</p>
  
  <p>By the way, these errors seem to appear in AIR mobile only. Pure native application using these android-support-v4.jar + google-play-services.jar have no problems.</p>
  
  <p>Here is a brief scheme of my native extension:
  <em>dl.dropboxusercontent.com/u/13839683/ane/scheme.png</em></p>
  
  <p>And here is a complete device log from extension's birth and till it's crush :</p>
  
  <pre><code>12-04 11:08:18.602 23195 23195 I ~ANE~   : ------------- INITIALIZE MY EXTENSION -------------
  12-04 11:08:18.602 23195 23195 I ~ANE~   : ------------- CREATE MY EXTENSION -------------
  12-04 11:08:18.602 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.602 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.602 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.602 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.602 23195 23195 I dalvikvm: Could not find method com.google.example.games.basegameutils.GameHelper.onStop, referenced from method com.google.api.games.Context.dispose
  12-04 11:08:18.602 23195 23195 W dalvikvm: VFY: unable to resolve virtual method 6754: Lcom/google/example/games/basegameutils/GameHelper;.onStop ()V
  12-04 11:08:18.602 23195 23195 D dalvikvm: VFY: replacing opcode 0x6e at 0x0002
  12-04 11:08:18.602 23195 23195 W dalvikvm: VFY: unable to resolve static field 2701 (Leaderboards) in Lcom/google/android/gms/games/Games;
  12-04 11:08:18.602 23195 23195 D dalvikvm: VFY: replacing opcode 0x62 at 0x0000
  12-04 11:08:18.612 23195 23195 W dalvikvm: VFY: unable to resolve static field 2700 (Achievements) in Lcom/google/android/gms/games/Games;
  12-04 11:08:18.612 23195 23195 D dalvikvm: VFY: replacing opcode 0x62 at 0x0000
  12-04 11:08:18.612 23195 23195 W dalvikvm: VFY: unable to resolve static field 2700 (Achievements) in Lcom/google/android/gms/games/Games;
  12-04 11:08:18.612 23195 23195 D dalvikvm: VFY: replacing opcode 0x62 at 0x0000
  12-04 11:08:18.612 23195 23195 W dalvikvm: VFY: unable to resolve static field 2700 (Achievements) in Lcom/google/android/gms/games/Games;
  12-04 11:08:18.612 23195 23195 D dalvikvm: VFY: replacing opcode 0x62 at 0x0000
  12-04 11:08:18.612 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.612 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.612 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.612 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.612 23195 23195 I dalvikvm: Could not find method com.google.example.games.basegameutils.GameHelper.beginUserInitiatedSignIn, referenced from method com.google.api.games.Context$beginUserInitiatedSignIn.call
  12-04 11:08:18.612 23195 23195 W dalvikvm: VFY: unable to resolve virtual method 6715: Lcom/google/example/games/basegameutils/GameHelper;.beginUserInitiatedSignIn ()V
  12-04 11:08:18.612 23195 23195 D dalvikvm: VFY: replacing opcode 0x6e at 0x0009
  12-04 11:08:18.612 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.612 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.612 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.612 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.612 23195 23195 I dalvikvm: Could not find method com.google.example.games.basegameutils.GameHelper.signOut, referenced from method com.google.api.games.Context$signOut.call
  12-04 11:08:18.612 23195 23195 W dalvikvm: VFY: unable to resolve virtual method 6767: Lcom/google/example/games/basegameutils/GameHelper;.signOut ()V
  12-04 11:08:18.612 23195 23195 D dalvikvm: VFY: replacing opcode 0x6e at 0x0009
  12-04 11:08:18.612 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.612 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.612 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.612 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.622 23195 23195 I dalvikvm: Could not find method com.google.example.games.basegameutils.GameHelper.isSignedIn, referenced from method com.google.api.games.Context$isSignedIn.call
  12-04 11:08:18.622 23195 23195 W dalvikvm: VFY: unable to resolve virtual method 6740: Lcom/google/example/games/basegameutils/GameHelper;.isSignedIn ()Z
  12-04 11:08:18.622 23195 23195 D dalvikvm: VFY: replacing opcode 0x6e at 0x000a
  12-04 11:08:18.622 23195 23195 I ~ANE~   : Context :: testANE.call
  12-04 11:08:18.622 23195 23195 I ~ANE~   : Context :: promptUserToSignInOnStartup.call
  12-04 11:08:18.622 23195 23195 I ~ANE~~  : Context :: Extension.autoSignIn = true
  12-04 11:08:18.622 23195 23195 I ~ANE~   : Context :: start.call
  12-04 11:08:18.622 23195 23195 I ~ANE~~  : Context :: start.call[END]
  12-04 11:08:18.622   480 26966 I ActivityManager: START u0 {cmp=air.com.sq.kitchen/com.google.api.games.SignInActivity} from pid 23195
  12-04 11:08:18.712 23195 23195 W dalvikvm: VFY: unable to resolve virtual method 6728: Lcom/google/example/games/basegameutils/GameHelper;.getInvitationId ()Ljava/lang/String;
  12-04 11:08:18.712 23195 23195 D dalvikvm: VFY: replacing opcode 0x6e at 0x0002
  12-04 11:08:18.712 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.712 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.712 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.712 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.712 23195 23195 I dalvikvm: Could not find method com.google.example.games.basegameutils.GameHelper.getSignInError, referenced from method com.google.example.games.basegameutils.BaseGameActivity.getSignInError
  12-04 11:08:18.712 23195 23195 W dalvikvm: VFY: unable to resolve virtual method 6731: Lcom/google/example/games/basegameutils/GameHelper;.getSignInError ()Lcom/google/example/games/basegameutils/GameHelper$SignInFailureReason;
  12-04 11:08:18.712 23195 23195 D dalvikvm: VFY: replacing opcode 0x6e at 0x0002
  12-04 11:08:18.732 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.732 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.742 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.742 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.762 23195 23195 D dalvikvm: VFY: replacing opcode 0x6e at 0x0002
  12-04 11:08:18.762 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.762 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.762 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.762 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.762 23195 23195 I dalvikvm: Could not find method com.google.example.games.basegameutils.GameHelper.makeSimpleDialog, referenced from method com.google.example.games.basegameutils.BaseGameActivity.showAlert
  12-04 11:08:18.762 23195 23195 W dalvikvm: VFY: unable to resolve virtual method 6746: Lcom/google/example/games/basegameutils/GameHelper;.makeSimpleDialog (Ljava/lang/String;Ljava/lang/String;)Landroid/app/Dialog;
  12-04 11:08:18.762 23195 23195 D dalvikvm: VFY: replacing opcode 0x6e at 0x0002
  12-04 11:08:18.762 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.762 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.762 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.762 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.762 23195 23195 I dalvikvm: Could not find method com.google.example.games.basegameutils.GameHelper.signOut, referenced from method com.google.example.games.basegameutils.BaseGameActivity.signOut
  12-04 11:08:18.762 23195 23195 W dalvikvm: VFY: unable to resolve virtual method 6767: Lcom/google/example/games/basegameutils/GameHelper;.signOut ()V
  12-04 11:08:18.762 23195 23195 D dalvikvm: VFY: replacing opcode 0x6e at 0x0002
  12-04 11:08:18.762 23195 23195 I dalvikvm: Failed resolving Lcom/google/example/games/basegameutils/GameHelper; interface 940 'Lcom/google/android/gms/common/api/GoogleApiClient$ConnectionCallbacks;'
  12-04 11:08:18.762 23195 23195 W dalvikvm: Link of class 'Lcom/google/example/games/basegameutils/GameHelper;' failed
  12-04 11:08:18.762 23195 23195 D dalvikvm: DexOpt: unable to opt direct call 0x1a39 at 0x08 in Lcom/google/example/games/basegameutils/BaseGameActivity;.getGameHelper
  12-04 11:08:18.762 23195 23195 I ~ANE~   : SignInActivity :: onCreate
  12-04 11:08:18.762 23195 23195 D AndroidRuntime: Shutting down VM
  12-04 11:08:18.762 23195 23195 W dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x416dbba8)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime: FATAL EXCEPTION: main
  12-04 11:08:18.762 23195 23195 E AndroidRuntime: Process: air.com.sq.kitchen, PID: 23195
  12-04 11:08:18.762 23195 23195 E AndroidRuntime: java.lang.NoClassDefFoundError: com.google.example.games.basegameutils.GameHelper
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at com.google.example.games.basegameutils.BaseGameActivity.getGameHelper(Unknown Source)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at com.google.example.games.basegameutils.BaseGameActivity.onCreate(Unknown Source)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at com.google.api.games.SignInActivity.onCreate(Unknown Source)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at android.app.Activity.performCreate(Activity.java:5231)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at android.app.ActivityThread.access$800(ActivityThread.java:135)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:102)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:136)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:5001)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at java.lang.reflect.Method.invokeNative(Native Method)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Method.java:515)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
  12-04 11:08:18.762 23195 23195 E AndroidRuntime:        at dalvik.system.NativeStart.main(Native Method)
  12-04 11:08:18.782   480 14720 W ActivityManager:   Force finishing activity air.com.sq.kitchen/com.google.api.games.SignInActivity
  12-04 11:08:18.782   480 14720 W ActivityManager:   Force finishing activity air.com.sq.kitchen/.AppEntry
  </code></pre>
  
  <hr>
  
  <h2>inb4</h2>
  
  <hr>
  
  <p>I discovered this issue very thoroughly and found several simular threads, but none of them resolved my problem</p>
  
  <p>1) The solution of <a href="https://stackoverflow.com/questions/22956979/google-plus-ane-air-native-extension-failed-resolving-interface">Google plus ane air native extension failed resolving interface</a></p>
  
  <blockquote>
    <p>jar xf /path-to-play-services-project/libs/google-play-services.jar</p>
    
    <p>jar uf ./my_gplus_extension.jar ./com</p>
  </blockquote>
  
  <p>does not fix anything. </p>
  
  <p>2) Any manipulations with Eclipse <a href="https://stackoverflow.com/questions/23104532/adobe-air-4-0-native-extension-with-google-play-services">Adobe Air 4.0 Native Extension with Google Play Services</a> don't help either (after all, I am building JAR using ANT).</p>
  
  <p>3) I do modify resourses (\google-play-services_lib\res*.*) when switching to a new google-service-library.</p>
  
  <p>4) I even tried to extend google's interfaces and modified my GameHelper to implement them, but that did not help either (<em>dl.dropboxusercontent.com/u/13839683/ane/extend_interface.jpg</em>).</p>