[
https://issues.apache.org/jira/browse/CB-10673?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15174561#comment-15174561
]
ASF GitHub Bot commented on CB-10673:
-------------------------------------
Github user nikhilkh commented on the pull request:
https://github.com/apache/cordova-android/pull/264#issuecomment-190947034
My concern with silently passing here is that there could be a
runtime/build failure because potentially the wrong version of the file is
added depending on the order of adding pluigns or even worse the same filename
has completely different source code.
Fixing those runtime or gradle build failure might not be a pleasant
experience either for the user. There is no good solution for this - but
working with the conflicting plugins to change where they add those files. For
commonly used libraries, they should just use the `framework` element as that
handles scenarios around multiple plugins adding common libraries.
> overlapped <source-file> target-dir from two different plugins causes a
> failure.
> --------------------------------------------------------------------------------
>
> Key: CB-10673
> URL: https://issues.apache.org/jira/browse/CB-10673
> Project: Apache Cordova
> Issue Type: Bug
> Components: Android, iOS, Windows
> Reporter: Byoungro So
> Assignee: Byoungro So
> Labels: pendingPR, triaged
>
> Cordova-android forces the target-dir of the <source-file> tag to be unique
> for no reason.
> However, this causes an issue.
> It is always possible that two different plugins could have overlapped
> target-dir path.
> It is impossible for a plugin to know that the target-dir is overlapped with
> other plugins's target dir.
> So, we should relax this requirement.
> For example, cordova-sqlite-storage has the following in its plugin.xml.
> {code}
> <source-file src="src/android/libs/armeabi/libsqlc-native-driver.so"
> target-dir="libs/armeabi"/>
> {code}
> com.intel.security has the following in its plugin.xml.
> {code}
> <source-file src="src/android/armeabi" target-dir="libs" />
> {code}
> When adding two plugins, cordova-android throws an exception.
> {code}
> [t6.0.1] cordova plugin add [email protected]
> Fetching plugin "[email protected]" via npm
> Installing "cordova-sqlite-storage" for android
> Installing "cordova-sqlite-storage" for ios
> [t6.0.1] cordova plugin add https://github.com/01org/AppSecurityApi.git#v1.4.1
> Fetching plugin "https://github.com/01org/AppSecurityApi.git" via git clone
> Repository "https://github.com/01org/AppSecurityApi.git" checked out to git
> ref "v1.4.1".
> Installing "com.intel.security" for android
> Failed to install 'com.intel.security':CordovaError: Uh oh!
> "/Users/bso/cordova/test/t6.0.1/platforms/android/libs/armeabi" already
> exists!
> at copyNewFile
> (/Users/bso/cordova/test/t6.0.1/platforms/android/cordova/lib/pluginHandlers.js:212:15)
> at handlers.source-file.install
> (/Users/bso/cordova/test/t6.0.1/platforms/android/cordova/lib/pluginHandlers.js:34:13)
> at Object.ActionStack.process
> (/Users/bso/cordova/test/t6.0.1/platforms/android/cordova/node_modules/cordova-common/src/ActionStack.js:56:25)
> at Api.addPlugin
> (/Users/bso/cordova/test/t6.0.1/platforms/android/cordova/Api.js:205:20)
> at handleInstall
> (/Users/bso/cordova/bso-cordova-lib/cordova-lib/src/plugman/install.js:598:6)
> at
> /Users/bso/cordova/bso-cordova-lib/cordova-lib/src/plugman/install.js:396:28
> at _fulfilled
> (/Users/bso/cordova/bso-cordova-lib/cordova-lib/node_modules/q/q.js:787:54)
> at self.promiseDispatch.done
> (/Users/bso/cordova/bso-cordova-lib/cordova-lib/node_modules/q/q.js:816:30)
> at Promise.promise.promiseDispatch
> (/Users/bso/cordova/bso-cordova-lib/cordova-lib/node_modules/q/q.js:749:13)
> at
> /Users/bso/cordova/bso-cordova-lib/cordova-lib/node_modules/q/q.js:509:49
> Error: Uh oh!
> "/Users/bso/cordova/test/t6.0.1/platforms/android/libs/armeabi" already
> exists!
> {code}
> I figured the same issue is present in cordova-ios and cordova-windows, too.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]