ClassDefNotFoundError in my own classes - android

I developed the project in Eclipse, then moved to IntelliJ IDEA CE 12, then moved back to the Eclipse. IDEA had converted it to eclipse project not correctly, so I imported project from existing source and added line
<nature>com.android.ide.eclipse.adt.AndroidNature</nature>
to the section. Ok, it compiles successfully, but generates a lot of strange errors for the classes written by me and then crashes.
LogCat output:
E/dalvikvm( 9673): Could not find class 'com.capsule.launcher.views.Screen', referenced from method com.capsule.launcher.views.Workspace$1.onPageSelected
W/dalvikvm( 9673): VFY: unable to resolve check-cast 458 (Lcom/capsule/launcher/views/Screen;) in Lcom/capsule/launcher/views/Workspace$1;
D/dalvikvm( 9673): VFY: replacing opcode 0x1f at 0x0010
W/dalvikvm( 9673): Unable to resolve superclass of Lcom/capsule/launcher/views/CellLayout; (346)
W/dalvikvm( 9673): Link of class 'Lcom/capsule/launcher/views/CellLayout;' failed
W/dalvikvm( 9673): Unable to resolve superclass of Lcom/capsule/launcher/views/DockBar; (455)
W/dalvikvm( 9673): Link of class 'Lcom/capsule/launcher/views/DockBar;' failed
W/dalvikvm( 9673): VFY: unable to find class referenced in signature (Lcom/capsule/launcher/views/DockBar;)
W/dalvikvm( 9673): Unable to resolve superclass of Lcom/capsule/launcher/views/CellLayout; (346)
W/dalvikvm( 9673): Link of class 'Lcom/capsule/launcher/views/CellLayout;' failed
W/dalvikvm( 9673): Unable to resolve superclass of Lcom/capsule/launcher/views/DockBar; (455)
W/dalvikvm( 9673): Link of class 'Lcom/capsule/launcher/views/DockBar;' failed
E/dalvikvm( 9673): Could not find class 'com.capsule.launcher.views.DockBar', referenced from method com.capsule.launcher.views.WorkspaceHolder.onLayout
W/dalvikvm( 9673): VFY: unable to resolve instanceof 456 (Lcom/capsule/launcher/views/DockBar;) in Lcom/capsule/launcher/views/WorkspaceHolder;
D/dalvikvm( 9673): VFY: replacing opcode 0x20 at 0x001b
D/AndroidRuntime( 9673): Shutting down VM
W/dalvikvm( 9673): threadid=1: thread exiting with uncaught exception (group=0x40d6e300)
E/AndroidRuntime( 9673): FATAL EXCEPTION: main
E/AndroidRuntime( 9673): java.lang.NoClassDefFoundError: com.capsule.launcher.views.DockBar
E/AndroidRuntime( 9673): at com.capsule.launcher.LauncherActivity.createWorkspace(LauncherActivity.java:116)
E/AndroidRuntime( 9673): at com.capsule.launcher.LauncherActivity.onCreate(LauncherActivity.java:58)
E/AndroidRuntime( 9673): at android.app.Activity.performCreate(Activity.java:5008)
E/AndroidRuntime( 9673): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
E/AndroidRuntime( 9673): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
E/AndroidRuntime( 9673): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
E/AndroidRuntime( 9673): at android.app.ActivityThread.access$600(ActivityThread.java:130)
E/AndroidRuntime( 9673): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
E/AndroidRuntime( 9673): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 9673): at android.os.Looper.loop(Looper.java:137)
E/AndroidRuntime( 9673): at android.app.ActivityThread.main(ActivityThread.java:4745)
E/AndroidRuntime( 9673): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 9673): at java.lang.reflect.Method.invoke(Method.java:511)
E/AndroidRuntime( 9673): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
E/AndroidRuntime( 9673): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
E/AndroidRuntime( 9673): at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 301): Force finishing activity com.capsule.launcher/.LauncherActivity
D/dalvikvm( 9673): GC_CONCURRENT freed 4207K, 20% free 19381K/23943K, paused 13ms+4ms, total 52ms
W/ActivityManager( 301): Activity pause timeout for ActivityRecord{418f0cd0 com.capsule.launcher/.LauncherActivity}
D/dalvikvm( 301): GC_CONCURRENT freed 1886K, 28% free 22076K/30279K, paused 4ms+9ms, total 99ms
W/ActivityManager( 301): Activity destroy timeout for ActivityRecord{418f0cd0 com.capsule.launcher/.LauncherActivity}
D/Finsky ( 7843): [1] 5.onFinished: Installation state replication succeeded.
It worked fine in IDEA and Eclipse before!

I don't know what happend to your project, but try in Eclipse: Project--> Clean--> YourProject

Clean and Build Your Project in Eclipse.Also check in Android Manifest file ,if launcher Activity is defined correctly with its package name.

Its not a good idea to use it like this(manually) rather we can export projects from IntelliJ IDEA to Eclipse in simple steps.
please follow this standard document for the above.
http://www.jetbrains.com/idea/webhelp/exporting-intellij-idea-project-to-eclipse.html
hope this will help you.

if you use librarys in your project , try in build path add to the library export

If you do have the old working eclipse project then copy/replace all the new code and jars to it, from the IntelliJ IDEA project. Remember to copy/replace only the code and jars not the IntelliJ IDEA specific settings files.

Right click on the project which has issues and select properties.
Select the appropriate Android build (1.1, 1.5 or 1.5 with google api) and say ok.
Again right click on the project and select "Android Tools > Fix Project Properties"
Fix the imports once (if required)
Refresh the project and you should be ready to go without any manual editing
Hope this helps.

Related

Genymotion with Cocos2d-x v3.11

I am using cocos2d-x v3.11 on mac and using Genymotion virtual devices.
In my /jni/Application.mk, I've put,
APP_ABI :=armeabi armeabi-v7a
APP_ABI :=x86
But always same error comes NO_MATCHING_ABIS and the app doesn't launch on the genymotion.
Though error log may not be needed but here it is:
D/dalvikvm( 1893): Late-enabling CheckJNI
I/ActivityManager( 587): Start proc org.company.numbergame for activity org.company.numbergame/org.cocos2dx.cpp.AppActivity: pid=1893 uid=10060 gids={50060, 3003}
D/dalvikvm( 1893): Trying to load lib /data/app-lib/org.company.numbergame-1/libMyGame.so 0xa4fe4688
E/dalvikvm( 1893): dlopen("/data/app-lib/org.company.numbergame-1/libMyGame.so") failed: dlopen failed: library "/system/lib/libhoudini.so" not found
D/AndroidRuntime( 1893): Shutting down VM
W/dalvikvm( 1893): threadid=1: thread exiting with uncaught exception (group=0xa4d17b20)
E/AndroidRuntime( 1893): FATAL EXCEPTION: main
E/AndroidRuntime( 1893): Process: org.company.numbergame, PID: 1893
E/AndroidRuntime( 1893): java.lang.UnsatisfiedLinkError: dlopen failed: library "/system/lib/libhoudini.so" not found
E/AndroidRuntime( 1893): at java.lang.Runtime.loadLibrary(Runtime.java:364)
E/AndroidRuntime( 1893): at java.lang.System.loadLibrary(System.java:526)
E/AndroidRuntime( 1893): at org.cocos2dx.lib.Cocos2dxActivity.onLoadNativeLibraries(Cocos2dxActivity.java:246)
E/AndroidRuntime( 1893): at org.cocos2dx.lib.Cocos2dxActivity.onCreate(Cocos2dxActivity.java:260)
E/AndroidRuntime( 1893): at android.app.Activity.performCreate(Activity.java:5231)
E/AndroidRuntime( 1893): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
E/AndroidRuntime( 1893): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2148)
E/AndroidRuntime( 1893): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
E/AndroidRuntime( 1893): at android.app.ActivityThread.access$800(ActivityThread.java:135)
E/AndroidRuntime( 1893): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1196)
E/AndroidRuntime( 1893): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 1893): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime( 1893): at android.app.ActivityThread.main(ActivityThread.java:5001)
E/AndroidRuntime( 1893): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 1893): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime( 1893): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
E/AndroidRuntime( 1893): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
E/AndroidRuntime( 1893): at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 587): Force finishing activity org.company.numbergame/org.cocos2dx.cpp.AppActivity
D/dalvikvm( 587): GC_FOR_ALLOC freed 856K, 19% free 8972K/10964K, paused 11ms, total 11ms
D/MobileDataStateTracker( 587): default: setPolicyDataEnable(enabled=true)
W/ActivityManager( 587): Activity pause timeout for ActivityRecord{529f9534 u0 org.company.numbergame/org.cocos2dx.cpp.AppActivity t8 f}
W/EGL_genymotion( 763): eglSurfaceAttrib not implemented
D/MobileDataStateTracker( 587): default: setPolicyDataEnable(enabled=t
The eclipse emulators are really slow and I need to use Genymotion also for multi-device resolution testing.
EDIT:
A strange issue, I noticed after restarting eclipse. (I din't change my Application.mk). When I built project using cocos compile -p android
then it started building for x86 and worked when installed on genymotion device but didn't work for my actual devices. And when I removed x86 then it built for armeabi . But it doesn't work simultaneously on both kind of devices(armeabi and x86).
Does anyone know, how can I resolve it?
Genymotion works on x86 architecture. If you want to run an ARM build on genymotion then download the ARM translation and drop it on your genymotion emulator, then it will start accepting ARM build.

Moving classes to multidex in existing APK

I am trying to move some frameworks from classes.dex to classes2.dex (MultiDex) from an existing APK. To do so I use smali. It seem it works for some apps and for some not:
D/dalvikvm( 1401): GC_CONCURRENT freed 258K, 24% free 13896K/18268K, paused 2ms+1ms, total 19ms
I/dalvikvm( 2737): Could not find method com.facebook.FacebookSdk.sdkInitialize, referenced from method com.foursquare.robin.App.onCreate
W/dalvikvm( 2737): VFY: unable to resolve static method 16788: Lcom/facebook/FacebookSdk;.sdkInitialize (Landroid/content/Context;)V
D/dalvikvm( 2737): VFY: replacing opcode 0x71 at 0x014d
E/dalvikvm( 2737): Could not find class 'com.twitter.sdk.android.core.u', referenced from method com.foursquare.common.app.support.am.a
W/dalvikvm( 2737): VFY: unable to resolve new-instance 8004 (Lcom/twitter/sdk/android/core/u;) in Lcom/foursquare/common/app/support/am;
D/dalvikvm( 2737): VFY: replacing opcode 0x22 at 0x0005
D/dalvikvm( 2737): DexOpt: unable to opt direct call 0xd553 at 0x09 in Lcom/foursquare/common/app/support/am;.a
I/MultiDex( 2737): VM with version 1.6.0 does not have multidex support
I/MultiDex( 2737): install
I/MultiDex( 2737): MultiDexExtractor.load(/data/app/com.foursquare.robin-1.apk, false)
I/MultiDex( 2737): Detected that extraction must be performed.
D/dalvikvm( 2737): GC_CONCURRENT freed 325K, 11% free 3389K/3784K, paused 1ms+0ms, total 5ms
I/MultiDex( 2737): Extraction is needed for file /data/data/com.foursquare.robin/code_cache/secondary-dexes/com.foursquare.robin-1.apk.classes2.zip
I/MultiDex( 2737): Extracting /data/data/com.foursquare.robin/code_cache/secondary-dexes/com.foursquare.robin-1.apk.classes-838392451.zip
I/MultiDex( 2737): Renaming to /data/data/com.foursquare.robin/code_cache/secondary-dexes/com.foursquare.robin-1.apk.classes2.zip
I/MultiDex( 2737): Extraction success - length /data/data/com.foursquare.robin/code_cache/secondary-dexes/com.foursquare.robin-1.apk.classes2.zip: 392940
I/MultiDex( 2737): load found 1 secondary dex files
D/dalvikvm( 2737): DexOpt: --- BEGIN 'com.foursquare.robin-1.apk.classes2.zip' (bootstrap=0) ---
I/dalvikvm( 2753): No library specified. The standard exception handler will be used
D/dalvikvm( 2753): DexOpt: load 18ms, verify+opt 57ms, 1428508 bytes
D/dalvikvm( 2737): DexOpt: --- END 'com.foursquare.robin-1.apk.classes2.zip' (success) ---
D/dalvikvm( 2737): DEX prep '/data/data/com.foursquare.robin/code_cache/secondary-dexes/com.foursquare.robin-1.apk.classes2.zip': unzip in 13ms, rewrite 232ms
I/MultiDex( 2737): install done
D/AndroidRuntime( 2737): Shutting down VM
W/dalvikvm( 2737): threadid=1: thread exiting with uncaught exception (group=0x42d5d140)
E/AndroidRuntime( 2737): FATAL EXCEPTION: main
E/AndroidRuntime( 2737): Process: com.foursquare.robin, PID: 2737
E/AndroidRuntime( 2737): java.lang.NoClassDefFoundError: com.twitter.sdk.android.core.u
E/AndroidRuntime( 2737): at com.foursquare.common.app.support.am.a(SourceFile)
E/AndroidRuntime( 2737): at com.foursquare.robin.App.onCreate(SourceFile:213)
E/AndroidRuntime( 2737): at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007)
E/AndroidRuntime( 2737): at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4344)
E/AndroidRuntime( 2737): at android.app.ActivityThread.access$1500(ActivityThread.java:135)
E/AndroidRuntime( 2737): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
E/AndroidRuntime( 2737): at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime( 2737): at android.os.Looper.loop(Looper.java:136)
E/AndroidRuntime( 2737): at android.app.ActivityThread.main(ActivityThread.java:5017)
E/AndroidRuntime( 2737): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 2737): at java.lang.reflect.Method.invoke(Method.java:515)
E/AndroidRuntime( 2737): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
E/AndroidRuntime( 2737): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
E/AndroidRuntime( 2737): at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 1321): Force finishing activity com.foursquare.robin/.activities.MainActivity
Is this because MultiDex is installed after Twitter API or do I have to modify something else than the dex files?
I'll first quote myself (from this blogpost):
So what is main dex, and which classes it must include?
On application start, the default ClassLoader has a single entry in
its path - classes.dex file. It is also called the main dex. To
support more than one dex file, the multidex support library
implemented runtime patching of ClassLoader's path. This code should
run as soon as you have the application context (the perfect place for
it is in Application#attachBaseContext method).
Therefore, the Application class should be definitely included in the
main dex, since it should already be present when you patching the
ClassLoader.
Any other classes must be included? Yes. There's a thing called
Dalvik verifier that has complex rules for determining
inappropriate bytecode. For example, before loading the Application
class, VM verifier performs its checks and if it finds a field whose
type it can't resolve (yet), it will not allow to run instruction that
accessing this field, even if at that point of time we already patched
the ClassLoader and the class could be resolved.
In your example, app's Application class (com.foursquare.robin.App) indirectly depends on com.twitter.sdk.android.core.u class. But as you can see in your logs, Dalvik verifier already patched the new-instance instruction:
E/dalvikvm( 2737): Could not find class 'com.twitter.sdk.android.core.u', referenced from method com.foursquare.common.app.support.am.a
W/dalvikvm( 2737): VFY: unable to resolve new-instance 8004 (Lcom/twitter/sdk/android/core/u;) in Lcom/foursquare/common/app/support/am;
D/dalvikvm( 2737): VFY: replacing opcode 0x22 at 0x0005

LibGDX on Netbeans and Android

I am trying to run my application that uses LibGDX on Andriod using the NetBeans IDE.
However the game crashes for some reason, I just got the "This application have stopped to work" message when I try to run the application. Everything works great on PC, so apparently I have missed something in the andriod set up. Setting up an andriod project on NetBeans is not an documented area and things seem to be different on Eclipse.
If someone have manged to run LibGDX on andriod by setting up the project in Netbeans, please share the steps you did.
Some code, I doubt that would help through:
public class Game extends AndroidApplication {
public void onCreate (android.os.Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initialize((ApplicationListener) new game.GameSystem(new Size2i(100, 100)), false);
}
}
The debug output I get is the following:
D/dalvikvm( 478): Trying to load lib /data/data/com.RPGGame/lib/libgdx.so 0x40515708
D/dalvikvm( 478): Added shared lib /data/data/com.RPGGame/lib/libgdx.so 0x40515708
D/dalvikvm( 478): No JNI_OnLoad found in /data/data/com.RPGGame/lib/libgdx.so 0x40515708, skipping init
D/AndroidRuntime( 478): Shutting down VM
W/dalvikvm( 478): threadid=1: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime( 478): FATAL EXCEPTION: main
E/AndroidRuntime( 478): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.RPGGame/com.RPGGame.MainActivity}: java.lang.ClassCastException: game.GameSystem
E/AndroidRuntime( 478): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1647)
E/AndroidRuntime( 478): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
E/AndroidRuntime( 478): at android.app.ActivityThread.access$1500(ActivityThread.java:117)
E/AndroidRuntime( 478): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
E/AndroidRuntime( 478): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 478): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 478): at android.app.ActivityThread.main(ActivityThread.java:3683)
E/AndroidRuntime( 478): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 478): at java.lang.reflect.Method.invoke(Method.java:507)
E/AndroidRuntime( 478): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
E/AndroidRuntime( 478): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime( 478): at dalvik.system.NativeStart.main(Native Method)
E/AndroidRuntime( 478): Caused by: java.lang.ClassCastException: game.GameSystem
E/AndroidRuntime( 478): at com.RPGGame.MainActivity.onCreate(MainActivity.java:11)
E/AndroidRuntime( 478): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
E/AndroidRuntime( 478): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
E/AndroidRuntime( 478): ... 11 more
W/ActivityManager( 104): Force finishing activity com.RPGGame/.MainActivity
W/ActivityManager( 104): Activity pause timeout for HistoryRecord{40512238 com.RPGGame/.MainActivity}
D/dalvikvm( 408): GC_EXPLICIT freed 8K, 54% free 2537K/5511K, external 1625K/2137K, paused 102ms
W/ActivityManager( 104): Activity destroy timeout for HistoryRecord{40512238 com.RPGGame/.MainActivity}
D/dalvikvm( 420): GC_EXPLICIT freed 324K, 55% free 2532K/5511K, external 1625K/2137K, paused 183ms
D/dalvikvm( 322): GC_EXPLICIT freed 9K, 55% free 2589K/5703K, external 1625K/2137K, paused 72ms
So basically I cannot cast game.GameSystem to ApplicationListener. Even if GameSystem implements ApplicationListener.
GameSystem works as intended on PC, all I did for the Andriod project was to put that code in the main file.
Okay, I solved it now, turned out I used the wrong version of game.GameSystem.

Why can Necessitas not support to display Chinese characters in my qt application for android?

Necessitas is the codename for the port of Qt on the Android Operating System and of the user-friendly Qt Creator Integration with Android. Now , using Necessitas (QT for Android),I can run & debug my Qt Applications on Android Devices.
But I got these log when I want to setText("中文") on QLabel.
Why can Necessitas not support to display Chinese characters in my qt application for android ? Or, what steps do I have less ?
Starting remote process ...
I/Qt JAVA ( 469): surfaceChanged: 480,762
D/dalvikvm( 469): Trying to load lib /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtCore.so 0x44ede7e8
D/dalvikvm( 469): Added shared lib /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtCore.so 0x44ede7e8
D/dalvikvm( 469): No JNI_OnLoad found in /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtCore.so 0x44ede7e8, skipping init
D/dalvikvm( 469): Trying to load lib /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtGui.so 0x44ede7e8
D/dalvikvm( 469): Added shared lib /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtGui.so 0x44ede7e8
D/dalvikvm( 469): No JNI_OnLoad found in /data/data/eu.licentia.necessitas.ministro/files/qt/lib/libQtGui.so 0x44ede7e8, skipping init
D/dalvikvm( 469): Trying to load lib /data/data/eu.licentia.necessitas.ministro/files/qt/plugins/platforms/android/libandroid-8.so 0x44ede7e8
D/dalvikvm( 469): Added shared lib /data/data/eu.licentia.necessitas.ministro/files/qt/plugins/platforms/android/libandroid-8.so 0x44ede7e8
I/Qt ( 469): qt start
D/dalvikvm( 469): Trying to load lib /data/data/eu.licentia.necessitas.industrius.example.Yiyaaixuexi/lib/libYiyaaixuexi.so 0x44ede7e8
D/dalvikvm( 469): Added shared lib /data/data/eu.licentia.necessitas.industrius.example.Yiyaaixuexi/lib/libYiyaaixuexi.so 0x44ede7e8
I/Qt ( 469): qt start
W/ApplicationContext( 469): Unable to create files directory
D/AndroidRuntime( 469): Shutting down VM
W/dalvikvm( 469): threadid=1: thread exiting with uncaught exception (group=0x4001d800)
E/AndroidRuntime( 469): FATAL EXCEPTION: main
E/AndroidRuntime( 469): java.lang.NullPointerException
E/AndroidRuntime( 469): at eu.licentia.necessitas.industrius.QtActivity.startApplication(QtActivity.java:126)
E/AndroidRuntime( 469): at eu.licentia.necessitas.industrius.QtActivity.access$000(QtActivity.java:62)
E/AndroidRuntime( 469): at eu.licentia.necessitas.industrius.QtActivity$1$1.run(QtActivity.java:149)
E/AndroidRuntime( 469): at android.os.Handler.handleCallback(Handler.java:587)
E/AndroidRuntime( 469): at android.os.Handler.dispatchMessage(Handler.java:92)
E/AndroidRuntime( 469): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 469): at android.app.ActivityThread.main(ActivityThread.java:4627)
E/AndroidRuntime( 469): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 469): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 469): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
E/AndroidRuntime( 469): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
E/AndroidRuntime( 469): at dalvik.system.NativeStart.main(Native Method)
I/Process ( 469): Sending signal. PID: 469 SIG: 9
Is this question ambiguous, vague, incomplete, overly broad, or rhetorical ? Now I'm sure that it doesn't support at all.

Android minSdkVersion and using classes introduced in higher level SDK

I was testing android minSDKVersion property and find a strange behavior-
I put minSDKVersion=3 (1.5) and targetSDKVersion=4 (1.6) in androidManifest.xml file.
For testing, I put following lines in onCreate method of launching activity -
android.telephony.SmsManager sm = android.telephony.SmsManager.getDefault();
ArrayList<String> stringArray = sm.divideMessage("this is message");
Toast.makeText(this, stringArray.get(0), Toast.LENGTH_LONG).show();
android.telephony.SmsManager class is being introduced in android 1.6.
After adding these lines, on 1.6 emulator it was showing toast, but on 1.5 emulator it did not show toast and did not crashed either.
I was expecting that the application will crash on 1.5 emulator but this did not happen.
Can anyone explain this?
Thanks
Attempting to call methods of classes that aren't available will result in an exception.
It isn't clear to me why you did not observe a crash. Perhaps you have other code that is saving you.
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.versions"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="#drawable/icon" android:label="#string/app_name">
<activity android:name=".MinSdk"
android:label="#string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="3" />
</manifest>
Activity Code:
package com.example.versions;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.widget.Toast;
public class MinSdk extends Activity {
/** Called when the activity is first created. */
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SmsManager sm = SmsManager.getDefault();
ArrayList<String> stringArray = sm.divideMessage("this is message");
Toast.makeText(this, stringArray.get(0), Toast.LENGTH_LONG).show();
}
}
Dump of Logcat when run in Android 1.5 emulator:
E/dalvikvm( 779): Could not find method android.telephony.SmsManager.getDefault, referenced from method com.example.versions.MinSdk.onCreate
W/dalvikvm( 779): VFY: unable to resolve static method 3: Landroid/telephony/SmsManager;.getDefault ()Landroid/telephony/SmsManager;
W/dalvikvm( 779): VFY: rejecting opcode 0x71 at 0x0008
W/dalvikvm( 779): VFY: rejected Lcom/example/versions/MinSdk;.onCreate (Landroid/os/Bundle;)V
W/dalvikvm( 779): Verifier rejected class Lcom/example/versions/MinSdk;
W/dalvikvm( 779): Class init failed in newInstance call (Lcom/example/versions/MinSdk;)
D/AndroidRuntime( 779): Shutting down VM
W/dalvikvm( 779): threadid=3: thread exiting with uncaught exception (group=0x4000fe70)
E/AndroidRuntime( 779): Uncaught handler: thread main exiting due to uncaught exception
E/AndroidRuntime( 779): java.lang.VerifyError: com.example.versions.MinSdk
E/AndroidRuntime( 779): at java.lang.Class.newInstanceImpl(Native Method)
E/AndroidRuntime( 779): at java.lang.Class.newInstance(Class.java:1472)
E/AndroidRuntime( 779): at android.app.Instrumentation.newActivity(Instrumentation.java:1097)
E/AndroidRuntime( 779): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2186)
E/AndroidRuntime( 779): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2284)
E/AndroidRuntime( 779): at android.app.ActivityThread.access$1800(ActivityThread.java:112)
E/AndroidRuntime( 779): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1692)
E/AndroidRuntime( 779): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 779): at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 779): at android.app.ActivityThread.main(ActivityThread.java:3948)
E/AndroidRuntime( 779): at java.lang.reflect.Method.invokeNative(Native Method)
E/AndroidRuntime( 779): at java.lang.reflect.Method.invoke(Method.java:521)
E/AndroidRuntime( 779): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:782)
E/AndroidRuntime( 779): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:540)
E/AndroidRuntime( 779): at dalvik.system.NativeStart.main(Native Method)
D/dalvikvm( 541): GC freed 2 objects / 48 bytes in 194ms
I/Process ( 575): Sending signal. PID: 779 SIG: 3
I/dalvikvm( 779): threadid=7: reacting to signal 3
I/dalvikvm( 779): Wrote stack trace to '/data/anr/traces.txt'

Categories

Resources