Well, I learned that the EnglishDictionary.jar bundle it is installed (also
Spellchecker and FrenchDictionary) because I obtained all bundles of the
bundlecontext of felix.
And I extracted the registered services of this bundles with:
ServiceReference[] sb=bc.getBundles()[i].getRegisteredServices();
Printing with:
Log.d("FELIX","registered services: "+sb[j].toString());
I obtain:
02-18 17:40:41.818: DEBUG/FELIX(847): registered services:
[tutorial.example2.service.DictionaryService]
It's a good new. Now...I want instanciate this service ...but I can't
instanciate a "DictionaryService" object :(. Some comment? I continue with
this, slowly but with energy.
Best Regards,
Pablo.
pablomj wrote:
>
> Good day, I have good and bad news.
>
> Firts, Clement thanks, exactly it is need to add in the manifest file the
> line:
> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
> />
>
> But, it is not enough if you are proving in a emulator. In this case, you
> need emulate an sdcard because if you don't make this you will not have
> permissions in the sdcard. So, if someday you have this problem, you must
> write in console in sdk path/tools:
>
> mksdcard 64M mySDCard (this creates the sdcard)
> android create avd -n nombre -t 4 (this creates an emulator)
> emulator -avd nombre -sdcard mySDCard (this launches the emulator with the
> sdcard)
>
> At this moment, you can create and push files in sdcard. Now, in my case
> is important don't forget make the push collectionOfJarsFiles in this new
> emulator with
> adb push C:\EclipseDevelopment\ApacheFelix\Apache_felix_demo\bundle
> /data/felix
>
>
> Well, the bad news are that...now I can install a bundle but I think this
> is wrong.
>
> I put here the modified code provided by Bruce:
>
> void launchFelix()
> {
> Log.d("Felix", "About to start Felix...");
> // Create a configuration property map
> String cacheDir = null;
> try
> {
> cacheDir = File.createTempFile("skifta", ".tmp").getParent();
> }
> catch (IOException e)
> {
> Log.d("Felix", "unable to create temp file", e);
> return;
> }
>
> Map configMap = new StringMap(false);
> configMap.put("org.osgi.framework.storage", cacheDir);
> configMap.put("felix.embedded.execution", "true");
> configMap.put("org.osgi.service.http.port", "9990");
> configMap.put("org.osgi.framework.startlevel.beginning", "5");
>
> try
> {
> // Now create an instance of the framework with
> // our configuration properties.
> m_felix = new Felix(configMap);
> // Now start Felix instance.
> m_felix.start();
> Log.d("Felix", "Felix is started");
>
> BundleContext bc=m_felix.getBundleContext();
> bc.installBundle("file:/data/felix/EnglishDictionary.jar");
>
>
> for(org.osgi.framework.Bundle b :
> m_felix.getBundleContext().getBundles())
> {
> b.start();
> Log.d("Felix", "Bundle: " + b.getSymbolicName());
> }
> }
> catch (Throwable ex)
> {
> Log.d("Felix","Could not create framework: " +
> ex.getMessage(), ex);
> }
> }
>
>
> Well, the install is it made without problems, program don't jumps to the
> catch. So, I make install of the EnglishDictionary.jar. But, then, when I
> iterate in the for, the b.start() is also made, but I think that I am
> doing something wrong because b.getSymbolicName() "null".
>
> So, what do you think?The bundle is installed?I installed a void bundle?I
> made something wrong?
>
> Salutations and thanks for everyone.
> Pablo Muñoz.
>
>
>
> clement escoffier wrote:
>>
>> Hi,
>>
>>
>>
>> On 16.02.2010, at 19:20, pablomj wrote:
>>
>>>
>>> Hi everyone, I know what is my current problem.
>>>
>>> the problem is in this try
>>>
>>> void launchFelix()
>>> {
>>> Log.d("Felix", "About to start Felix...");
>>> // Create a configuration property map
>>> String cacheDir = null;
>>> //String FELIX_CACHE_DIR =
>>> "/data/data/net.luminis.android.felix/cache";
>>> try {
>>> cacheDir = File.createTempFile("skifta",
>>> ".tmp").getParent();
>>> } catch (IOException e) {
>>> Log.d("Felix", "unable to create temp file", e);
>>> return;
>>> }
>>> .
>>> .
>>> .
>>>
>>> Because I don't have permissions to write in the /sdcard directory of
>>> the
>>> emulator. So, the program can't create the temp file.
>>>
>>> somebody knows how I can add permissions to this directory?
>>> Thanks.
>>
>> Recent Android version have introduced a permission to write on the
>> sdcard
>> Add this line to your manifest:
>> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
>> />
>>
>> Moreover, check that you have created an AVD with an SDCARD.
>>
>> Regards,
>>
>> Clement
>>
>>>
>>>
>>>
>>>
>>>
>>> clement escoffier wrote:
>>>>
>>>>
>>>> On 15.02.2010, at 18:56, pablomj wrote:
>>>>
>>>>>
>>>>> Hi everyone, here are my advances,
>>>>>
>>>>> I reviewed all steps, I can instanciate a Felix object like in your
>>>>> example.
>>>>> It was a problem with dependencies.
>>>>>
>>>>> Proving for install for start and stop a bundle I made in the code:
>>>>>
>>>>> BundleContext newBundle = m_felix.getBundleContext();
>>>>> bb.installBundle(pathOfTheBundle);
>>>>>
>>>>> When...now my problem is this pathOfTheBundle, I tried put in
>>>>> pathOfTheBundle "/data/felix/EnglishDictionary.jar" (location where I
>>>>> put
>>>>> this bundle with adb push ..... in console )and some variants, but
>>>>> always
>>>>> is
>>>>> an wrong path. What I must express my bundle location?
>>>>>
>>>>> Can anybody help me? Thanks again.
>>>>
>>>> Try with: file:/data/felix//EnglishDictionary.jar.
>>>>
>>>> Be also aware that this location is not available on regular devices.
>>>> For
>>>> such kind of manipulation, you should use the external storage
>>>> (generally
>>>> /sdcard, but use the Environment class to get the root). (you can also
>>>> use
>>>> the internal application assets).
>>>>
>>>> Regards,
>>>>
>>>> Clement
>>>>
>>>>>
>>>>> Regards, Pablo.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Jackson, Bruce wrote:
>>>>>>
>>>>>> Yes, you can.
>>>>>>
>>>>>> In the code I sent you, you'll see that you can get a handle to the
>>>>>> BundleContext for the framework itself. From this you can then call:
>>>>>>
>>>>>> context.installBundle(String location);
>>>>>>
>>>>>> to install your own bundles.
>>>>>>
>>>>>>
>>>>>> On 12/02/2010 15:07, "pablomj" <[email protected]> wrote:
>>>>>>
>>>>>>>
>>>>>>> Oh, thanks Bruce and Karl for your comments.
>>>>>>>
>>>>>>> I did something wrong, because I can't instanciate an "Felix"
>>>>>>> object.
>>>>>>> So,
>>>>>>> I
>>>>>>> am going to review all steps...
>>>>>>>
>>>>>>> Although I don't see running this yet, I will can start and stop
>>>>>>> bundles
>>>>>>> from my Android application? I excited to view this!
>>>>>>>
>>>>>>> Regards,
>>>>>>> Pablo.
>>>>>>>
>>>>>>>
>>>>>>> Karl Pauls wrote:
>>>>>>>>
>>>>>>>> Why would you need 1.5 to be able to dex the bundle (the framework
>>>>>>>> itself is build for 1.3 btw.)?
>>>>>>>>
>>>>>>>> regards,
>>>>>>>>
>>>>>>>> Karl
>>>>>>>>
>>>>>>>> On Fri, Feb 12, 2010 at 1:15 PM, Jackson, Bruce
>>>>>>>> <[email protected]>
>>>>>>>> wrote:
>>>>>>>>> Hi Pablo
>>>>>>>>>
>>>>>>>>> See the attached code. The biggest problem I've encountered is
>>>>>>>>> that
>>>>>>>>> the
>>>>>>>>> Felix distribution is a huge pain to build under JDK 1.5, and
>>>>>>>>> therefore
>>>>>>>>> to
>>>>>>>>> be able to use some of the bundles (for example the http service)
>>>>>>>>> that
>>>>>>>>> are
>>>>>>>>> part of the distribution. Its not a simple job of just changing a
>>>>>>>>> couple
>>>>>>>>> of
>>>>>>>>> entries in POM files: some components download pre-built JAR files
>>>>>>>>> from
>>>>>>>>> the
>>>>>>>>> web and explode these, thereby having classes built under 1.4
>>>>>>>>> which
>>>>>>>>> will
>>>>>>>>> not
>>>>>>>>> work when you dexify the bundles.
>>>>>>>>>
>>>>>>>>> This is something that would be great to see some work done on by
>>>>>>>>> the
>>>>>>>>> Felix
>>>>>>>>> community, because while its true that the basic Felix core does
>>>>>>>>> and
>>>>>>>>> will
>>>>>>>>> support Android, most of the add-on bundles wont.
>>>>>>>>>
>>>>>>>>> For my part, the ideal solution would be to see the whole
>>>>>>>>> framework
>>>>>>>>> be
>>>>>>>>> based
>>>>>>>>> on JDK 1.5 and not 1.4.
>>>>>>>>>
>>>>>>>>> Thanks
>>>>>>>>>
>>>>>>>>> Bruce
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On 12/02/2010 11:32, "pablomj" <[email protected]> wrote:
>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Hi Bruce, I am trying the same, but I don't have the solution
>>>>>>>>>> yet.
>>>>>>>>>> Do you have some advance?
>>>>>>>>>> Salutations, thanks.
>>>>>>>>>> Pablo.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> Jackson, Bruce wrote:
>>>>>>>>>>>
>>>>>>>>>>> The Felix site has a useful section on getting things going on
>>>>>>>>>>> Android
>>>>>>>>>>> (
>>>>>>>>>>> http://felix.apache.org/site/apache-felix-and-google-android.html)
>>>>>>>>>>> but
>>>>>>>>>>> isn't
>>>>>>>>>>> so clear about embedding the framework into an Android app"
>>>>>>>>>>>
>>>>>>>>>>> "Apache Felix can also be integrated with an Android
>>>>>>>>>>> application.
>>>>>>>>>>> To
>>>>>>>>>>> achieve
>>>>>>>>>>> this, you need to embed Felix into onCreate() method of your
>>>>>>>>>>> Activity
>>>>>>>>>>> class
>>>>>>>>>>> (see Android docs for more details on how to use an Activity)
>>>>>>>>>>> and
>>>>>>>>>>> process
>>>>>>>>>>> your bundles as shown above."
>>>>>>>>>>>
>>>>>>>>>>> Has anyone got an example of how you do this? I understand how
>>>>>>>>>>> to
>>>>>>>>>>> write
>>>>>>>>>>> the
>>>>>>>>>>> Android app, and I get the point being made here. What I need to
>>>>>>>>>>> understand
>>>>>>>>>>> is:
>>>>>>>>>>>
>>>>>>>>>>> 1. How do you launch the Felix framework. What do I need to
>>>>>>>>>>> instantiate?
>>>>>>>>>>> 2. Where does the framework get its boot configuration (i.e.
>>>>>>>>>>> what
>>>>>>>>>>> bundles
>>>>>>>>>>> to
>>>>>>>>>>> load, run levels, environment variables, etc) from in this case?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Karl Pauls
>>>>>>>> [email protected]
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>> --
>>>>> View this message in context:
>>>>> http://old.nabble.com/Felix-on-Android-tp27245141p27597525.html
>>>>> Sent from the Apache Felix - Dev mailing list archive at Nabble.com.
>>>>>
>>>>
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://old.nabble.com/Felix-on-Android-tp27245141p27612787.html
>>> Sent from the Apache Felix - Dev mailing list archive at Nabble.com.
>>>
>>
>>
>>
>
>
--
View this message in context:
http://old.nabble.com/Felix-on-Android-tp27245141p27642947.html
Sent from the Apache Felix - Dev mailing list archive at Nabble.com.