Mathis Hofer created CB-13308:
---------------------------------
Summary: Error on installation of a plugin's dependency that is
also a direct dependency
Key: CB-13308
URL: https://issues.apache.org/jira/browse/CB-13308
Project: Apache Cordova
Issue Type: Bug
Components: cordova-lib
Affects Versions: [email protected]
Environment: I'm using the following versions on Ubuntu Linux:
{{✔ ~
$ node --version
v8.3.0
✔ ~
$ npm --version
5.4.2
✔ ~
$ cordova --version
7.0.2-nightly.2017.9.20.596da5df
([email protected])}}
Reporter: Mathis Hofer
h1. Summary
I'm using the plugins cordova-plugin-device and cordova-plugin-background-mode
(which itself depends on cordova-plugin-device) in a project. The following
error occurred, when the background-mode plugins was defined before the device
plugin in config.xml:
{quote}Failed to install 'cordova-plugin-background-mode': Error
at
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/fetch.js:215:37
at _rejected
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:864:24)
at
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:890:30
at Promise.when
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:1142:31)
at Promise.promise.promiseDispatch
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:808:41)
at
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:624:44
at runSingle
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:137:13)
at flush
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:125:13)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9){quote}
This error does not happen, if cordova-plugin-device is not defined as direct
dependency, or if it is defined before background-mode in config.xml.
h1. Steps to reproduce
I setup a brand new project:
{quote}✔ ~
$ cordova create hello com.example.hello HelloWorld
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df
([email protected])
Creating a new cordova project.
✔ ~
$ cd hello/
✔ ~/hello
$ cordova platform add android
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df
([email protected])
Using cordova-fetch for [email protected]
Warning: using prerelease platform [email protected].
Use 'cordova platform add android@latest' to add the latest published version
instead.
Adding android project...
Creating Cordova project for the Android platform:
Path: platforms/android
Package: com.example.hello
Name: HelloWorld
Activity: MainActivity
Android target: android-26
Subproject Path: CordovaLib
Android project created with [email protected]
Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the
project
Installing "cordova-plugin-whitelist" for android
This plugin is only applicable for versions of cordova-android greater than
4.0. If you have a previous platform version, you do *not* need this plugin
since the whitelist will be built in.
Adding cordova-plugin-whitelist to package.json
Saved plugin info for "cordova-plugin-whitelist" to config.xml
--save flag or autosave detected
Saving android@~6.3.0-nightly.2017.9.20.dddb2837 into config.xml file ...}}
{quote}
I add the device plugin:
{quote}✔ ~/hello
$ cordova plugin add cordova-plugin-device
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df
([email protected])
Installing "cordova-plugin-device" for android
Adding cordova-plugin-device to package.json
Saved plugin info for "cordova-plugin-device" to config.xml
✔ ~/hello
$ cat package.json
{
"name": "com.example.hello",
"displayName": "HelloWorld",
"version": "1.0.0",
"description": "A sample Apache Cordova application that responds to the
deviceready event.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Apache Cordova Team",
"license": "Apache-2.0",
"dependencies": {
"cordova-android": "^6.3.0-nightly.2017.9.20.dddb2837",
"cordova-plugin-device": "^1.1.6",
"cordova-plugin-whitelist": "^1.3.2"
},
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {},
"cordova-plugin-device": {}
},
"platforms": [
"android"
]
}
}✔ ~/hello
$ cat config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.hello" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>HelloWorld</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="[email protected]" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<plugin name="cordova-plugin-whitelist" spec="1" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<engine name="android" spec="~6.3.0-nightly.2017.9.20.dddb2837" />
<plugin name="cordova-plugin-device" spec="^1.1.6" />
</widget>{quote}
When removing the platforms and plugins directories and doing a _cordova
prepare_, everything looks fine:
{quote}✔ ~/hello
$ rm -rf platforms/ plugins/
✔ ~/hello
$ cordova prepare --verbose
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df
([email protected])
No scripts found for hook "before_prepare".
Checking config.xml and package.json for saved platforms that haven't been
added to the project
Config.xml and package.json platforms are the same. No pkg.json modification.
Package.json and config.xml platforms are different. Updating config.xml with
most current list of platforms.
Discovered platform "android@^6.3.0-nightly.2017.9.20.dddb2837" in config.xml
or package.json. Adding it to the project
No scripts found for hook "before_platform_add".
Using cordova-fetch for cordova-android@^6.3.0-nightly.2017.9.20.dddb2837
Running command: npm install cordova-android@^6.3.0-nightly.2017.9.20.dddb2837
Command finished with error code 0: npm
install,cordova-android@^6.3.0-nightly.2017.9.20.dddb2837
Removing "cordova-" prefix from cordova-android
Warning: using prerelease platform [email protected].
Use 'cordova platform add android@latest' to add the latest published version
instead.
Adding android project...
PlatformApi successfully found for platform android
Creating Cordova project for the Android platform:
Path: platforms/android
Package: com.example.hello
Name: HelloWorld
Activity: MainActivity
Android target: android-26
Copying android template project to platforms/android
Subproject Path: CordovaLib
Android project created with [email protected]
Saving [email protected] into platforms.json
No scripts found for hook "after_platform_add".
PlatformApi successfully found for platform android
Checking config.xml for saved plugins that haven't been added to the project
Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-whitelist@^1.3.2"
Running command: npm install cordova-plugin-whitelist@^1.3.2
Command finished with error code 0: npm install,cordova-plugin-whitelist@^1.3.2
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-whitelist" =>
"/home/mhofer/hello/plugins/cordova-plugin-whitelist"
Calling plugman.install on plugin
"/home/mhofer/hello/plugins/cordova-plugin-whitelist" for platform "android
Installing "cordova-plugin-whitelist" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0:
/home/mhofer/hello/platforms/android/cordova/version
Finding scripts for "before_plugin_install" hook from plugin
cordova-plugin-whitelist on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-whitelist" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-whitelist on android.
This plugin is only applicable for versions of cordova-android
greater than 4.0. If you have a previous platform version, you do *not* need
this plugin since the whitelist will be built in.
Finding scripts for "after_plugin_install" hook from plugin
cordova-plugin-whitelist on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Discovered plugin "cordova-plugin-device" in config.xml. Adding it to the
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-device@^1.1.6"
Running command: npm install cordova-plugin-device@^1.1.6
Command finished with error code 0: npm install,cordova-plugin-device@^1.1.6
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-device" =>
"/home/mhofer/hello/plugins/cordova-plugin-device"
Calling plugman.install on plugin
"/home/mhofer/hello/plugins/cordova-plugin-device" for platform "android
Installing "cordova-plugin-device" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0:
/home/mhofer/hello/platforms/android/cordova/version
Finding scripts for "before_plugin_install" hook from plugin
cordova-plugin-device on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-device" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-device on android.
Finding scripts for "after_plugin_install" hook from plugin
cordova-plugin-device on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Checking for any plugins added to the project that have not been installed in
android platform
No differences found between plugins added to project and installed in android
platform. Continuing...
Generating platform-specific config.xml from defaults for android at
/home/mhofer/hello/platforms/android/res/xml/config.xml
Merging project's config.xml into platform-specific android config.xml
Merging and updating files from [www, platforms/android/platform_www] to
platforms/android/assets/www
mkdir platforms/android/assets/www/cordova-js-src
mkdir platforms/android/assets/www/cordova-js-src/android
copy
platforms/android/platform_www/cordova-js-src/android/nativeapiprovider.js
platforms/android/assets/www/cordova-js-src/android/nativeapiprovider.js (new
file)
copy
platforms/android/platform_www/cordova-js-src/android/promptbasednativeapi.js
platforms/android/assets/www/cordova-js-src/android/promptbasednativeapi.js
(new file)
copy platforms/android/platform_www/cordova-js-src/exec.js
platforms/android/assets/www/cordova-js-src/exec.js (new file)
copy platforms/android/platform_www/cordova-js-src/platform.js
platforms/android/assets/www/cordova-js-src/platform.js (new file)
mkdir platforms/android/assets/www/cordova-js-src/plugin
mkdir platforms/android/assets/www/cordova-js-src/plugin/android
copy platforms/android/platform_www/cordova-js-src/plugin/android/app.js
platforms/android/assets/www/cordova-js-src/plugin/android/app.js (new file)
copy platforms/android/platform_www/cordova.js
platforms/android/assets/www/cordova.js (updated file)
copy platforms/android/platform_www/cordova_plugins.js
platforms/android/assets/www/cordova_plugins.js (updated file)
delete platforms/android/assets/www/img/cordova.png (no source)
copy www/index.html platforms/android/assets/www/index.html (updated file)
copy www/js/index.js platforms/android/assets/www/js/index.js (updated file)
copy
platforms/android/platform_www/plugins/cordova-plugin-device/www/device.js
platforms/android/assets/www/plugins/cordova-plugin-device/www/device.js
(updated file)
Wrote out android application name "HelloWorld" to
/home/mhofer/hello/platforms/android/res/values/strings.xml
android-versionCode not found in config.xml. Generating a code based on version
in config.xml (1.0.0): 10000
Wrote out Android package name "com.example.hello" to
/home/mhofer/hello/platforms/android/src/com/example/hello/MainActivity.java
This app does not have launcher icons defined
This app does not have splash screens defined
This app does not have additional resource files defined
Prepared android project successfully
No scripts found for hook "after_prepare".{quote}
I then add the background-mode plugin:
{quote}✔ ~/hello
$ cordova plugin add cordova-plugin-background-mode
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df
([email protected])
Installing "cordova-plugin-background-mode" for android
Plugin dependency "[email protected]" already fetched, using that
version.
Dependent plugin "cordova-plugin-device" already installed on android.
Adding cordova-plugin-background-mode to package.json
Saved plugin info for "cordova-plugin-background-mode" to config.xml
✔ ~/hello
$ cat package.json
{
"name": "com.example.hello",
"displayName": "HelloWorld",
"version": "1.0.0",
"description": "A sample Apache Cordova application that responds to the
deviceready event.",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "Apache Cordova Team",
"license": "Apache-2.0",
"dependencies": {
"cordova-android": "^6.3.0-nightly.2017.9.21.dddb2837",
"cordova-plugin-background-mode": "^0.7.2",
"cordova-plugin-device": "^1.1.6",
"cordova-plugin-whitelist": "^1.3.2"
},
"cordova": {
"plugins": {
"cordova-plugin-whitelist": {},
"cordova-plugin-device": {},
"cordova-plugin-background-mode": {}
},
"platforms": [
"android"
]
}
}✔ ~/hello
$ cat config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.hello" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>HelloWorld</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="[email protected]" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<engine name="android" spec="^6.3.0-nightly.2017.9.20.dddb2837" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
<plugin name="cordova-plugin-device" spec="^1.1.6" />
<plugin name="cordova-plugin-background-mode" spec="^0.7.2" />
</widget>{quote}
Still, the prepare works as expected:
{quote}✔ ~/hello
$ rm -rf platforms/ plugins/
✔ ~/hello
$ cordova prepare --verbose
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df
([email protected])
No scripts found for hook "before_prepare".
Checking config.xml and package.json for saved platforms that haven't been
added to the project
Config.xml and package.json platforms are the same. No pkg.json modification.
Package.json and config.xml platforms are different. Updating config.xml with
most current list of platforms.
Discovered platform "android@^6.3.0-nightly.2017.9.21.dddb2837" in config.xml
or package.json. Adding it to the project
No scripts found for hook "before_platform_add".
Using cordova-fetch for cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Running command: npm install cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Command finished with error code 0: npm
install,cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Removing "cordova-" prefix from cordova-android
Warning: using prerelease platform [email protected].
Use 'cordova platform add android@latest' to add the latest published version
instead.
Adding android project...
PlatformApi successfully found for platform android
Creating Cordova project for the Android platform:
Path: platforms/android
Package: com.example.hello
Name: HelloWorld
Activity: MainActivity
Android target: android-26
Copying android template project to platforms/android
Subproject Path: CordovaLib
Android project created with [email protected]
Saving [email protected] into platforms.json
No scripts found for hook "after_platform_add".
PlatformApi successfully found for platform android
Checking config.xml for saved plugins that haven't been added to the project
Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-whitelist@^1.3.2"
Running command: npm install cordova-plugin-whitelist@^1.3.2
Command finished with error code 0: npm install,cordova-plugin-whitelist@^1.3.2
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-whitelist" =>
"/home/mhofer/hello/plugins/cordova-plugin-whitelist"
Calling plugman.install on plugin
"/home/mhofer/hello/plugins/cordova-plugin-whitelist" for platform "android
Installing "cordova-plugin-whitelist" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0:
/home/mhofer/hello/platforms/android/cordova/version
Finding scripts for "before_plugin_install" hook from plugin
cordova-plugin-whitelist on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-whitelist" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-whitelist on android.
This plugin is only applicable for versions of cordova-android
greater than 4.0. If you have a previous platform version, you do *not* need
this plugin since the whitelist will be built in.
Finding scripts for "after_plugin_install" hook from plugin
cordova-plugin-whitelist on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Discovered plugin "cordova-plugin-device" in config.xml. Adding it to the
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-device@^1.1.6"
Running command: npm install cordova-plugin-device@^1.1.6
Command finished with error code 0: npm install,cordova-plugin-device@^1.1.6
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-device" =>
"/home/mhofer/hello/plugins/cordova-plugin-device"
Calling plugman.install on plugin
"/home/mhofer/hello/plugins/cordova-plugin-device" for platform "android
Installing "cordova-plugin-device" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0:
/home/mhofer/hello/platforms/android/cordova/version
Finding scripts for "before_plugin_install" hook from plugin
cordova-plugin-device on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-device" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-device on android.
Finding scripts for "after_plugin_install" hook from plugin
cordova-plugin-device on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Discovered plugin "cordova-plugin-background-mode" in config.xml. Adding it to
the project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-background-mode@^0.7.2"
Running command: npm install cordova-plugin-background-mode@^0.7.2
Command finished with error code 0: npm
install,cordova-plugin-background-mode@^0.7.2
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-background-mode"
=> "/home/mhofer/hello/plugins/cordova-plugin-background-mode"
Calling plugman.install on plugin
"/home/mhofer/hello/plugins/cordova-plugin-background-mode" for platform
"android
Installing "cordova-plugin-background-mode" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0:
/home/mhofer/hello/platforms/android/cordova/version
Dependencies detected, iterating through them...
Requesting plugin "cordova-plugin-device".
Plugin dependency "[email protected]" already fetched, using that
version.
Dependent plugin "cordova-plugin-device" already installed on android.
Finding scripts for "before_plugin_install" hook from plugin
cordova-plugin-background-mode on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-background-mode" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-background-mode on android.
Finding scripts for "after_plugin_install" hook from plugin
cordova-plugin-background-mode on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Checking for any plugins added to the project that have not been installed in
android platform
No differences found between plugins added to project and installed in android
platform. Continuing...
Generating platform-specific config.xml from defaults for android at
/home/mhofer/hello/platforms/android/res/xml/config.xml
Merging project's config.xml into platform-specific android config.xml
Merging and updating files from [www, platforms/android/platform_www] to
platforms/android/assets/www
mkdir platforms/android/assets/www/cordova-js-src
mkdir platforms/android/assets/www/cordova-js-src/android
copy
platforms/android/platform_www/cordova-js-src/android/nativeapiprovider.js
platforms/android/assets/www/cordova-js-src/android/nativeapiprovider.js (new
file)
copy
platforms/android/platform_www/cordova-js-src/android/promptbasednativeapi.js
platforms/android/assets/www/cordova-js-src/android/promptbasednativeapi.js
(new file)
copy platforms/android/platform_www/cordova-js-src/exec.js
platforms/android/assets/www/cordova-js-src/exec.js (new file)
copy platforms/android/platform_www/cordova-js-src/platform.js
platforms/android/assets/www/cordova-js-src/platform.js (new file)
mkdir platforms/android/assets/www/cordova-js-src/plugin
mkdir platforms/android/assets/www/cordova-js-src/plugin/android
copy platforms/android/platform_www/cordova-js-src/plugin/android/app.js
platforms/android/assets/www/cordova-js-src/plugin/android/app.js (new file)
copy platforms/android/platform_www/cordova.js
platforms/android/assets/www/cordova.js (updated file)
copy platforms/android/platform_www/cordova_plugins.js
platforms/android/assets/www/cordova_plugins.js (updated file)
delete platforms/android/assets/www/img/cordova.png (no source)
copy www/index.html platforms/android/assets/www/index.html (updated file)
copy www/js/index.js platforms/android/assets/www/js/index.js (updated file)
copy
platforms/android/platform_www/plugins/cordova-plugin-background-mode/www/background-mode.js
platforms/android/assets/www/plugins/cordova-plugin-background-mode/www/background-mode.js
(updated file)
copy
platforms/android/platform_www/plugins/cordova-plugin-device/www/device.js
platforms/android/assets/www/plugins/cordova-plugin-device/www/device.js
(updated file)
Wrote out android application name "HelloWorld" to
/home/mhofer/hello/platforms/android/res/values/strings.xml
android-versionCode not found in config.xml. Generating a code based on version
in config.xml (1.0.0): 10000
Wrote out Android package name "com.example.hello" to
/home/mhofer/hello/platforms/android/src/com/example/hello/MainActivity.java
This app does not have launcher icons defined
This app does not have splash screens defined
This app does not have additional resource files defined
Prepared android project successfully
No scripts found for hook "after_prepare".{quote}
I now switch the order of these two plugins in config.xml:
{quote}✔ ~/hello
$ cat config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.hello" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>HelloWorld</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="[email protected]" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<engine name="android" spec="^6.3.0-nightly.2017.9.20.dddb2837" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
<plugin name="cordova-plugin-background-mode" spec="^0.7.2" />
<plugin name="cordova-plugin-device" spec="^1.1.6" />
</widget>{quote}
And again do the prepare, this time it causes the error:
{quote}✔ ~/hello
$ rm -rf platforms/ plugins/
✔ ~/hello
$ cordova prepare --verbose
Warning: using prerelease version 7.0.2-nightly.2017.9.20.596da5df
([email protected])
No scripts found for hook "before_prepare".
Checking config.xml and package.json for saved platforms that haven't been
added to the project
Config.xml and package.json platforms are the same. No pkg.json modification.
Package.json and config.xml platforms are different. Updating config.xml with
most current list of platforms.
Discovered platform "android@^6.3.0-nightly.2017.9.21.dddb2837" in config.xml
or package.json. Adding it to the project
No scripts found for hook "before_platform_add".
Using cordova-fetch for cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Running command: npm install cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Command finished with error code 0: npm
install,cordova-android@^6.3.0-nightly.2017.9.21.dddb2837
Removing "cordova-" prefix from cordova-android
Warning: using prerelease platform [email protected].
Use 'cordova platform add android@latest' to add the latest published version
instead.
Adding android project...
PlatformApi successfully found for platform android
Creating Cordova project for the Android platform:
Path: platforms/android
Package: com.example.hello
Name: HelloWorld
Activity: MainActivity
Android target: android-26
Copying android template project to platforms/android
Subproject Path: CordovaLib
Android project created with [email protected]
Saving [email protected] into platforms.json
No scripts found for hook "after_platform_add".
PlatformApi successfully found for platform android
Checking config.xml for saved plugins that haven't been added to the project
Discovered plugin "cordova-plugin-whitelist" in config.xml. Adding it to the
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-whitelist@^1.3.2"
Running command: npm install cordova-plugin-whitelist@^1.3.2
Command finished with error code 0: npm install,cordova-plugin-whitelist@^1.3.2
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-whitelist" =>
"/home/mhofer/hello/plugins/cordova-plugin-whitelist"
Calling plugman.install on plugin
"/home/mhofer/hello/plugins/cordova-plugin-whitelist" for platform "android
Installing "cordova-plugin-whitelist" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0:
/home/mhofer/hello/platforms/android/cordova/version
Finding scripts for "before_plugin_install" hook from plugin
cordova-plugin-whitelist on android platform only.
No scripts found for hook "before_plugin_install".
Install start for "cordova-plugin-whitelist" on android.
Beginning processing of action stack for android project...
Action stack processing complete.
Install complete for cordova-plugin-whitelist on android.
This plugin is only applicable for versions of cordova-android greater than
4.0. If you have a previous platform version, you do *not* need this plugin
since the whitelist will be built in.
Finding scripts for "after_plugin_install" hook from plugin
cordova-plugin-whitelist on android platform only.
No scripts found for hook "after_plugin_install".
No scripts found for hook "after_plugin_add".
Discovered plugin "cordova-plugin-background-mode" in config.xml. Adding it to
the project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-background-mode@^0.7.2"
Running command: npm install cordova-plugin-background-mode@^0.7.2
Command finished with error code 0: npm
install,cordova-plugin-background-mode@^0.7.2
Copying plugin "/home/mhofer/hello/node_modules/cordova-plugin-background-mode"
=> "/home/mhofer/hello/plugins/cordova-plugin-background-mode"
Calling plugman.install on plugin
"/home/mhofer/hello/plugins/cordova-plugin-background-mode" for platform
"android
Installing "cordova-plugin-background-mode" for android
Running command: /home/mhofer/hello/platforms/android/cordova/version
Command finished with error code 0:
/home/mhofer/hello/platforms/android/cordova/version
Dependencies detected, iterating through them...
Requesting plugin "cordova-plugin-device".
Plugin dependency "cordova-plugin-device" not fetched, retrieving then
installing.
Running command: npm install cordova-plugin-device
Command finished with error code 0: npm install,cordova-plugin-device
Failed to install 'cordova-plugin-background-mode': Error
at
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-lib/src/plugman/fetch.js:215:37
at _rejected
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:864:24)
at
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:890:30
at Promise.when
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:1142:31)
at Promise.promise.promiseDispatch
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:808:41)
at
/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:624:44
at runSingle
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:137:13)
at flush
(/home/mhofer/.nvm/versions/node/v8.3.0/lib/node_modules/cordova/node_modules/cordova-fetch/node_modules/q/q.js:125:13)
at _combinedTickCallback (internal/process/next_tick.js:131:7)
at process._tickCallback (internal/process/next_tick.js:180:9)
Failed to restore plugin "cordova-plugin-background-mode" from config.xml. You
might need to try adding it again. Error: Failed to fetch plugin
cordova-plugin-device via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Failed to get absolute path to installed module
Discovered plugin "cordova-plugin-device" in config.xml. Adding it to the
project
No scripts found for hook "before_plugin_add".
Calling plugman.fetch on plugin "cordova-plugin-device@^1.1.6"
Running command: npm install cordova-plugin-device@^1.1.6
Command finished with error code 216: npm install,cordova-plugin-device@^1.1.6
Failed to restore plugin "cordova-plugin-device" from config.xml. You might
need to try adding it again. Error: Failed to fetch plugin
cordova-plugin-device@^1.1.6 via registry.
Probably this is either a connection problem, or plugin spec is incorrect.
Check your connection and plugin name/version/URL.
Error: npm: Command failed with exit code 216 Error output:
npm WARN checkPermissions Missing write access to
/home/mhofer/hello/node_modules/cordova-plugin-device
npm WARN [email protected] No repository field.
npm ERR! path /home/mhofer/hello/node_modules/cordova-plugin-device
npm ERR! code ELOOP
npm ERR! errno -40
npm ERR! syscall access
npm ERR! ELOOP: too many symbolic links encountered, access
'/home/mhofer/hello/node_modules/cordova-plugin-device'
npm ERR! A complete log of this run can be found in:
npm ERR! /home/mhofer/.npm/_logs/2017-09-21T15_28_52_386Z-debug.log
Checking for any plugins added to the project that have not been installed in
android platform
No differences found between plugins added to project and installed in android
platform. Continuing...
Generating platform-specific config.xml from defaults for android at
/home/mhofer/hello/platforms/android/res/xml/config.xml
Merging project's config.xml into platform-specific android config.xml
Merging and updating files from [www, platforms/android/platform_www] to
platforms/android/assets/www
mkdir platforms/android/assets/www/cordova-js-src
mkdir platforms/android/assets/www/cordova-js-src/android
copy
platforms/android/platform_www/cordova-js-src/android/nativeapiprovider.js
platforms/android/assets/www/cordova-js-src/android/nativeapiprovider.js (new
file)
copy
platforms/android/platform_www/cordova-js-src/android/promptbasednativeapi.js
platforms/android/assets/www/cordova-js-src/android/promptbasednativeapi.js
(new file)
copy platforms/android/platform_www/cordova-js-src/exec.js
platforms/android/assets/www/cordova-js-src/exec.js (new file)
copy platforms/android/platform_www/cordova-js-src/platform.js
platforms/android/assets/www/cordova-js-src/platform.js (new file)
mkdir platforms/android/assets/www/cordova-js-src/plugin
mkdir platforms/android/assets/www/cordova-js-src/plugin/android
copy platforms/android/platform_www/cordova-js-src/plugin/android/app.js
platforms/android/assets/www/cordova-js-src/plugin/android/app.js (new file)
copy platforms/android/platform_www/cordova.js
platforms/android/assets/www/cordova.js (updated file)
copy platforms/android/platform_www/cordova_plugins.js
platforms/android/assets/www/cordova_plugins.js (updated file)
delete platforms/android/assets/www/img/cordova.png (no source)
copy www/index.html platforms/android/assets/www/index.html (updated file)
copy www/js/index.js platforms/android/assets/www/js/index.js (updated file)
Wrote out android application name "HelloWorld" to
/home/mhofer/hello/platforms/android/res/values/strings.xml
android-versionCode not found in config.xml. Generating a code based on version
in config.xml (1.0.0): 10000
Wrote out Android package name "com.example.hello" to
/home/mhofer/hello/platforms/android/src/com/example/hello/MainActivity.java
This app does not have launcher icons defined
This app does not have splash screens defined
This app does not have additional resource files defined
Prepared android project successfully
No scripts found for hook "after_prepare".{quote}
Notice how the version of the device plugin has been modifed and
_node_modules/cordova-plugin-device_ is now a symlink pointing to itself:
{quote}✔ ~/hello
$ cat package.json
{
"name": "com.example.hello",
"displayName": "HelloWorld",
"version": "1.0.0",
"description": "A sample Apache Cordova application that responds to the
deviceready event.",
"main": "index.js",
"scripts": \{
"test": "echo \"Error: no test specified\" && exit 1"
\},
"author": "Apache Cordova Team",
"license": "Apache-2.0",
"dependencies": \{
"cordova-android": "^6.3.0-nightly.2017.9.21.dddb2837",
"cordova-plugin-background-mode": "^0.7.2",
"cordova-plugin-device": "file:node_modules/cordova-plugin-device",
"cordova-plugin-whitelist": "^1.3.2"
\},
"cordova": \{
"plugins": \{
"cordova-plugin-whitelist": {},
"cordova-plugin-device": {},
"cordova-plugin-background-mode": {}
\},
"platforms": \[
"android"
\]
\}
}
✔ ~/hello
$ cat config.xml
<?xml version='1.0' encoding='utf-8'?>
<widget id="com.example.hello" version="1.0.0"
xmlns="http://www.w3.org/ns/widgets"
xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>HelloWorld</name>
<description>
A sample Apache Cordova application that responds to the deviceready
event.
</description>
<author email="[email protected]" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
<engine name="android" spec="^6.3.0-nightly.2017.9.21.dddb2837" />
<plugin name="cordova-plugin-whitelist" spec="^1.3.2" />
<plugin name="cordova-plugin-device" spec="^1.1.6" />
<plugin name="cordova-plugin-background-mode" spec="^0.7.2" />
</widget>
✔ ~/hello
$ ls \-ld node_modules/cordova-*
drwxrwxr-x 9 mhofer mhofer 4096 Sep 21 17:28 node_modules/cordova-android
drwxrwxr-x 4 mhofer mhofer 4096 Sep 21 17:28
node_modules/cordova-plugin-background-mode
lrwxrwxrwx 1 mhofer mhofer 21 Sep 21 17:28 node_modules/cordova-plugin-device
-> cordova-plugin-device
drwxrwxr-x 5 mhofer mhofer 4096 Sep 21 17:28
node_modules/cordova-plugin-whitelist{quote}
The same error occures, if I add the background-plugin first, then the device
plugin.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]