On 28.08.2011 21:38, Jonas Maebe wrote:
On 27 Aug 2011, at 17:43, Sven Barth wrote:When running the full FPC application (or "activity"): === begin run log === I/ActivityManager( 59): Start proc org.freepascal.helloworld for activity org.freepascal.helloworld/.THelloWorld: pid=601 uid=10035 gids={1015} D/dalvikvm( 601): newInstance failed: p0 i0 [0 a1 D/AndroidRuntime( 601): Shutting down VM W/dalvikvm( 601): threadid=1: thread exiting with uncaught exception (group=0x40015560) E/AndroidRuntime( 601): FATAL EXCEPTION: main E/AndroidRuntime( 601): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{org.freepascal.helloworld/org.freepascal.helloworld.THelloWorld}: java.lang.InstantiationException: org.freepascal.helloworld.THelloWorldIs this an expected exception?
I'd say that it isn't an expected one... at least the converted class doesn't contain a "throws" comment at its constructor...
And here the log entry when building the Java based example with a class that derives from TObject: === begin build log === [echo] Converting compiled files and external libraries into /home/sven/projects/android/helloandroid/bin/classes.dex... [apply] [apply] UNEXPECTED TOP-LEVEL EXCEPTION: [apply] com.android.dx.cf.code.SimException: local variable type mismatch: attempt to set or access a value of type java.lang.Object using a local variable of type boolean. This is symptomatic of .class transformation tools that ignore local variable information.Can you run the bytecode verifier on the class files generated for your program? See http://wiki.freepascal.org/FPC_JVM/Debugging#Bytecode_verification for the details. You may also have to add the android.jar to the class path for the verifier to work (although I'm not 100% certain whether that will work in case the android versions of java.lang.* start replacing the JDK versions of the same classes for running the verifier itself)
I don't think using the verifier on my own class files will be of much use, because if I understand the log correct it complains about the code in FpcBitSet.containsAll (mentioned in the last few lines before the next empty one). Also - regarding your android.jar comment - I'm not even using any Android classes in that example... just TObject (as a base class) and UnicodeString (it tried to convert all RTL classes, because I put the complete RTL in the projects bin directory, in which all contained .class files are converted).
Regards, SVen _______________________________________________ fpc-devel maillist - [email protected] http://lists.freepascal.org/mailman/listinfo/fpc-devel
