On 30.08.2011 10:34, Jonas Maebe wrote:

On 30 Aug 2011, at 10:16, Sven Barth wrote:

Am 30.08.2011 10:10, schrieb Jonas Maebe:

Maybe you have to explicitly add "-g-" to the OPT string when compiling
the RTL (and your programs), since the default config file shipped with
the snapshot enables debug information.

I have done that already, because I'm calling ppcjvm with "-n" option.
Or does the compiler look in its own directory first before it uses
the user config file?

No, -n prevents loading any default configuration files.


I meant without the "-n", the default variant. Sorry for being unclear here ^^

The problem seems to be something else and I'll find it sooner or
later...

There's a byte code verifier for dex files at
http://dedexer.sourceforge.net/ (search for "-r"), maybe it can give a
clearer diagnostic.


I'll take a look at the verifier.

In the meantime I've done my previously mentioned additional testing:
1. instantiate an android.app.Activity class inside Pascal code: works
2. derive a Pascal class from android.app.Activity (as is the case with the full Pascal example) and instantiate that: fails

The error message still happens during instantiation of the class, but the message looks a bit different then the other one:

=== log begin ===

I/ActivityManager( 62): Start proc com.example.helloandroid for activity com.example.helloandroid/.HelloAndroid: pid=375 uid=10034 gids={1015} W/dalvikvm( 375): VFY: new-instance on interface or abstract class Lorg/freepascal/android/TTestActivity;
D/dalvikvm(  375): VFY: replacing opcode 0x22 at 0x0000
D/dalvikvm( 375): VFY: dead code 0x0002-0018 in Lorg/freepascal/android/TTestClass;.getTextView (Landroid/app/Activity;)Landroid/widget/TextView;
D/AndroidRuntime(  375): Shutting down VM
W/dalvikvm( 375): threadid=1: thread exiting with uncaught exception (group=0x40015560)
E/AndroidRuntime(  375): FATAL EXCEPTION: main
E/AndroidRuntime( 375): java.lang.InstantiationError: org.freepascal.android.TTestActivity E/AndroidRuntime( 375): at org.freepascal.android.TTestClass.getTextView(androidfpc.pas) E/AndroidRuntime( 375): at com.example.helloandroid.HelloAndroid.onCreate(HelloAndroid.java:16) E/AndroidRuntime( 375): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) E/AndroidRuntime( 375): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611) E/AndroidRuntime( 375): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663) E/AndroidRuntime( 375): at android.app.ActivityThread.access$1500(ActivityThread.java:117) E/AndroidRuntime( 375): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931) E/AndroidRuntime( 375): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime(  375):        at android.os.Looper.loop(Looper.java:123)
E/AndroidRuntime( 375): at android.app.ActivityThread.main(ActivityThread.java:3683) E/AndroidRuntime( 375): at java.lang.reflect.Method.invokeNative(Native Method) E/AndroidRuntime( 375): at java.lang.reflect.Method.invoke(Method.java:507) E/AndroidRuntime( 375): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) E/AndroidRuntime( 375): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
E/AndroidRuntime(  375):        at dalvik.system.NativeStart.main(Native Method)
W/ActivityManager( 62): Force finishing activity com.example.helloandroid/.HelloAndroid W/ActivityManager( 62): Activity pause timeout for HistoryRecord{406742f0 com.example.helloandroid/.HelloAndroid}
I/Process (  375): Sending signal. PID: 375 SIG: 9
I/ActivityManager( 62): Process com.example.helloandroid (pid 375) has died.

=== log end ===

The derived class is (on the Pascal side) a completely empty class. Just the class declaration is there. I'll test with a declared constructor.

Regards,
Sven
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to