Install cordova plugin for ONE platform only
Asked Answered
C

2

36

We want to install the com.blackberry.app plugin (http://plugins.cordova.io/#/package/com.blackberry.app) for our (cordova 3.4.0 CLI) project. IF I try "cordova plugin add com.blackberry.app", it is installing plugin for both android and blackberry10 platforms. Due to this, the android app crashes. I tried installing only this plugin for blackberry10 platform thru plugman, but the functionality doesn't work [although plugman says it successfully installed]

Is there a way in CLI to install a plugin for ONE platform only?

Thanks

Curdle answered 16/4, 2014 at 11:37 Comment(1)
There's now in Cordova a feature request thereof: github.com/apache/cordova-cli/issues/552Central
D
34

I've found that the only clean way to make it work is to modify 3 things:

  1. Edit the plugins/PLATFORM.js file (ex. plugins/android.js) and remove the plugin object from the "installed_plugins" array
  2. Do the same for the platforms/PLATFORM/www/cordova_plugins.js file where PLATFORM could be ios, blackberry10, firefoxos etc. In the android case will be inside assets/www instead of just www
  3. Last step is to delete the plugin directory inside platforms/PLATFORM/www/plugins/. In your case again it will be assets/www and not just www
Dalliance answered 21/4, 2014 at 12:9 Comment(6)
In Cordova 5, the directory structure has changed slightly. Instead of platforms/PLATFORM/www/, the directory has changed to platforms/PLATFORM/assets/www.Julesjuley
This worked for me too, but i had to do A LOT to get my version control playing nicely.Shores
Pity that cordova does not have a mechanism in place to install plugins only for a specific platform.Trimetric
Is there a way to automate this with a before-prepare hook?Cluny
Nice idea @Cluny that would be the ideal solution. You would need a hook before_platform_add because plugins are added to platforms on cordova platform add. You would run it only on the specific platformCentral
@JoãoPimentelFerreira I actually did end up building a script to install, update, and uninstall plugins with plugman. It ended up being needed as developers were changing and updating plugins and checking in without getting the team to match the updates. I also ended up with several plugins that only needed to exist on Android or iOS and not both.Cluny
W
8

Use Plugman to Manage Plugins

Installing Plugman

    $ npm install -g plugman

Adding a Plugin

    $ plugman --platform <ios|amazon-fireos|android|blackberry10|wp7|wp8> --project <directory> --plugin <name|url|path> [--plugins_dir <directory>] [--www <directory>] [--variable <name>=<value> [--variable <name>=<value> ...]]

Remove a Plugin

    $ plugman --uninstall --platform <ios|amazon-fireos|android|blackberry10|wp7|wp8> --project <directory> --plugin <id> [--www <directory>] [--plugins_dir <directory>]

Link this:

    plugman -d --platform android --project myProject --plugin org.apache.cordova.battery-status

Follow this link Full understand : http://docs.phonegap.com/en/edge/plugin_ref_plugman.md.html

Warlike answered 16/4, 2014 at 13:18 Comment(2)
Installing it thru plugman didn't help (as I had stated earlier). As a workaround, removed the plugin manually from plugins/android.json file and the android app works now!Curdle
You solution looked better but unfortunately plugman has some bugs not solved from a long time issues.apache.org/jira/browse/CB-5120Hayward

© 2022 - 2024 — McMap. All rights reserved.