the current trunk doesn't need the chmod hack. 1.8 needs it.

regards,

Karl

Am 09.07.2009 um 15:14 schrieb Stephan Heuser <stephan.heu...@gmail.com>:

Hi Matthias,

did you run into any additional problems running Felix 1.8.(0/1) on
Android? I applied the patches mentioned in FELIX-1156 , however i
still have chmod my dalvik cache folder to be writeable for all users.
FRAMEWORK_STORAGE ist set to a newly created temp folder, i am
following the iPOJO tutorial too.

And was there a special reason to switch to a 1.9.0 snapshot? I am
asking because i might be using iPOJO later, i don't know exactly yet.

Another thing, how do you deploy your bundles which will be used by
file installer? currently i am pushing the bundles manually to the sd
card.

Cheers,
Stephan

On Thu, Jul 9, 2009 at 11:57 AM, Matthias Neubert<sur...@onlinehome.de> wrote:
Hello,

it finally worked!!

Loading Fileinstall via an activator from resources dir of Android project
and starting it doesn't interfer
with the other bundles (which are started the same way)

Meanwhile I learned, that the folder watched by fileinstall shall NOT be the
same folder fileinstall and the other on startup loaded
bundles are installed to. I now have to seperate folders for this.

The best thing is: After some changes I now got the tutorial on
http://ipojo-dark-side.blogspot.com/2008/10/ipojo-on-android.html run in the
the following configuration:

Felix 1.9.0 (current snapshot 08.July.2009)
FileInstall 1.3.0 snap
iPojo snap
iPojo.arch snap
Android SDK 1.5r2
Eclipse 3.4
MacOS X 10.5.7
JVM 1.5 (set to 1.6 compatibility mode in eclipse)

WITHOUT "chmod 777 /data/dalvik-cache"

this hopefully makes this sample work on a real 1.5 android device. Next
weeks I hope to be able to borrow an G1 Phone
from my university to test this on an real device. I will later report on
that if someone is interested.

Thank you all who helped me working this out. You realy helped me getting
further with my diploma thesis!

For those who are interested I commit my code on an google code project
website. It will take some time to add some clean code
comments in english language. If someone here is interested, I post the link
here.


regards
Matthias


Am 08.07.2009 um 16:53 schrieb Matthias Neubert:

Hello,

OK, I'try it.

Current state: newly build felix and fileinstall (with "patch" without
osgi log package)
works. I get no more errors and can start the app.

BUT ;-)

this causes the other bundles (like ipojo, ipojo.arch, shell, shelltui) which load via an InstallerActivator from resources area of the android
project)
not to start correctly.

I'll try loading and starting fileinstall with the same method lie the
other bundles and then I'll see if the problems remain.


regards
matthias




Am 08.07.2009 um 16:43 schrieb Karl Pauls:

On Wed, Jul 8, 2009 at 3:29 PM, Matthias Neubert<sur...@onlinehome.de >
wrote:

Hello,

Workaround: just set the property as a string for the key and install
the fileinstall bundle into felix. That should make it work.

thats right, but it doesn't help with the activator-part in the HostApp

You don't need to do the activator part if you just install the
fileinstall.jar as a bundle.

regards,

Karl

I'm not sure (would have to look at it first) but it is pretty common in OSGi land to have bundles that have some shared packages embedded to make them working standalone and when they can get the package from
another provider.

I currently checked the FileInstall Sources. There is no
"org.osgi.service.log" implemented,
but DirectoryWatcher imports and uses it: import org.osgi.service.log.*;
The mentioned LogEntry is not used there!

Then I checked the pom.xml and pom-transformed.xml file of fileinstall
(todays snapshot) There I found it:

<build>
 <plugins>
   <plugin>
     <groupId>org.apache.felix</groupId>
     <artifactId>maven-bundle-plugin</artifactId>
     <version>1.4.0</version>
     <extensions>true</extensions>
     <configuration>
       <instructions>

<Export- Package>org.apache.felix.fileinstall.*,org.osgi.service.cm,
org.osgi.service.log</Export-Package>            <-- HERE


<Bundle-Activator>org.apache.felix.fileinstall.FileInstall</ Bundle-Activator> <Bundle-SymbolicName>${pom.artifactId}</Bundle- SymbolicName> <Bundle-Vendor>The Apache Software Foundation</Bundle- Vendor>
       </instructions>
     </configuration>
   </plugin>
...



may be "org.osgi.service.cm" would be the next issue.

If I understand it right, that maven integrated the
"org.osgi.service.log"
classes (and may be cm) into fileinstall.jar on build.
The same is done while building feilx 1.9.0.

The dex tool, or the APK Builder (makes app file bundles which are
installed
to the phone/emulator) has a problem, when 2 jars
have the same package integrated, right?

-> I gues the problem is not the eclipse plugin it self, its the dx or
apkbuilder tool delivered with android sdk which do the trouble

I'll try to build fileinstall without this 2 packages in pom.xml , to
see if
this "patched" fileinstall make trouble too.

Regarding fileinstall there is no difference for me in pom.xml between
1.20
and 130snapshot


I keep on searching. May be we'll find a good solution. (unfortunatly I cannot wait for Google fixing this. I also believe they dont want to fix
this)



regards
matthias




Am 08.07.2009 um 14:22 schrieb Karl Pauls:

On Wed, Jul 8, 2009 at 2:12 PM, Matthias Neubert<sur...@onlinehome.de >
wrote:

Hello,

I add Fileinstall, because my Android HostApplication with its
embedded
Felix shall
watch a directory on the Android Phone where new Bundles are stored
to.
I'm following mostly the iPojo+Android Sample on:
http://ipojo-dark-side.blogspot.com/2008/10/ipojo-on-android.html .

For that I add Fileinstall Dir to Felix' config like this:

configProps.put(DirectoryWatcher.DIR, absFilePath+"/felix/ bundle");
//"felix.fileinstall.dir"
configProps.put(DirectoryWatcher.DEBUG, "1");
//"felix.fileinstall.debug"

Workaround: just set the property as a string for the key and install
the fileinstall bundle into felix. That should make it work.

In the HostApplication it self I use FileInstall the following way:

Adding FileInstall to AutoStart with System Bundle:

List<BundleActivator> activatorList = new
ArrayList<BundleActivator>();
activatorList.add(m_hostActivator);

activatorList.add(new FileInstall());

// add list of activators which shall be started with system bundle to
config
m_felixProperties. put(FelixConstants.SYSTEMBUNDLE_ACTIVATORS_PROP,
activatorList);


Equipped with fileinstall I guess the ServiceTracker (see
iPojo+Android
Sample) notices when a bundle
copied to the watched directory is installed and started (by
fileinstall)

If there is an other way, please tell me! (generally I have some
problems
understanding that loose coupling thing in Felix and iPojo. I have to
read
more regarding this issue.)

The thing I wonder about is why this problem occurs in 1.9.0 but not
in
1.8.0. Why I an class defined in fileinstall (with identical name an
package) also defined in felix 1.9.0?

I'm not sure (would have to look at it first) but it is pretty common in OSGi land to have bundles that have some shared packages embedded to make them working standalone and when they can get the package from
another provider.

As far as I know the dexer stops at the first problem. So it may be
that

Lorg/osgi/service/log/LogEntry;

is not the only problem. It also may happen at other Jars than
fileinstall.jar

I don't know about visibility filters in eclipse. I will try to find
out.
But I think it's not a real solution to do it that way.

Sounds like a bug/problem with android or their eclipse integration to
me.

regards,

Karl


regards
Matthias





Am 08.07.2009 um 13:00 schrieb Karl Pauls:

Well, why would you want to add fileinstall in the first place? You
could just dex it and then install as a bundle no?

Regarding the issue, it looks like the dex compiler can't handle multiple definitions of the same class in one compile. Thats not nice but not the end of the world either I guess. If you have to have both felix and fileinstall on the classpath then maybe try to set- up a visibility filter for one of them that filters out the package in
question.

regards,

Karl

On Wed, Jul 8, 2009 at 12:30 PM, Matthias
Neubert<sur...@onlinehome.de>
wrote:

Hello,

I've tried your patch and it worked! Thank you!

BUT:

There is another Problem which only occur in all 1.9.0 snapshots (4.
,
7.,
8. july), but NOT with 1.8.0 :

If I add in my Android Project in Eclipse the fileinstall.jar (1.2.0
or
current snapshot) to classpath while
having Felix 1.9.0 on classpath (as a referenced lib ) I get folling
Error
when Eclipse tries to build the project (right after adding)

-> this does not happen with Felix 1.8.0

-> I can add fileinstall.jar without problems if no felix.jar is
added

-> if adding fileinstall.jar first, then adding felix.jar, the same
problem
occurs

-> problem also occurs in a completly fresh android project







UNEXPECTED TOP-LEVEL EXCEPTION:
java.lang.IllegalArgumentException: already added:
Lorg/osgi/service/log/LogEntry;
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at

com. android. dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
com.android.dx.dex.file.DexFile.add(DexFile.java:143)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
com.android.dx.command.dexer.Main.processClass(Main.java:299)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
com.android.dx.command.dexer.Main.processFileBytes(Main.java: 276)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
com.android.dx.command.dexer.Main.access$100(Main.java:56)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
com.android.dx.command.dexer.Main $1.processFileBytes(Main.java:228)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



com. android. dx. cf. direct.ClassPathOpener.processArchive(ClassPathOpener.java: 245)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



com. android. dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java: 130)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



com. android. dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:108)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
com.android.dx.command.dexer.Main.processOne(Main.java:245)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
com.android.dx.command.dexer.Main.processAllFiles(Main.java: 183)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
com.android.dx.command.dexer.Main.run(Main.java:139)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



sun. reflect. NativeMethodAccessorImpl. invoke(NativeMethodAccessorImpl.java:39)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



sun. reflect. DelegatingMethodAccessorImpl. invoke(DelegatingMethodAccessorImpl.java:25)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
java.lang.reflect.Method.invoke(Method.java:585)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
com.android.ide.eclipse.adt.build.DexWrapper.run(Unknown Source)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
com.android.ide.eclipse.adt.build.ApkBuilder.executeDx(Unknown
Source)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
com.android.ide.eclipse.adt.build.ApkBuilder.build(Unknown Source)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



org.eclipse.core.internal.events.BuildManager $2.run(BuildManager.java:633)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



org. eclipse. core. internal.events.BuildManager.basicBuild(BuildManager.java:170)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



org. eclipse. core. internal.events.BuildManager.basicBuild(BuildManager.java:201)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



org.eclipse.core.internal.events.BuildManager $1.run(BuildManager.java:253)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:37)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



org. eclipse. core. internal.events.BuildManager.basicBuild(BuildManager.java:256)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



org. eclipse. core. internal. events.BuildManager.basicBuildLoop(BuildManager.java:309)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



org. eclipse. core.internal.events.BuildManager.build(BuildManager.java:341)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at



org. eclipse. core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java: 140)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at


org. eclipse. core.internal.events.AutoBuildJob.run(AutoBuildJob.java:238)
[2009-07-08 11:34:48 - FelixEmbedAndroid]       at
org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
[2009-07-08 11:34:48 - FelixEmbedAndroid] 1 error; aborting
[2009-07-08 11:34:48 - FelixEmbedAndroid] Conversion to Dalvik
format
failed
with error 1



regards
Matthias

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@felix.apache.org
For additional commands, e-mail: users-h...@felix.apache.org

Reply via email to