Hi Stephan,
I was facing problems with the androidmock downloaded from the downloads page and hence I decided to compile the code myself.
I added new Android 4.0.4 jar to the lib/android folder, modified the SdkVersions.java code to update the Enum and modified the build-framework-gen.xml to use the android_v404.jar instead of the android_v403.jar
I was able to successfully build the android_framework_mocks.jar and AndroidMockGenerator & AndroidMockRuntime.jar.
Now when I add these to my Mock project, I get the following errors for target version > 10. I am able to use the new compiled jars for API level 8 & 9, but not for any version > 10.
This is the error I get in Eclipse:
Internal compiler error: java.lang.VerifyError: class v30.genmocks.android.widget.ImageViewDelegateSubclass overrides final method layout.(IIII)V at java.lang.ClassLoader.defineClass1(Native Method) BuildConfig.java /AndroidDemoAppAndroidMock/gen/com/yahoo/apg/AndroidDemoApp/test
I am not sure why it is looking for v31 and v403 ImageViewDelegateSubclass ? ( my Android_Runtime points to android-15/android.jar)
Also there are no errors in the logfile.
D/installd( 35): DexInv: --- BEGIN '/data/app/com.yahoo.apg.AndroidDemoApp.test-1.apk' ---
W/dalvikvm( 322): Method Lv31/genmocks/android/widget/ImageViewDelegateSubclass;.layout overrides final Landroid/view/View;.layout
W/dalvikvm( 322): failed creating vtable
W/dalvikvm( 322): Method Lv403/genmocks/android/widget/ImageViewDelegateSubclass;.layout overrides final Landroid/view/View;.layout
W/dalvikvm( 322): failed creating vtable
D/
D/dalvikvm( 354): GC_FOR_MALLOC freed 8126 objects / 565072 bytes in 58ms
W/dalvikvm( 354): Method Lv31/genmocks/android/widget/ImageViewDelegateSubclass;.layout overrides final Landroid/view/View;.layout
W/dalvikvm( 354): failed creating vtable
W/dalvikvm( 354): Link of class 'Lv31/genmocks/android/widget/ImageViewDelegateSubclass;' failed
W/ClassPathPackageInfoSource( 354): Cannot load class. Make sure it is in your apk. Class name: 'v31.genmocks.android.widget.ImageViewDelegateSubclass'. Message: v31.genmocks.android.widget.ImageViewDelegateSubclass
W/ClassPathPackageInfoSource( 354): java.lang.ClassNotFoundException: v31.genmocks.android.widget.ImageViewDelegateSubclass
W/ClassPathPackageInfoSource( 354): at java.lang.Class.classForName(Native Method)
W/ClassPathPackageInfoSource( 354): at java.lang.Class.forName(Class.java:235)
W/ClassPathPackageInfoSource( 354): at android.test.ClassPathPackageInfoSource.createPackageInfo(ClassPathPackageInfoSource.java:89)
W/ClassPathPackageInfoSource( 354): at android.test.ClassPathPackageInfoSource.access$000(ClassPathPackageInfoSource.java:40)
W/ClassPathPackageInfoSource( 354): at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:51)
W/ClassPathPackageInfoSource( 354): at android.test.ClassPathPackageInfoSource$1.load(ClassPathPackageInfoSource.java:50)
W/ClassPathPackageInfoSource( 354): at android.test.SimpleCache.get(SimpleCache.java:31)
W/ClassPathPackageInfoSource( 354): at android.test.ClassPathPackageInfoSource.getPackageInfo(ClassPathPackageInfoSource.java:73)
W/ClassPathPackageInfoSource( 354): at android.test.ClassPathPackageInfo.getSubpackages(ClassPathPackageInfo.java:48)
W/ClassPathPackageInfoSource( 354): at android.test.ClassPathPackageInfo.addTopLevelClassesTo(ClassPathPackageInfo.java:61)
W/ClassPathPackageInfoSource( 354): at android.test.ClassPathPackageInfo.getTopLevelClassesRecursive(ClassPathPackageInfo.java:55)
W/ClassPathPackageInfoSource( 354): at android.test.suitebuilder.TestGrouping.testCaseClassesInPackage(TestGrouping.java:154)
W/ClassPathPackageInfoSource( 354): at android.test.suitebuilder.TestGrouping.addPackagesRecursive(TestGrouping.java:115)
W/ClassPathPackageInfoSource( 354): at android.test.suitebuilder.TestSuiteBuilder.includePackages(TestSuiteBuilder.java:103)
W/ClassPathPackageInfoSource( 354): at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:360)
W/ClassPathPackageInfoSource( 354): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4218)
W/ClassPathPackageInfoSource( 354): at android.app.ActivityThread.access$3000(ActivityThread.java:125)
W/ClassPathPackageInfoSource( 354): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2071)
W/ClassPathPackageInfoSource( 354): at android.os.Handler.dispatchMessage(Handler.java:99)
W/ClassPathPackageInfoSource( 354): at android.os.Looper.loop(Looper.java:123)
W/ClassPathPackageInfoSource( 354): at android.app.ActivityThread.main(ActivityThread.java:4627)
W/ClassPathPackageInfoSource( 354): at java.lang.reflect.Method.invokeNative(Native Method)
W/ClassPathPackageInfoSource( 354): at java.lang.reflect.Method.invoke(Method.java:521)
W/ClassPathPackageInfoSource( 354): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
W/ClassPathPackageInfoSource( 354): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
W/ClassPathPackageInfoSource( 354): at dalvik.system.NativeStart.main(Native Method)
W/ClassPathPackageInfoSource( 354): Caused by: java.lang.NoClassDefFoundError: v31.genmocks.android.widget.ImageViewDelegateSubclass
W/ClassPathPackageInfoSource( 354): ... 26 more
W/ClassPathPackageInfoSource( 354): Caused by: java.lang.VirtualMachineError
W/ClassPathPackageInfoSource( 354): at dalvik.system.DexFile.defineClass(Native Method)
W/ClassPathPackageInfoSource( 354): at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:209)
W/ClassPathPackageInfoSource( 354): at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:203)
W/ClassPathPackageInfoSource( 354): at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
W/ClassPathPackageInfoSource( 354): at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
W/ClassPathPackageInfoSource( 354): ... 26 more
D/dalvikvm( 251): GC_EXPLICIT freed 120 objects / 9696 bytes in 995ms
I/DEBUG ( 31): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
I/DEBUG ( 31): Build fingerprint: 'generic/sdk/generic/:2.2/FRF91/43546:eng/test-keys'
After some digging here is what I found:Apparently the method : layout(int,int,int,int) in View.java for Android 2.2 was a final method and hence not generated in the ViewDelegateInterface.class.After maybe 3.0, the final modifier was removed and this method is present in the ViewDelegateInterface.class and the ImageViewDelegateInterface.classUpdate:After few restarts of eclipse and putting the original android_framework_mocks.jar and compiling my own AndroidMockGenerator and Runtime jars, I was able to get this to work.Awesome !!!-Akshat
On Monday, 5 November 2012 18:48:03 UTC+5:30, Akshat Jain wrote:Sorry, I mean API Level 11 and onwards i get that error.