[ 
https://issues.apache.org/jira/browse/FELIX-3854?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13595118#comment-13595118
 ] 

Karl Pauls commented on FELIX-3854:
-----------------------------------

Well, clearly, option a) is what it is. The restriction is that you from now on 
have to put the felix cache inside the internal memory. As you point out, 
option b) would be an optimization, however, I don't think it is need. You 
should be able to just use the reference: protocol to install your bundles from 
the sd card. In that case, felix will not put the jar into the cache while 
still putting the dex inside of it. 

Can you try to:
- configure felix to put its cache inside internal memory.
- install all your bundles from the sd card but prefix the file urls with a 
reference protocol 
    i.e., file:/sdcard/mybundles/foo.jar becomes 
reference:file:/sdcard/mybundles/foo.jar

verify that it is working and that the jars don't get sucked into the internal 
storage? If so, I'd say we can close this issue.


                
> Problem running Felix in Android 4.1 ad 4.2 (JB)
> ------------------------------------------------
>
>                 Key: FELIX-3854
>                 URL: https://issues.apache.org/jira/browse/FELIX-3854
>             Project: Felix
>          Issue Type: Bug
>          Components: Framework
>    Affects Versions: framework-4.0.3
>         Environment: Once Felix is running in the smartphone (Samsung Galaxy 
> Nexus with Android 4.2), the problem arises when a new bundle is being 
> installed (considering that the felix cache directory has been placed in the 
> external sd card by using the property org.osgi.framework.storage).
>            Reporter: Rafael Bachiller
>            Assignee: Karl Pauls
>            Priority: Minor
>              Labels: Android, Bean, Jelly, patch
>
> During the installation process, Felix places the .jar in the cache and then 
> obtains the dex file that is inside the jar file in order to put the dex file 
> in the cache directory. Then, Felix executes it.
> In the new versions of Android, this process fails because the system does 
> not allow any program to place and execute any dex file in the sd card. The 
> code line that illustrate the problem is in the file 
> felix/framework/src/main/java/org/apache/felix/frameworBundleWiringImp.java 
> (line 2271).
> In my modest opinion, there are two possible solutions:
> a) For these newer versions of Android, it is not possible to place the cache 
> in the external sd card. For this solution no changes are needed in Felix, 
> but it creates a new limitation for running in the Android devices (the cache 
> can only be placed in the internal memory at runtime).
> b) Create a new parameter (e.g. felix.cache.dexfiles) that can be applied to 
> Android systems that indicates to Felix where to place the dex files. Thus, 
> Felix is not going to store in the same place the .jar files and the .dex 
> files (avoiding to waste the internal memory). For this solution, it is 
> necessary to create the parameter in Felix and to modify the line that has 
> been indicated before.
> Thank you very much in advance.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to