androidcordova-pluginscocoonjs

CocoonJS & Cordova plugins: "class not found" error


I would be glad if we had an example on how cordova plugins should be wrapped for CocoonJS.

I'm trying to use the device-orientation plugin (compass) in a simple example but after the app has initialized, the navigator.compass.getCurrentHeading() returns an CompassError with the code:

Class not found

The class name cannot be resolved correctly, so probably something's wrong with the config.xml file.

After combining many sources, mine looks like this:

../www/config.xml

<?xml version='1.0' encoding='utf-8'?>
<widget id="my.compass.html" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
    <name>HelloCordovaCompass</name>
    <description>
        A sample Apache Cordova application that displays the current compass heading after the deviceready event.
    </description>
    <author email="a@cordova.apache.org" href="http://cordova.io">
    </author>
    <content src="index.html" />
    <access origin="*" />
    <preference name="fullscreen" value="true" />
    <preference name="orientation" value="landscape" />
    <preference name="webviewbounce" value="true" />   
    <feature name="App">
       <param name="android-package" value="org.apache.cordova.App" />
    </feature>      
    <feature name="Compass">
       <param name="android-package" value="org.apache.cordova.deviceorientation.CompassListener" />
    </feature> 
</widget>

I've also tried to include compass as plugin:

<plugin name="Compass" value="org.apache.cordova.device-orientation" />   

with no difference..

PS: The app works fine on plain Cordova.

[UPDATE]

Maybe the problem is here:

For this example I zipped the <project-name>/platforms/android/assets/www folder.

I'm not sure if this is enough for a Cordova plugin app, as the native code of the plugin is not included (CompassListener.java) and the only part that seems to work is actually its JavaScript interface (compass.js, CompassError.js, etc)..

On the other hand, If I try to zip the whole <project-name> directory as pointed out at the bottom of this tutorial, the CocoonJS Launcher crashes..

So, could at least someone confirm that the launcher can actually compile Cordova plugins?


Solution

  • If you want to use plugins you have to zip all Cordova project folders. Example:

    cd ~/projects/ && zip -r -X hellococoonfull.zip helloCocoonJS && cd -
    

    See the section "Using Cordova Plugins" of Getting Started with Cordova and CocoonJS guide.

    [Update]

    The CocoonJS Launcher is not ready for plugins yet. For using plugins you have to use de cloud compilation system.