You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Vladimir Kotikov (JIRA)" <ji...@apache.org> on 2015/12/03 12:42:10 UTC

[jira] [Comment Edited] (CB-10108) Plugin framework management fails

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

Vladimir Kotikov edited comment on CB-10108 at 12/3/15 11:41 AM:
-----------------------------------------------------------------

Ok, this looks for me as an upstream problem. The {{node-xcode}} doesn't check if the same path is already in FRAMEWORK_SEARCH_PATHS, when adds a new custom framework to project. We should probably report this problem to https://github.com/alunny/node-xcode.


was (Author: vladimir.kotikov):
Ok, this looks for me as an upstream problem. The {{node-xcode}} doesn't check if the same path is already in FRAMEWORK_SEARCH_PATHS, when adding a new custom framework to project. We should probably report this problem to https://github.com/alunny/node-xcode.

> Plugin framework management fails
> ---------------------------------
>
>                 Key: CB-10108
>                 URL: https://issues.apache.org/jira/browse/CB-10108
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: CordovaLib
>    Affects Versions: 5.4.1
>         Environment: Linux Xubuntu 13.10 x86_64, \{node -v === v5.1.0\} \{npm -v === 3.3.12\}
>            Reporter: Frederico Costa Galvão
>            Assignee: Vladimir Kotikov
>              Labels: android, cordova-6.0.0, framework, gradle, plugin, prepare, xcode
>
> The fix to https://issues.apache.org/jira/browse/CB-9976 has created another one (or made it visible), and the initial problem is thus left unsolved.
> Actually, I think the newly visible issue is something I've been suspecting for a while now. I'll explain it along the way.
> I was able to reproduce with a minimal scenario:
> (Step #2 is to fix another issue with 5.3.3, it has nothing to do with the issue at hand)
> * npm rm -g cordova && npm i -g cordova@5.3.3
> * mkdir -p <node/npm>/lib/node_modules/cordova/node_modules/cordova-lib/node_modules && ln -s <node/npm>/lib/node_modules/cordova/node_modules/cordova-app-hello-world <node/npm>/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/cordova-app-hello-world 
> * cordova create hello
> * cd hello/
> * cordova platform add \-\-save android
> * cordova plugin add \-\-save cordova-plugin-facebook4 \-\-variable APP_ID="123456789" \-\-variable APP_NAME="myApplication"
> * cordova \-d compile android \-\- \-\-minSdkVersion=15 *<\- At this point everything is okay, and this minSdkVersion is to work around another issue*
> * npm rm -g cordova && npm i -g cordova@5.4.1
> Before we go on, open up <node/npm>/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/platforms/android.js and add the following line at #174
> {code:javascript}
> console.log('options', JSON.stringify(options, null, 4));
> {code}
> * cordova prepare android -d
> Result:
> {code}
> Executing "before_prepare"  hook for all plugins.
> Searching PlatformJson files for differences between project vs. platform installed plugins
> Reinstalling missing plugin cordova-plugin-device to android platform
> Beginning processing of action stack for android project...
> Action stack processing complete.
> Beginning processing of action stack for android project...
> Action stack processing complete.
> Reinstalling missing plugin cordova-plugin-facebook4 to android platform
> Beginning processing of action stack for android project...
> Uninstalling Android library: com.facebook.android:facebook-android-sdk:4.+
> options {
>     "platforms": [
>         "android"
>     ],
>     "options": {
>         "verbose": true,
>         "argv": []
>     },
>     "verbose": true,
>     "silent": false,
>     "browserify": false,
>     "projectRoot": "<path>/temp/testes/5.4.1/hello-facebook-device",
>     "cordova": {
>         "platforms": [],
>         "plugins": [
>             "cordova-plugin-device",
>             "cordova-plugin-facebook4"
>         ],
>         "version": "5.4.1"
>     },
>     "paths": [
>         "<path>/temp/testes/5.4.1/hello-facebook-device/platforms/android/assets/www"
>     ],
>     "variables": {
>         "APP_ID": "123456789",
>         "APP_NAME": "myApplication",
>         "PACKAGE_NAME": "io.cordova.hellocordova"
>     },
>     "usePlatformWww": true
> }
> Error during processing of action! Attempting to revert...
> Error: TypeError: Uh oh!
> Invalid Version: undefined
>     at new SemVer (<node/npm>/lib/node_modules/cordova/node_modules/semver/semver.js:281:11)
>     at compare (<node/npm>/lib/node_modules/cordova/node_modules/semver/semver.js:571:10)
>     at Function.gte (<node/npm>/lib/node_modules/cordova/node_modules/semver/semver.js:620:10)
>     at module.exports.framework.uninstall (<node/npm>/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/platforms/android.js:176:28)
>     at <node/npm>/lib/node_modules/cordova/node_modules/cordova-lib/src/platforms/PlatformApiPoly.js:670:31
>     at Object.ActionStack.process (<node/npm>/lib/node_modules/cordova/node_modules/cordova-lib/node_modules/cordova-common/src/ActionStack.js:56:25)
>     at PlatformApiPoly.removePlugin (<node/npm>/lib/node_modules/cordova/node_modules/cordova-lib/src/platforms/PlatformApiPoly.js:314:20)
>     at <node/npm>/lib/node_modules/cordova/node_modules/cordova-lib/src/cordova/prepare.js:165:24
>     at _fulfilled (<node/npm>/lib/node_modules/cordova/node_modules/q/q.js:787:54)
>     at self.promiseDispatch.done (<node/npm>/lib/node_modules/cordova/node_modules/q/q.js:816:30)
> {code}
> So, the thing is: the code responsible for installing or uninstalling frameworks for android (I haven't checked other platforms completely) tries to access the platform version in a way that does not match reality. This bug only appears if you have a plugin that includes framework dependencies, as is the case with jeduan's cordova-plugin-facebook4.
> *options.platformVersion* is never a valid attribute of this object, in any test I've done, and the correct way to get it should be *options.cordova.version*.
> The thing is, I've been suspecting that plugin uninstallations were never able to handle gradle dependencies added by a plugin, as far as I remember.
> I have all my platforms on version control, and I remember quite a few times when I had to remove or update plugins like this, I had to clean leftovers from a few places by hand. None of the following sections were updated properly on a plugin uninstallation process (I might have forgotten some):
> # platforms/android/build.gradle (dependencies block: SUB-PROJECT DEPENDENCIES)
> # platforms/android/project.properties
> # platforms/ios/*.pdxproj (at every FRAMEWORK_SEARCH_PATHS section)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org