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.THelloWorld
Is 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 - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel