Skip to content
This repository has been archived by the owner on Oct 24, 2022. It is now read-only.

[BUG] building cordova app fails when using barcode scanner plugin simultaneously #705

Closed
iwan-uschka opened this issue Sep 10, 2018 · 23 comments

Comments

@iwan-uschka
Copy link

Bug or feature request

[x] I'm reporting a reproducible issue with the code
[ ] I'm reporting a feature request

Describe the Bug of feature request

Cordova app can't be built when using cordova-plugin-facebook@2.4.0 and phonegab-plugin-barcodescanner@8.0.0 simultaneously.

Expected Behavior

Cordova app should be built.

Plugin version, OS, devices, etc

  • cordova-cli@8.0.0
  • cordova-android@7.1.1
  • cordova-plugin-facebook@2.4.0
  • phonegab-plugin-barcodescanner@8.0.0
  • no other plugin is used
  • no problems when using cordova-plugin-facebook@1.7.4

config.xml:

<platform name="android">
    <hook src="hooks/__myapp/android_plugins_plugman.js" type="after_platform_add" />
    <preference name="android-minSdkVersion" value="19" />
    <preference name="android-targetSdkVersion" value="26" />
    <preference name="AndroidPersistentFileLocation" value="Internal" />
    <icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
    ...
    <splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
    ...
    <config-file parent="/resources" target="./res/values/strings.xml">
        <string name="fb_app_id">some app id</string>
        <string name="fb_app_name">app name</string>
    </config-file>
</platform>
...
<plugin name="cordova-plugin-facebook4" spec="file:cordova_plugins/cordova-plugin-facebook4-2.4.0">
    <variable name="APP_ID" value="some app id" />
    <variable name="APP_NAME" value="app name" />
    <variable name="ANDROID_SDK_VERSION" value="4.+" />
</plugin>
<plugin name="phonegap-plugin-barcodescanner" spec="file:cordova_plugins/phonegap-plugin-barcodescanner-8.0.0">
    <variable name="CAMERA_USAGE_DESCRIPTION" value="some description" />
    <variable name="ANDROID_SUPPORT_V4_VERSION" value="27.1.1" />
</plugin>
...
<engine name="ios" spec="^4.5.5" />
<engine name="android" spec="^7.1.1" />

Additional Context

Already tried to solve the issue here: #507.

Error Log

Android Studio project detected


config file res/values/facebookconnect.xml requested for changes not found at /Users/SOME_USER_NAME/projects/SOME_PROJECT/platforms/android/res/values/facebookconnect.xml, ignoring

config file res/values/facebookconnect.xml requested for changes not found at /Users/SOME_USER_NAME/projects/SOME_PROJECT/platforms/android/res/values/facebookconnect.xml, ignoring


Running command: /Users/SOME_USER_NAME/projects/SOME_PROJECT/hooks/after_prepare/010_add_platform_class.js /Users/SOME_USER_NAME/projects/SOME_PROJECT


Running command: /Users/SOME_USER_NAME/projects/SOME_PROJECT/hooks/after_prepare/020_remove_sass_from_platforms.js /Users/SOME_USER_NAME/projects/SOME_PROJECT


ANDROID_HOME=/Users/SOME_USER_NAME/Library/Android/sdk

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_144.jdk/Contents/Home

studio

:wrapper




BUILD SUCCESSFUL




Total time: 2.882 secs




This build could be faster, please consider using the Gradle Daemon: https://docs.gradle.org/2.14/userguide/gradle_daemon.html


Subproject Path: CordovaLib


Subproject Path: app


publishNonDefault is deprecated and has no effect anymore. All variants are now published.


Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.


The Task.leftShift(Closure) method has been deprecated and is scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead.

  at build_3woh5i5cs7vu80u1tavsoqgsd.run(/Users/SOME_USER_NAME/projects/SOME_PROJECT/platforms/android/app/build.gradle:144)


:CordovaLib:preBuild
 UP-TO-DATE


:CordovaLib:preDebugBuild
 UP-TO-DATE


:CordovaLib:compileDebugAidl


:CordovaLib:compileDebugRenderscript


:CordovaLib:checkDebugManifest


:CordovaLib:generateDebugBuildConfig


:CordovaLib:prepareLintJar


:CordovaLib:generateDebugResValues


:CordovaLib:generateDebugResources


:CordovaLib:packageDebugResources


:CordovaLib:platformAttrExtractor


:CordovaLib:processDebugManifest


:CordovaLib:javaPreCompileDebug


:CordovaLib:processDebugJavaRes

NO-SOURCE

:app:preBuild

UP-TO-DATE

:app:preDebugBuild


Download https://maven.google.com/com/android/support/appcompat-v7/27.0.2/appcompat-v7-27.0.2.pom


Download https://maven.google.com/com/android/support/customtabs/27.0.2/customtabs-27.0.2.pom


Download https://maven.google.com/com/android/support/cardview-v7/27.0.2/cardview-v7-27.0.2.pom


Download https://maven.google.com/com/android/support/animated-vector-drawable/27.0.2/animated-vector-drawable-27.0.2.pom

Download https://maven.google.com/com/android/support/support-vector-drawable/27.0.2/support-vector-drawable-27.0.2.pom

Download https://maven.google.com/com/android/support/customtabs/27.0.2/customtabs-27.0.2.aar

Download https://maven.google.com/com/android/support/animated-vector-drawable/27.0.2/animated-vector-drawable-27.0.2.aar


Download https://maven.google.com/com/android/support/support-vector-drawable/27.0.2/support-vector-drawable-27.0.2.aar


Download https://maven.google.com/com/android/support/appcompat-v7/27.0.2/appcompat-v7-27.0.2.aar


Download https://maven.google.com/com/android/support/cardview-v7/27.0.2/cardview-v7-27.0.2.aar


:app:compileDebugAidl


:CordovaLib:packageDebugRenderscript

NO-SOURCE

:app:compileDebugRenderscript


:app:checkDebugManifest


:app:generateDebugBuildConfig


:app:prepareLintJar


:app:generateDebugResValues


:app:generateDebugResources


:app:mergeDebugResources


:app:createDebugCompatibleScreenManifests


:CordovaLib:processDebugResources


:CordovaLib:generateDebugSources


:CordovaLib:compileDebugJavaWithJavac
Note: Some input files use or override a deprecated API.

Note: Recompile with -Xlint:deprecation for details.




:CordovaLib:transformClassesAndResourcesWithPrepareIntermediateJarsForDebug


:app:processDebugManifest


:app:splitsDiscoveryTaskDebug


:app:processDebugResources


:app:generateDebugSources


:app:javaPreCompileDebug


:app:compileDebugJavaWithJavac
Note: /Users/SOME_USER_NAME/projects/SOME_PROJECT/platforms/android/app/src/main/java/org/apache/cordova/facebook/ConnectPlugin.java uses or overrides a deprecated API.


Note: Recompile with -Xlint:deprecation for details.




:app:compileDebugNdk
 NO-SOURCE

:app:compileDebugSources


:CordovaLib:mergeDebugShaders


:CordovaLib:compileDebugShaders


:CordovaLib:generateDebugAssets


:CordovaLib:mergeDebugAssets


:app:mergeDebugShaders


:app:compileDebugShaders


:app:generateDebugAssets


:app:mergeDebugAssets


:app:transformClassesWithStackFramesFixerForDebug


:app:transformClassesWithDesugarForDebug


:app:transformClassesWithDexBuilderForDebug


:app:transformDexArchiveWithExternalLibsDexMergerForDebug

FAILED



FAILURE: Build failed with an exception.



* What went wrong:


Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.


>
java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex


* Try:

Run with
--stacktrace option to get the stack trace. Run with --info
 or --debug option to get more log output.



* Get more help at https://help.gradle.org




BUILD FAILED
 in 25s

37 actionable tasks: 37 executed


(node:16024) UnhandledPromiseRejectionWarning: Error: /Users/SOME_USER_NAME/projects/SOME_PROJECT/platforms/android/gradlew: Command failed with exit code 1 Error output:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Note: /Users/SOME_USER_NAME/projects/SOME_PROJECT/platforms/android/app/src/main/java/org/apache/cordova/facebook/ConnectPlugin.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 25s
    at ChildProcess.whenDone (/Users/SOME_USER_NAME/projects/SOME_PROJECT/platforms/android/cordova/node_modules/cordova-common/src/superspawn.js:169:23)
    at ChildProcess.emit (events.js:182:13)
    at maybeClose (internal/child_process.js:962:16)
    at Socket.stream.socket.on (internal/child_process.js:381:11)
    at Socket.emit (events.js:182:13)
    at Pipe._handle.close (net.js:606:12)

(node:16024) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 1)

(node:16024) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.
@peterpeterparker
Copy link
Collaborator

peterpeterparker commented Sep 10, 2018

Plz use other channels for support inquiry, like Stackoverflow. Feel free to link your post here

@iwan-uschka
Copy link
Author

Now i am confused. Let's have a look again at #507 (comment):

ANDROID_SDK_VERSION, it's talking about the Facebook Android SDK, not about the Android SDK itself

So it doesn't make sense here to use 27.1.1 instead of 4.+ right?

And yes, i will create a stackoverflow issue even if @fredgalvao spoke about opening a ticket here.

Thx again for taking time to answer.

@peterpeterparker
Copy link
Collaborator

sorry it's me I was confused too and mixed the info, tired
you are right, 27.1.1 is facebook sdk, 4+ is android sdk

@peterpeterparker
Copy link
Collaborator

peterpeterparker commented Sep 10, 2018

@iwan-uschka have a look to your platforms/android/project.properties, what are the values you found there?
would you like to give a try with the android sdk version use by barcodescanner?

see https://stackoverflow.com/questions/52217275/cordova-plugin-facebook4-couldnt-make-the-app-start-android last week people faced the same issue and one solved it by using 4.28.0 and the other 4.35.0

if you can't use 4+ the game is to find which one is only accepted by the other(s) plugin(s) you are using

note: it happens often and it isn't a bug or something we could fix in the plugin I think, such a complex ecosystem with a lot of dependencies. that's why the variable ANDROID_SDK_VERSION was introduced in order to let each user specify the Android SDK version which works with the others plugins he/she use

@iwan-uschka
Copy link
Author

I think you mixed it again :) 27.1.1 is Android SDK for sure and 4.+ is Facebook SDK (for Android).

My platforms/android/project.properties looks like this:

target=android-27
android.library.reference.1=CordovaLib
android.library.reference.2=app
cordova.system.library.1=com.facebook.android:facebook-android-sdk:4.+
cordova.gradle.include.1=phonegap-plugin-barcodescanner/run-barcodescanner.gradle
cordova.system.library.2=com.android.support:support-v4:27.1.1

Like i mentioned above: without having the barcode scanner plugin installed, everything works fine. So no need to change the Facebook Android SDK version, right? I can't imagine that the barcode scanner plugin has anything to deal with the Facebook Android SDK. So from my point of view it doesn't rely on the correct Facebook SDK version. If this is the essential problem please tell me.

@peterpeterparker
Copy link
Collaborator

@iwan-uschka I should go to bed, these 14 hours of work for a Monday are too much 😂

Facebook SDK or Android SDK, anyhow it's a conflict not a bug I think. The trick is to find the right value

I read again the linked post, and I think what he meant is that the right value to find it the one when you install the barcode scanner plugin, not this plugin. ANDROID_SUPPORT_V4_VERSION should be set when you install the barcode plugin

from their doc

Optional variables: This plugin requires the Android support library v4. The minimum version is 24.1.0. Default value is 27.+. Check out the latest version here.

phonegap plugin add phonegap-plugin-barcodescanner --variable ANDROID_SUPPORT_V4_VERSION="27.1.1"

I just gonna allow my self to ping @fredgalvao

  1. Agree right? Conflict not a bug?
  2. Any tips about how to find the right value to set?
  3. Finally, should we rename the variable ANDROID_SDK_VERSION to, for example, FACEBOOK_ANDROID_SDK_VERSION?

@fredgalvao
Copy link
Collaborator

(I was already writing a reply when you did yours, but here we go)
@peterpeterparker

  1. Yes, it's a conflict between plugins where the user couldn't (no matter the reason) fix it himself. It's not a bug on our side, nor is it a bug on barcodescanner's side.
  2. See the original part of my reply bellow.
  3. I agree on that. ANDROID_SDK_VERSION is very confusing, and most people would guess its role wrong.

@iwan-uschka

Facebook SDK will transitively ask for a specific version of the android-support lib, and it's not clear through the project.properties or build.gradle files which version it is. We can infer it instead from the generated names for the build steps from gradle:

:app:preDebugBuild
Download https://maven.google.com/com/android/support/appcompat-v7/27.0.2/appcompat-v7-27.0.2.pom
Download https://maven.google.com/com/android/support/customtabs/27.0.2/customtabs-27.0.2.pom
Download https://maven.google.com/com/android/support/cardview-v7/27.0.2/cardview-v7-27.0.2.pom
Download https://maven.google.com/com/android/support/animated-vector-drawable/27.0.2/animated-vector-drawable-27.0.2.pom
Download https://maven.google.com/com/android/support/support-vector-drawable/27.0.2/support-vector-drawable-27.0.2.pom
Download https://maven.google.com/com/android/support/customtabs/27.0.2/customtabs-27.0.2.aar
Download https://maven.google.com/com/android/support/animated-vector-drawable/27.0.2/animated-vector-drawable-27.0.2.aar
Download https://maven.google.com/com/android/support/support-vector-drawable/27.0.2/support-vector-drawable-27.0.2.aar
Download https://maven.google.com/com/android/support/appcompat-v7/27.0.2/appcompat-v7-27.0.2.aar
Download https://maven.google.com/com/android/support/cardview-v7/27.0.2/cardview-v7-27.0.2.aar

We can see it's asking for version 27.0.2 of the components from the com.android.support group of dependencies, and we can confirm that by looking at the tag from the latest release of the facebook android sdk (which you're asking for with that 4.+ spec): https://github.com/facebook/facebook-android-sdk/blob/sdk-version-4.36.0/constants.gradle#L4.

So, you end up with the following tree:

  • facebook4@2.4.0::(com.facebook.android:facebook-android-sdk:4.+)
    • facebook-android-sdk@4.36.0::(supportLibraryVersion = "27.0.2")
      • com.android.support:<a bunch of modules>:27.0.2 see here
        • this includes the support-v4 module from here
  • barcodescanner@8.0.0::(with ANDROID_SUPPORT_V4_VERSION==27.1.1)
    • com.android.support:support-v4:27.1.1

Which is a conflict on com.android.support:support-v4 versions 27.0.2 and 27.1.1.
You can try that again using --variable ANDROID_SUPPORT_V4_VERSION="27.0.2" when installing the barcodescanner plugin, so that both versions asked match.

But remember that, by using 4.+ as the spec for the facebook android sdk, you're asking for future issues, because a new future 4.X version could ask for a different support-v4 version, which would start another cycle of conclicts all over again. And this is why I've been advocating minor-fixed versions on dependency, like 4.36.+, so that you'll only get new patch versions according to the semver manifest, which should never break your dependencies (unless facebook decides not to follow semver).

@peterpeterparker
Copy link
Collaborator

peterpeterparker commented Sep 10, 2018

thx for the feedback @fredgalvao 👍

let's rename the variable, I will try to do and publish it at the end of the week, I opened and assigned my self a feature request about it #706

@iwan-uschka
Copy link
Author

I think i understand the dependency situation here now and that the Facebook SDK version is important regarding ANDROID_SUPPORT_V4_VERSION which can result into conflicts with other plugins. Thanks!! The black boxes are getting more transparent..

I also learned here that ANDROID_SUPPORT_V4_VERSION version depends on the version of cordova-android specified in the config.xml. I am using cordova-android@7.1.1 which uses compileSdkVersion 27 (see) so i can be sure that ANDROID_SUPPORT_V4_VERSION@27.0.2 can be used. So this shouldn't be the problem.

Unfortunately it didn't work out. I tried several combinations of everything:

  • ANDROID_SUPPORT_VERSION@27.+
  • ANDROID_SUPPORT_VERSION@27.0.2
  • ANDROID_SUPPORT_VERSION@27.1.1

I also tried using cordova-android-support-gradle-release. I am ending up getting the same error as above.

So i really don't know what to do here next but don't wanna bother you. I am just wondering if i am the only one facing that issue.

I will try to find some extra help at stackoverflow.

@fredgalvao
Copy link
Collaborator

@iwan-uschka What did you get with ANDROID_SUPPORT_VERSION@27.0.2?

@iwan-uschka
Copy link
Author

Hi, i'm back from GSM dead zone or whatever it's called. Using ANDROID_SUPPORT_VERSION@27.0.2 i get the same error as mentioned in my initial comment of this thread.

@JustasKuizinas
Copy link

JustasKuizinas commented Dec 14, 2018

I am inatalling both plugins like this:
ionic cordova plugin add cordova-plugin-facebook4 --variable APP_ID="xxx" --variable APP_NAME="xxx" --variable FACEBOOK_ANDROID_SDK_VERSION="4.36.0"

ionic cordova plugin add phonegap-plugin-barcodescanner --variable ANDROID_SUPPORT_V4_VERSION="27.0.2" also tryed "27.+"

cordova-plugin-facebook4 version=> 3.2.0
phonegap-plugin-barcodescanner version=>8.0.1

And is still get the above error

* What went wrong:
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex

Maybe anyone solved this problem? I tryed everything and only thing to make a build succeed is to remove barcode plugin or facebook plugin

@chr4ss1
Copy link

chr4ss1 commented Feb 3, 2019

@JustasKuizinas You just have to change the facebook_android_sdk_version to be a bit smaller, I had the same error and all I did was this:

cordova plugin add cordova-plugin-facebook4@4.0.0 --variable APP_ID="....." --variable APP_NAME="...." --variable FACEBOOK_ANDROID_SDK_VERSION="4.25.0"  --save

and it started to work (don't forget to delete platofrms/android, and add it again.)

@shuhikari
Copy link

@ChrisEelmaa I really tried your solution, but around here it didn't work.

Has been a long time since I tried to solve this issue, but without success.

:app:compileDebugJavaWithJavac FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugJavaWithJavac'.
> Compilation failed; see the compiler error output for details.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

* Get more help at https://help.gradle.org

BUILD FAILED in 9s
38 actionable tasks: 36 executed, 2 up-to-date
/Users/shuhikari/ws/rock-heine-app/platforms/android/gradlew: Command failed with exit code 1 Error output:
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
/Users/shuhikari/ws/rock-heine-app/platforms/android/app/src/main/java/org/apache/cordova/facebook/ConnectPlugin.java:717: error: cannot find symbol
                AppEventsLogger.augmentWebView((WebView) this.webView.getView(), appContext);
                               ^
  symbol:   method augmentWebView(WebView,Context)
  location: class AppEventsLogger

@chr4ss1
Copy link

chr4ss1 commented Mar 2, 2019

ensure you're using the latest versions of both cordova-plugin-facebook4 and barcode @shuhikari

@shuhikari
Copy link

@ChrisEelmaa I tried, update also cordova-android@8.0.0 and the other plugins manually and still AppEventsLogger.augmentWebView((WebView) this.webView.getView(), appContext)

@chr4ss1
Copy link

chr4ss1 commented Mar 3, 2019

@shuhikari

Chriss-MBP:app chriseelmaa$ cordova -v
8.0.0

<plugin name="phonegap-plugin-barcodescanner" spec="^7.0.0">
    <variable name="CAMERA_USAGE_DESCRIPTION" value=".." />
    <variable name="PHOTOLIBRARY_USAGE_DESCRIPTION" value="..." />
</plugin>

<plugin name="cordova-plugin-facebook4" spec="^4.0.0">
    <variable name="APP_ID" value="..." />
    <variable name="APP_NAME" value="..." />
    <variable name="FACEBOOK_ANDROID_SDK_VERSION" value="4.25.0" />
</plugin>

I used (cordova platform add android@6.4.0 --save). Remove any cordova-*-gradle plugins if you have them installed (cordova-android-support-gradle-release).

@shuhikari
Copy link

@ChrisEelmaa Thank you so much, worked like a charm. Next step is google login.

@YannSuissa
Copy link

YannSuissa commented Mar 19, 2019

Hi,
I tried the @ChrisEelmaa solution and I couldn't compiled anything.

But I finaly made it with "cordova -v" : 8.1.2 (cordova-lib@8.1.1)
with engine name="android" spec="^7.1.1"

here are the commands i used :

rm -rf node_modules platforms plugins              #clean everything
cordova platform add android                       #redownload everything
cordova platform rm android                        #remove the platform to allow plugins removal
cordova plugin rm cordova-plugin-facebook4
cordova plugin rm cordova-android-firebase-gradle-release
cordova plugin rm cordova-android-play-services-gradle-release
cordova plugin rm cordova-android-support-gradle-release
cordova plugin rm cordova-plugin-firebase
cordova plugin add https://github.com/jeduan/cordova-plugin-facebook4 --save --variable APP_ID=xxx--variable APP_NAME=yyyyyyyyyyyyyyyyy
cordova platform add android                       #readd the platform

And after that recompile, it worked for me and my collegues too.
Cheers
Yann

@mtshare
Copy link

mtshare commented May 13, 2019

I'm still getting this error:
AppEventsLogger.augmentWebView((WebView) this.webView.getView(), appContext);

Please someone has a fix for that?
I tried everything I found in this thread...

@vm-ruizhang
Copy link

why nobody to fix this issue:

@dylanvdmerwe
Copy link

dylanvdmerwe commented Nov 1, 2019

Note that this is still an issue.

    "cordova-android": "^8.1.0",
    "cordova-plugin-facebook4": "6.2.0",
    "phonegap-plugin-barcodescanner": "^8.1.0",
Ionic:

   Ionic CLI                     : 5.4.5 (C:\Users\dylan\AppData\Roaming\npm\node_modules\ionic)
   Ionic Framework               : @ionic/angular 4.11.1
   @angular-devkit/build-angular : 0.803.0
   @angular-devkit/schematics    : 8.3.0
   @angular/cli                  : 8.3.0
   @ionic/angular-toolkit        : 2.0.0

Cordova:

   Cordova CLI       : 9.0.0 (cordova-lib@9.0.1)
   Cordova Platforms : android 8.1.0
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.1.3, cordova-plugin-ionic-webview 2.5.1, (and 17 other plugins)

Utility:

   cordova-res : 0.5.2
   native-run  : 0.2.7

System:

   NodeJS : v12.8.1 (C:\Program Files\nodejs\node.exe)
   npm    : 6.11.2
   OS     : Windows 10

@devpurelab
Copy link

devpurelab commented May 15, 2020

For those who are using ionic 4 + capacitor

NathanaelA/nativescript-zxing#4 (comment)

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests