Hi Oscar, Retrotranslator does it's job by modifying compiled classes in the following way: 1. Embedding into each class its metadata (including annotations) as one big character string. 2. Replacing some method invocations, so java.lang.Class.isAnnotationPresent is being replaced with net.sf.retrotranslator.android.main.java.lang.Class.isAnnotationPresent etc.
So when you call getAnnotations() on a particular class the code from retrotranslator-android-1.2.6.jar will parse the corresponding metadata and return the result. AFAIK when you run your Android project from Eclipse it both compiles your sources into classes and the classes into a dex file. So Retrotranslator has no chance to modify classes in between unless you fix the ADT plugin. The workaround is not to put your sources into Eclipse and to process it with javac, Retrotranslator and jar manually. After that you may add the jar to Eclipse. If you execute the following line you should obtain mytuscany-android.jar that is one-third bigger then the original mytuscany.jar and does not contain references to Java 5 reflection methods. java -jar retrotranslator-transformer-1.2.6.jar -srcjar mytuscany.jar -destjar mytuscany-android.jar -target 1.5 -reflection safe -stripannot -classpath retrotranslator-android-1.2.6.jar So the line java.lang.Class.isAnnotationPresent(Class.java:1131) in the stack trace means that the application is based on non-translated binaries. Maybe you had successfully processed your classes but Eclipse overwrote them after that or Eclipse had already created the dex file before you executed Retrotranslator. If you're using Eclipse the most elegant way would be to add the translation step to the ADT plugin source code, but otherwise don't include Tuscany sources into the project, only include a jar processed by Retrotranslator and retrotranslator-android-1.2.6.jar. Cheers, Taras. On Wed, Jun 4, 2008 at 3:21 PM, <[EMAIL PROTECTED]> wrote: > Hi Taras, > > I'm trying to run Apache Tuscany on Android as part of my Google > Summer of Code project: Incubating and Android in Delft [1]. I've run > all the (modified) source code through retrotranslator but still get > "native method not implemented" errors that I believe are related to > the lack of annotations support on the current Android SDK. > > To test Apache Tuscany I'm running a modified calculator project > (setup as an Android project) called calculator-android. I have > imported the Apache Tuscany SCA modules and modified code for Android > into an eclipse workspace. Then I'm running retrotranslator from the > command line as shown below. I'm keeping the target code at java 1.5 > but get the annotation related errors when running the calculator- > android as an Android Application. The same thing happens when I try > to convert the code to java 1.4. > > $ java -jar /../retrotranslator-transformer-1.2.6.jar -target 1.5 - > stripannot -embed support -reflection safe -classpath /../ > retrotranslator-android-1.2.6.jar -srcdir /../workspace/ -verbose > > Any advice you may have will be greatly appreciated. There's more > details on what I'm currently doing in [2] in case you can help. > > Thanks in advance. > > [1] > http://cwiki.apache.org/confluence/display/TUSCANYWIKI/Allow+Google+Android+applications+to+easily+consume+business+services > [2] http://cwiki.apache.org/confluence/display/TUSCANYWIKI/30may2008 > > best, > -oscar > > On Apr 3, 5:40 pm, Taras Puchko <[EMAIL PROTECTED]> wrote: > > I've made a mistake in my previous post, the correct command is the > > following: > > > > java -jarretrotranslator-transformer-1.2.6.jar -target 1.5 - > > stripannot -embed support -reflection safe -classpathretrotranslator- > > android-1.2.6.jar -srcjar gdata-media-1.0.jar > > > > To use annotations in your code extract classes that contain or > > manipulate annotations into a separate library, translate it > withRetrotranslatorand add it as a dependency to the main project. > > > > Regards, > > Taras. > > > > On 3 Кві, 09:42, Taras Puchko <[EMAIL PROTECTED]> wrote: > > > > > If your application does not declare or use annotations itself you may > > > translate the dependency before adding it to the Eclipse project: > > > > > java -jarretrotranslator-transformer-1.2.6.jar -target 1.5 -embed > > > support -reflection safe -stripannot -srcjar gdata-media-1.0.jar > > > > > Regards, > > > Taras. > > > > > On 28 Бер, 17:18, nwmotogeek <[EMAIL PROTECTED]> wrote: > > > > > > That link describes how to add a target to the build.xml but I don't > know > > > > how to do that with Eclipse can some one point me to instructions on > this? > > > > > > Thanks, > > > > -Dave > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] Announcing the new M5 SDK! http://android-developers.blogspot.com/2008/02/android-sdk-m5-rc14-now-available.html For more options, visit this group at http://groups.google.com/group/android-developers?hl=en -~----------~----~----~----~------~----~------~--~---