Build Succeeded
Device - Google Pixel
cordova --version - 7.0.1
cordova platforms -
Installed platforms:
android 6.2.3
ios 4.3.1
cordova plugin version | grep phonegap-plugin-barcodescanner
phonegap-plugin-barcodescanner 6.0.8 "BarcodeScanner"
build.gradle
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
*/
apply plugin: 'com.android.application'
buildscript {
repositories {
mavenCentral()
jcenter()
}
// Switch the Android Gradle plugin version requirement depending on the
// installed version of Gradle. This dependency is documented at
// http://tools.android.com/tech-docs/new-build-system/version-compatibility
// and https://issues.apache.org/jira/browse/CB-8143
dependencies {
classpath 'com.android.tools.build:gradle:2.2.3'
}
}
// Allow plugins to declare Maven dependencies via build-extras.gradle.
allprojects {
repositories {
mavenCentral();
jcenter()
}
}
task wrapper(type: Wrapper) {
gradleVersion = '2.14.1'
}
// Configuration properties. Set these via environment variables, build-extras.gradle, or gradle.properties.
// Refer to: http://www.gradle.org/docs/current/userguide/tutorial_this_and_that.html
ext {
apply from: 'CordovaLib/cordova.gradle'
// The value for android.compileSdkVersion.
if (!project.hasProperty('cdvCompileSdkVersion')) {
cdvCompileSdkVersion = null;
}
// The value for android.buildToolsVersion.
if (!project.hasProperty('cdvBuildToolsVersion')) {
cdvBuildToolsVersion = null;
}
// Sets the versionCode to the given value.
if (!project.hasProperty('cdvVersionCode')) {
cdvVersionCode = null
}
// Sets the minSdkVersion to the given value.
if (!project.hasProperty('cdvMinSdkVersion')) {
cdvMinSdkVersion = null
}
// Whether to build architecture-specific APKs.
if (!project.hasProperty('cdvBuildMultipleApks')) {
cdvBuildMultipleApks = null
}
// .properties files to use for release signing.
if (!project.hasProperty('cdvReleaseSigningPropertiesFile')) {
cdvReleaseSigningPropertiesFile = null
}
// .properties files to use for debug signing.
if (!project.hasProperty('cdvDebugSigningPropertiesFile')) {
cdvDebugSigningPropertiesFile = null
}
// Set by build.js script.
if (!project.hasProperty('cdvBuildArch')) {
cdvBuildArch = null
}
// Plugin gradle extensions can append to this to have code run at the end.
cdvPluginPostBuildExtras = []
}
// PLUGIN GRADLE EXTENSIONS START
apply from: "phonegap-plugin-barcodescanner/mobileapp-barcodescanner.gradle"
// PLUGIN GRADLE EXTENSIONS END
def hasBuildExtras = file('build-extras.gradle').exists()
if (hasBuildExtras) {
apply from: 'build-extras.gradle'
}
// Set property defaults after extension .gradle files.
if (ext.cdvCompileSdkVersion == null) {
ext.cdvCompileSdkVersion = privateHelpers.getProjectTarget()
}
if (ext.cdvBuildToolsVersion == null) {
ext.cdvBuildToolsVersion = privateHelpers.findLatestInstalledBuildTools()
}
if (ext.cdvDebugSigningPropertiesFile == null && file('debug-signing.properties').exists()) {
ext.cdvDebugSigningPropertiesFile = 'debug-signing.properties'
}
if (ext.cdvReleaseSigningPropertiesFile == null && file('release-signing.properties').exists()) {
ext.cdvReleaseSigningPropertiesFile = 'release-signing.properties'
}
// Cast to appropriate types.
ext.cdvBuildMultipleApks = cdvBuildMultipleApks == null ? false : cdvBuildMultipleApks.toBoolean();
ext.cdvMinSdkVersion = cdvMinSdkVersion == null ? null : Integer.parseInt('' + cdvMinSdkVersion)
ext.cdvVersionCode = cdvVersionCode == null ? null : Integer.parseInt('' + cdvVersionCode)
def computeBuildTargetName(debugBuild) {
def ret = 'assemble'
if (cdvBuildMultipleApks && cdvBuildArch) {
def arch = cdvBuildArch == 'arm' ? 'armv7' : cdvBuildArch
ret += '' + arch.toUpperCase().charAt(0) + arch.substring(1);
}
return ret + (debugBuild ? 'Debug' : 'Release')
}
// Make cdvBuild a task that depends on the debug/arch-sepecific task.
task cdvBuildDebug
cdvBuildDebug.dependsOn {
return computeBuildTargetName(true)
}
task cdvBuildRelease
cdvBuildRelease.dependsOn {
return computeBuildTargetName(false)
}
task cdvPrintProps << {
println('cdvCompileSdkVersion=' + cdvCompileSdkVersion)
println('cdvBuildToolsVersion=' + cdvBuildToolsVersion)
println('cdvVersionCode=' + cdvVersionCode)
println('cdvMinSdkVersion=' + cdvMinSdkVersion)
println('cdvBuildMultipleApks=' + cdvBuildMultipleApks)
println('cdvReleaseSigningPropertiesFile=' + cdvReleaseSigningPropertiesFile)
println('cdvDebugSigningPropertiesFile=' + cdvDebugSigningPropertiesFile)
println('cdvBuildArch=' + cdvBuildArch)
println('computedVersionCode=' + android.defaultConfig.versionCode)
android.productFlavors.each { flavor ->
println('computed' + flavor.name.capitalize() + 'VersionCode=' + flavor.versionCode)
}
}
android {
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
defaultConfig {
versionCode cdvVersionCode ?: new BigInteger("" + privateHelpers.extractIntFromManifest("versionCode"))
applicationId privateHelpers.extractStringFromManifest("package")
if (cdvMinSdkVersion != null) {
minSdkVersion cdvMinSdkVersion
}
}
lintOptions {
abortOnError false;
}
compileSdkVersion cdvCompileSdkVersion
buildToolsVersion cdvBuildToolsVersion
if (Boolean.valueOf(cdvBuildMultipleApks)) {
productFlavors {
armv7 {
versionCode defaultConfig.versionCode*10 + 2
ndk {
abiFilters "armeabi-v7a", ""
}
}
x86 {
versionCode defaultConfig.versionCode*10 + 4
ndk {
abiFilters "x86", ""
}
}
all {
ndk {
abiFilters "all", ""
}
}
}
}
/*
ELSE NOTHING! DON'T MESS WITH THE VERSION CODE IF YOU DON'T HAVE TO!
else if (!cdvVersionCode) {
def minSdkVersion = cdvMinSdkVersion ?: privateHelpers.extractIntFromManifest("minSdkVersion")
// Vary versionCode by the two most common API levels:
// 14 is ICS, which is the lowest API level for many apps.
// 20 is Lollipop, which is the lowest API level for the updatable system webview.
if (minSdkVersion >= 20) {
defaultConfig.versionCode += 9
} else if (minSdkVersion >= 14) {
defaultConfig.versionCode += 8
}
}
*/
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_6
targetCompatibility JavaVersion.VERSION_1_6
}
if (cdvReleaseSigningPropertiesFile) {
signingConfigs {
release {
// These must be set or Gradle will complain (even if they are overridden).
keyAlias = ""
keyPassword = "__unset" // And these must be set to non-empty in order to have the signing step added to the task graph.
storeFile = null
storePassword = "__unset"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
addSigningProps(cdvReleaseSigningPropertiesFile, signingConfigs.release)
}
if (cdvDebugSigningPropertiesFile) {
addSigningProps(cdvDebugSigningPropertiesFile, signingConfigs.debug)
}
}
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
// SUB-PROJECT DEPENDENCIES START
debugCompile(project(path: "CordovaLib", configuration: "debug"))
releaseCompile(project(path: "CordovaLib", configuration: "release"))
compile "com.android.support:support-v4:24.1.1+"
compile "com.facebook.android:facebook-android-sdk:4.+"
compile "com.google.android.gms:play-services-auth:+"
compile "com.google.android.gms:play-services-identity:+"
// SUB-PROJECT DEPENDENCIES END
}
def promptForReleaseKeyPassword() {
if (!cdvReleaseSigningPropertiesFile) {
return;
}
if ('__unset'.equals(android.signingConfigs.release.storePassword)) {
android.signingConfigs.release.storePassword = privateHelpers.promptForPassword('Enter key store password: ')
}
if ('__unset'.equals(android.signingConfigs.release.keyPassword)) {
android.signingConfigs.release.keyPassword = privateHelpers.promptForPassword('Enter key password: ');
}
}
gradle.taskGraph.whenReady { taskGraph ->
taskGraph.getAllTasks().each() { task ->
if (task.name == 'validateReleaseSigning' || task.name == 'validateSigningRelease') {
promptForReleaseKeyPassword()
}
}
}
def addSigningProps(propsFilePath, signingConfig) {
def propsFile = file(propsFilePath)
def props = new Properties()
propsFile.withReader { reader ->
props.load(reader)
}
def storeFile = new File(props.get('key.store') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'storeFile'))
if (!storeFile.isAbsolute()) {
storeFile = RelativePath.parse(true, storeFile.toString()).getFile(propsFile.getParentFile())
}
if (!storeFile.exists()) {
throw new FileNotFoundException('Keystore file does not exist: ' + storeFile.getAbsolutePath())
}
signingConfig.keyAlias = props.get('key.alias') ?: privateHelpers.ensureValueExists(propsFilePath, props, 'keyAlias')
signingConfig.keyPassword = props.get('keyPassword', props.get('key.alias.password', signingConfig.keyPassword))
signingConfig.storeFile = storeFile
signingConfig.storePassword = props.get('storePassword', props.get('key.store.password', signingConfig.storePassword))
def storeType = props.get('storeType', props.get('key.store.type', ''))
if (!storeType) {
def filename = storeFile.getName().toLowerCase();
if (filename.endsWith('.p12') || filename.endsWith('.pfx')) {
storeType = 'pkcs12'
} else {
storeType = signingConfig.storeType // "jks"
}
}
signingConfig.storeType = storeType
}
for (def func : cdvPluginPostBuildExtras) {
func()
}
// This can be defined within build-extras.gradle as:
// ext.postBuildExtras = { ... code here ... }
if (hasProperty('postBuildExtras')) {
postBuildExtras()
}
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.android.support') {
if (!requested.name.startsWith("multidex")) {
details.useVersion '25.3.1'
}
}
}
}
I have the same issue, last week it was building correctly.
Same here. Yesterday was fine, today this breaks the build. My version of the plugin is 6.0.6.
Same story here. Not sure what got updated, and where :\
@amit-t, can you share the plugin list you have? I have a feeling that it might be related to other plugin causing a mess?
@yosi-dediashvili , here's go mine:
com.telerik.plugins.nativepagetransitions 0.6.5 "Native Page Transitions"
cordova-android-play-services-gradle-release 0.0.2 "cordova-android-play-services-gradle-release"
cordova-android-support-gradle-release 0.0.2 "cordova-android-support-gradle-release"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-compat 1.1.0 "Compat"
cordova-plugin-contacts 2.3.1 "Contacts"
cordova-plugin-device 1.1.6 "Device"
cordova-plugin-facebook4 1.9.1 "Facebook Connect"
cordova-plugin-file 4.3.3 "File"
cordova-plugin-file-transfer 1.6.3 "File Transfer"
cordova-plugin-geolocation 2.4.3 "Geolocation"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.2.3 "StatusBar"
cordova-plugin-vibration 2.1.5 "Vibration"
cordova-plugin-whitelist 1.3.2 "Whitelist"
cordova-plugin-wkwebview-engine 1.1.4-dev "Cordova WKWebView Engine"
cordova-plugin-x-socialsharing 5.1.8 "SocialSharing"
cordova-sqlite-storage 2.0.4 "Cordova sqlite storage plugin"
es6-promise-plugin 4.1.0 "Promise"
info.protonet.imageresizer 0.1.1 "Image Resizer"
ionic-plugin-keyboard 2.2.1 "Keyboard"
phonegap-plugin-barcodescanner 6.0.7 "BarcodeScanner"
phonegap-plugin-push 1.10.5 "PushPlugin"
See, the problem is that Facebook SDK recently included ZXing as a dependency.
https://github.com/jeduan/cordova-plugin-facebook4/issues/550
OK, so the issue here is with the underlying module. The barcodescanner-lib-aar: https://github.com/EddyVerbruggen/barcodescanner-lib-aar/tree/master/barcodescanner/src/main/java/com/google/zxing
Seems like instead of depending on the barcode lib, it's including the whole source, essentially redefining everything, and that's why the build fails (there's the lib being included because of the Facebook SDK, and the lib getting redefined by the barcode lib).
Seems like forcing version 4.25.0 of the Facebook SDK (if you don't need 4.26.0), solves this. Add a after_platform_add hook:
if [ -d "platforms/android" ]; then
echo '
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == "com.facebook.android") {
details.useVersion "4.25.0"
}
}
}
' > platforms/android/build-extras.gradle
fi
@yosi-dediashvili - Here is my list
cordova-plugin-calendar 4.6.0 "Calendar"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-compat 1.1.0 "Compat"
cordova-plugin-console 1.0.7 "Console"
cordova-plugin-datepicker 0.9.3 "DatePicker"
cordova-plugin-device 1.1.6 "Device"
cordova-plugin-facebook4 1.9.1 "Facebook Connect"
cordova-plugin-googleplus 5.1.1 "Google SignIn"
cordova-plugin-inappbrowser 1.7.1 "InAppBrowser"
cordova-plugin-splashscreen 4.0.3 "Splashscreen"
cordova-plugin-statusbar 2.2.3 "StatusBar"
cordova-plugin-whitelist 1.3.2 "Whitelist"
cordova-plugin-wkwebview-engine 1.1.4-dev "Cordova WKWebView Engine"
ionic-plugin-keyboard 2.2.1 "Keyboard"
phonegap-plugin-barcodescanner 6.0.8 "BarcodeScanner"
Where does the hook get added? in the build gradle?
@Ross-Rawlins you can create the path hooks/after_platform_add/ in your project root and inside that create a file called facebook4-fix.sh (the name doesn't matter, but it must be .sh) and put the code inside that file.
Then remove and readd android platform.
If you are using Ionic the folder may already exists with a detailed README, just make sure to delete it from .gitignore or, if you are using git, the hooks will never be sent with the push.
oh i added the file build-extras.gradle and its all working now?
@Ross-Rawlins yes, but if you choose to create manually the file, remember to exclude it from .gitignore (which ignores all the platforms).
Put !platforms/android/build-extras.gradle after platforms/, for example:
tmp/
temp/
platforms/
!platforms/android/build-extras.gradle
plugins/
plugins/android.json
P.S. This is extracted from a Ionic project .gitignore, it may change if you aren't using it
I am getting same problem, Where I have to add hack in code repository. I have already build-extras.gradle file inside cordova-plugin-file -> src -> android -> build.extras.gradle. same file is blank so what I have to add in tthis file? Did nou understand why you are adding hack for facebook.
Kindly suggest!
@dgaurav-163 the "hack" is for Facebook because it now includes the barcodescanner, so there are two duplicates.
You have to copy-paste that code inside your platforms/android/build-extras.gradle file, not the one of the plugin.
if [ -d "platforms/android" ]; then
echo '
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == "com.facebook.android") {
details.useVersion "4.25.0"
}
}
}
' > platforms/android/build-extras.gradle
fi
create the hook not work for me, but adding this in the end of the build.gradle and work correctly!!
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == "com.facebook.android") {
details.useVersion "4.25.0"
}
}
}
Maik did you removed android and added again with the command platform rm android and platform add android? The hook is called only when you add the platform, not when you deploy the app
yeah, remove the platform but not work the hook, but add this code in the gradle and work.
I copied the exact code into the file it says and it works perfectly.
On 29 August 2017 at 21:21, Maik Restrepo notifications@github.com wrote:
yeah, remove the platform but not work the hook, but add this code in the
gradle and work.—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/phonegap/phonegap-plugin-barcodescanner/issues/535#issuecomment-325769264,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ADMeUNesM3Ii8zP1zCdEF0cbDPb-58zeks5sdGS6gaJpZM4PDXpS
.
--
Ross Rawlins
Tel: 021 531 7087
Cell: 072 424 9480
Skype: ross.rawlins
Email: [email protected]
http://www.duovili.co.za
https://plus.google.com/113781084234234096576/posts
https://www.facebook.com/Duovili
http://www.linkedin.com/company/duovili/ https://twitter.com/Duovili
This e-mail message and all attachments contain the CONFIDENTIAL AND
PROPRIETARY information of DUOVILI DEVELOPMENTS. and may contain LEGALLY
PRIVILEGED information. If you are not the intended recipient, you are
hereby notified that any disclosure, distribution, or use of this e-mail,
its attachments or any information contained therein is unauthorised and
prohibited. If you have received this in error, please contact the sender
immediately and delete this e-mail and any attachments.
same issue will remove when I add multiDexEnabled true in build.gradle inside defaultConfig.
defaultConfig {
minSdkVersion 14 //lower than 14 doesn't support multidex
targetSdkVersion 22
// Enabling multidex support.
multiDexEnabled true
}
try this, may be it will help
I was able to fix it by doing the below :-
in the file "project.properties"
Change the below three lines ...
cordova.system.library.2=com.facebook.android:facebook-android-sdk:+
cordova.system.library.3=com.google.android.gms:play-services-auth:+
cordova.system.library.4=com.google.android.gms:play-services-identity:+
TO
cordova.system.library.2=com.facebook.android:facebook-android-sdk:4.25.0
cordova.system.library.3=com.google.android.gms:play-services-auth:9.0.0
cordova.system.library.4=com.google.android.gms:play-services-identity:9.0.0
just fix facebook plugin version
I followed the solution proposed by @amit-t and got it work! Thank you!
The only change I made:
cordova.system.library.2=com.facebook.android:facebook-android-sdk:4.25.0
Thanks @vagnerbertoni !
I couldn't figure it out...just added this plugin and it worked: https://github.com/NazarKozak/cordova-plugin-multidex
Thanks @Maik3345. your solution worked for me. :+1:
I dont have the facebook plugin and I still get this error< have tried everything above to no avail.
Here is my plugin list
cordova-plugin-compat 1.1.0 "Compat"
cordova-plugin-device 1.1.5 "Device"
cordova-plugin-dialogs 1.3.2 "Notification"
cordova-plugin-multidex 1.0 "Cordova Multi Dex"
cordova-plugin-whitelist 1.3.2 "Whitelist"
phonegap-plugin-barcodescanner 6.0.6 "BarcodeScanner"
I just added multidex as above comment said it may work
Same here don't have facebook plugin but same error.
i have solved this issue just remove your cordova-plugin-compat 1.1.0 and reinstall the version 1.2.0 as defined here
https://stackoverflow.com/questions/46562289/multiple-dex-files-define-lorg-apache-cordova-buildhelper
Just as @amit-t mentioned above. Works like magic after spending few hours to get this fixed.
From
cordova.system.library.1=com.facebook.android:facebook-android-sdk:4.+
To
cordova.system.library.1=com.facebook.android:facebook-android-sdk:4.25.0
Thanks , it's working for me.
i have changed facebook dependencies version.
4.+ ==> 4.25.0
we are using phonegap build site to create build
Here is our config
<preference name="phonegap-version" value="cli-7.0.1" />
and we use below plugins
<plugin name="cordova-plugin-facebook4" spec="^1.9.1" source="npm">
<variable name="APP_ID" value="xxxxxxxxxxxxxx" />
<variable name="APP_NAME" value="xxxxxxxxxx" />
</plugin>
`<plugin name="cordova-android-support-gradle-release" spec="0.0.2" source="npm">
<variable name="ANDROID_SUPPORT_VERSION" value="25.+" />
</plugin>`
`<plugin name="phonegap-plugin-barcodescanner" spec="6.0.8" source="npm">
<variable name="CAMERA_USAGE_DESCRIPTION" value="To scan barcodes." />
</plugin>`
`<plugin spec="https://github.com/NazarKozak/cordova-plugin-multidex.git" source="git" />`
We get this type error
from phonegap build url
FAILURE: Build failed with an exception.
So any one please help me to resolve this issue ?
Just add to config.xml
<platform name="android">
<framework src="com.facebook.android:facebook-android-sdk:4.25.0" />
</platform>
cordova platform rm android
cordova platform add android
Both @arielgelbard's solution and @SRV-Garg's one worked for me. You could use one or the other. Just remember to:
cordova platform rm android
cordova platform add android
after making what they say.
cordova.system.library.2=com.facebook.android:facebook-android-sdk:4.25.0
Worked
@Maik3345
I created an example.sh hook and put it in "after_prepare" folder!
And before build use cmd $ chmod +x hooks/after_prepare/example.sh
Worked for me
Another solution would be to create an hooks/afterPrepare.js with the content of
module.exports = function(ctx) {
console.log("Rewrite facebook SDK version");
// make sure android platform is part of build
if (ctx.opts.platforms.indexOf('android') < 0) {
return;
}
var fs = ctx.requireCordovaModule('fs'),
path = ctx.requireCordovaModule('path'),
deferral = ctx.requireCordovaModule('q').defer();
var platformRoot = path.join(ctx.opts.projectRoot, 'platforms/android');
var propertiesFile = path.join(platformRoot, 'project.properties');
fs.readFile(propertiesFile, 'utf8', function (err,data) {
if (err) {
return deferral.reject(err);
}
var result = data.replace(/com\.facebook\.android\:facebook-android-sdk\:[\+0-9\.]+/g, 'com.facebook.android:facebook-android-sdk:4.25.0');
fs.writeFile(propertiesFile, result, 'utf8', function (err) {
if (err) return deferral.reject(err);
deferral.resolve();
});
});
return deferral.promise;
};
and add the following to your config.xml file
<platform name="android">
<hook src="hooks/afterPrepare.js" type="after_prepare" />
</platform>
Then just clean and rebuild. Works cross-platform as well.
@amit-t Thanks a lot. it works
Using com.facebook.android:facebook-android-sdk:4.25.0 works =) but
FB SDK is now on version com.facebook.android:facebook-android-sdk:4.37.0 so, we need to upgrade.
Is it possible to make the barcodescanner plugin to use the same version of the zxing library (com.google.zxing:core:3.3.0) as the FB SDK?
please someone could help me?
even if I add
I got still the error!
Any news?
+1
Did no one solve this?
@JustasKuizinas See workarounds mentioned in this issue: https://github.com/phonegap/phonegap-plugin-barcodescanner/issues/606. Key seems to be retreating to Facebook login plugin v 1.7.4. Not a fix but can work with older facebook plugin versions.
This issue is still happening. But now it's worst because the facebook4 plugin introduced some new features that make it incompatible with SDK version 4.25, so now you also have to install an older version of the plugin itself.
Is there no way around the use of the aar file? Is the codebase to big to include the code instead?
In case anyone needs it the last compatible version is 3.2.0 (the current is 4.2.1).
You can install it like this:
cordova plugin add [email protected] --save --variable APP_ID="123456789" --variable APP_NAME="yourappname" --variable FACEBOOK_ANDROID_SDK_VERSION="4.25.0"
You might also need to add multidex, like some other answers explain. There are cordova plugins for that as well.
Nothing worked. I tried every suggestion I found in this thread, on stackoverflow, and on the internet. Nothing helped me. phonegap-plugin-barcodescanner just wont coexist with cordova-plugin-facebook4. I ended up removing phonegap-plugin-barcodescanner and used cordova-plugin-qrscanner instead.
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
Reproduce by:
ionic start x blank
cd x
ionic cordova plugin add cordova-plugin-facebook4
ionic cordova build android // works fine
ionic cordova plugin add phonegap-plugin-barcodescanner
ionic cordova build android // breaks
Nothing worked. I tried every suggestion I found in this thread, on stackoverflow, and on the internet. Nothing helped me. phonegap-plugin-barcodescanner just wont coexist with cordova-plugin-facebook4. I ended up removing phonegap-plugin-barcodescanner and used cordova-plugin-qrscanner instead.
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dexReproduce by:
ionic start x blank
cd x
ionic cordova plugin add cordova-plugin-facebook4
ionic cordova build android // works fine
ionic cordova plugin add phonegap-plugin-barcodescanner
ionic cordova build android // breaks
Same scenario and error here :cry:
Any solution?
@thaismartinsprojects if you have not already, you might review the workarounds mentioned in this issue: https://github.com/phonegap/phonegap-plugin-barcodescanner/issues/606
@thaismartinsprojects if you have not already, you might review the workarounds mentioned in this issue: #606
Thank you, @viking2917! I finally found a solution. Not that best one, but it works.
Adding in build.gradle:
compile ("com.facebook.android:facebook-android-sdk:4.40.0"){
exclude group: 'com.google.zxing'
}
@thaismartinsprojects interesting. thanks for sharing that!
@thaismartinsprojects if you have not already, you might review the workarounds mentioned in this issue: #606
Thank you, @viking2917! I finally found a solution. Not that best one, but it works.
Adding in
build.gradle:compile ("com.facebook.android:facebook-android-sdk:4.40.0"){ exclude group: 'com.google.zxing' }
Hello, could you explain me where to put that code? i have been trying to solve this issue, but when i try to use
compile ("com.facebook.android:facebook-android-sdk:4.40.0"){
exclude group: 'com.google.zxing'
}
It doesnt make any effect since the build.grandle gets rebuilt everytime i try cordova build.
Thanks
I have a fix for this !
I forked the facebook plugin and excluded that library with exclude group: 'com.google.zxing'.
Here is my fork: https://github.com/AndreiTelteu/cordova-plugin-facebook4-no-zxing
To install my fork, do this:
cordova plugin rm cordova-plugin-facebook4
cordova plugin add cordova-plugin-facebook4-no-zxing --save --variable APP_ID="123456789" --variable APP_NAME="myApplication"
@AndreiTelteu , thank you!
@AndreiTelteu very nice, thank you!
is there any way that your build.gradle uses the FACEBOOK_ANDROID_SDK_VERSION preference?
also, is there any way to add a FACEBOOK_ANDROID_SDK_EXCLUDE_ZXING preference, which would default to false, and use it to exclude zxing or not?
with those 2 improvements, your changes could be integrated in the main facebook4 plugin
@AndreiTelteu could your changes be integrated into the main cordova-plugin-facebook4 with optional parameters to enable/disable ZXING ?
In my opinion, since the root cause is that this plugin provides it's own (slightly customized) aar version of the library instead of linking to the maven dependency, it's up to this plugin to be configured so it'll add the com.google.zxing group to the compile excludes.
If the plugin maintainer(s) simply add the snippet below to the src/android/barcodescanner.gradle file it should resolve this conflict as well as conflicts with other plugins that import the zxing library from maven.
configurations {
compile.exclude group: 'com.google.zxing'
}
If at all possible, I'd actually suggest doing a "clean" import of zxing instead, but that depends on what kind of customizations there are in the "aar" file and if these customizations could also be done without the use of said aar file.
Reproduced a very similar problem with same root cause. Error messages in particular were:
> Task :app:transformClassesWithDexBuilderForDebug
D8: Program type already present: com.google.zxing.DecodeHintType
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
Learn how to resolve the issue at https://developer.android.com/studio/build/dependencies#duplicate_classes.
Program type already present: com.google.zxing.DecodeHintType
Versions:
Cordova 9.0.0 ([email protected])
[email protected]
[email protected]
[email protected]
Many thanks @chancezeus for this analysis. I've suggested the change in src/android/barcodescanner.gradle as PR for a minimal fix.
For reference, #614 seems a duplicate.
I have a fix for this !
I forked the facebook plugin and excluded that library withexclude group: 'com.google.zxing'.
Here is my fork: https://github.com/AndreiTelteu/cordova-plugin-facebook4-no-zxing
To install my fork, do this:cordova plugin rm cordova-plugin-facebook4 cordova plugin add cordova-plugin-facebook4-no-zxing --save --variable APP_ID="123456789" --variable APP_NAME="myApplication"
Thanks, it worked here.
Most helpful comment
create the hook not work for me, but adding this in the end of the build.gradle and work correctly!!