question-mark
Stuck on an issue?

Lightrun Answers was designed to reduce the constant googling that comes with debugging 3rd party libraries. It collects links to all the places you might be looking at while hunting down a tough bug.

And, if you’re still stuck at the end, we’re happy to hop on a call to see how we can help out.

New Version (2.2.4) can't build with PhoneGap on Android platform

See original GitHub issue

I’m submitting a … (check one with “x”)

  • question
  • [x ] any problem or bug report
  • feature request

If you choose ‘problem or bug report’, please select OS: (check one with “x”)

  • [x ] Android
  • iOS

cordova information: (run $> cordova plugin list)

MacBook-Pro-di-Giovanni:GeopostHybrid leogio360$ phonegap plugin list
cordova-plugin-battery-status 1.2.5 "Battery"
cordova-plugin-camera 2.4.1 "Camera"
cordova-plugin-compat 1.2.0 "Compat"
cordova-plugin-device 1.1.7 "Device"
cordova-plugin-dialogs 1.3.4 "Notification"
cordova-plugin-file 4.3.3 "File"
cordova-plugin-geolocation 2.4.3 "Geolocation"
cordova-plugin-globalization 1.0.9 "Globalization"
cordova-plugin-googlemaps 2.2.4 "cordova-plugin-googlemaps"
cordova-plugin-inappbrowser 1.7.2 "InAppBrowser"
cordova-plugin-media-capture 1.4.3 "Capture"
cordova-plugin-network-information 1.3.4 "Network Information"
cordova-plugin-vibration 2.1.6 "Vibration"

Problem Description:

Hi, the new master branch and the new multiple-maps branch can’t compile with phonegap, because there is a duplicate LOCATION element in the Android Manifest.

This is my Log on Terminal:



MacBook-Pro-di-Giovanni:GeopostHybrid leogio360$ phonegap build android
[phonegap] executing 'cordova build android ' ...
ANDROID_HOME=/Users/leogio360/Library/Android/sdk

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

Subproject Path: CordovaLib

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_6grbro7isr6m2nv3h9evfpihx.run(/Users/leogio360/GeopostHybrid/platforms/android/build.gradle:143)

The JavaCompile.setDependencyCacheDir() method has been deprecated and is scheduled to be removed in Gradle 4.0.

Incremental java compilation is an incubating feature.

The TaskInputs.source(Object) method has been deprecated and is scheduled to be removed in Gradle 4.0. Please use TaskInputs.file(Object).skipWhenEmpty() instead.


:preBuild
 
UP-TO-DATE

:preDebugBuild
 
UP-TO-DATE

:checkDebugManifest

:preReleaseBuild
 UP-TO-DATE


:CordovaLib:preBuild 
UP-TO-DATE

:CordovaLib:preDebugBuild
 
UP-TO-DATE

:CordovaLib:checkDebugManifest

:CordovaLib:prepareDebugDependencies

:CordovaLib:compileDebugAidl
 
UP-TO-DATE

:CordovaLib:compileDebugNdk
 UP-TO-DATE

:CordovaLib:compileLint
 UP-TO-DATE

:CordovaLib:copyDebugLint
 
UP-TO-DATE

:CordovaLib:mergeDebugShaders
 UP-TO-DATE

:CordovaLib:compileDebugShaders
 
UP-TO-DATE
:CordovaLib:generateDebugAssets
 UP-TO-DATE

:CordovaLib:mergeDebugAssets
 UP-TO-DATE

:CordovaLib:mergeDebugProguardFiles
 
UP-TO-DATE

:CordovaLib:packageDebugRenderscript
 
UP-TO-DATE

:CordovaLib:compileDebugRenderscript
 
UP-TO-DATE
:CordovaLib:generateDebugResValues
 
UP-TO-DATE

:CordovaLib:generateDebugResources
 
UP-TO-DATE

:CordovaLib:packageDebugResources
 UP-TO-DATE

:CordovaLib:processDebugManifest
 UP-TO-DATE


:CordovaLib:generateDebugBuildConfig
 UP-TO-DATE


:CordovaLib:processDebugResources
 
UP-TO-DATE

:CordovaLib:generateDebugSources
 UP-TO-DATE

:CordovaLib:incrementalDebugJavaCompilationSafeguard
 
UP-TO-DATE

:CordovaLib:compileDebugJavaWithJavac
 
UP-TO-DATE
:CordovaLib:processDebugJavaRes
 
UP-TO-DATE

:CordovaLib:transformResourcesWithMergeJavaResForDebug
 
UP-TO-DATE
:CordovaLib:transformClassesAndResourcesWithSyncLibJarsForDebug
 
UP-TO-DATE

:CordovaLib:mergeDebugJniLibFolders
 
UP-TO-DATE
:CordovaLib:transformNative_libsWithMergeJniLibsForDebug
 
UP-TO-DATE

:CordovaLib:transformNative_libsWithSyncJniLibsForDebug
 
UP-TO-DATE
:CordovaLib:bundleDebug
 
UP-TO-DATE
:CordovaLib:preReleaseBuild 
UP-TO-DATE
:CordovaLib:checkReleaseManifest


:CordovaLib:prepareReleaseDependencies


:CordovaLib:compileReleaseAidl
 UP-TO-DATE

:CordovaLib:compileReleaseNdk
 UP-TO-DATE

:CordovaLib:copyReleaseLint
 UP-TO-DATE

:CordovaLib:mergeReleaseShaders
 
UP-TO-DATE
:CordovaLib:compileReleaseShaders
 
UP-TO-DATE
:CordovaLib:generateReleaseAssets
 
UP-TO-DATE
:CordovaLib:mergeReleaseAssets
 
UP-TO-DATE
:CordovaLib:mergeReleaseProguardFiles
 UP-TO-DATE


:CordovaLib:packageReleaseRenderscript
 
UP-TO-DATE
:CordovaLib:compileReleaseRenderscript
 UP-TO-DATE

:CordovaLib:generateReleaseResValues
 
UP-TO-DATE

:CordovaLib:generateReleaseResources
 UP-TO-DATE

:CordovaLib:packageReleaseResources
 UP-TO-DATE

:CordovaLib:processReleaseManifest
 UP-TO-DATE

:CordovaLib:generateReleaseBuildConfig
 UP-TO-DATE

:CordovaLib:processReleaseResources
 
UP-TO-DATE
:CordovaLib:generateReleaseSources
 UP-TO-DATE

:CordovaLib:incrementalReleaseJavaCompilationSafeguard
 UP-TO-DATE

:CordovaLib:compileReleaseJavaWithJavac
 UP-TO-DATE

:CordovaLib:processReleaseJavaRes
 
UP-TO-DATE
:CordovaLib:transformResourcesWithMergeJavaResForRelease
 
UP-TO-DATE
:CordovaLib:transformClassesAndResourcesWithSyncLibJarsForRelease
 
UP-TO-DATE
:CordovaLib:mergeReleaseJniLibFolders
 UP-TO-DATE

:CordovaLib:transformNative_libsWithMergeJniLibsForRelease
 
UP-TO-DATE

:CordovaLib:transformNative_libsWithSyncJniLibsForRelease
 UP-TO-DATE

:CordovaLib:bundleRelease
 
UP-TO-DATE
:prepareComAndroidSupportSupportCompat2520Library
 
UP-TO-DATE

:prepareComAndroidSupportSupportCoreUi2520Library
 UP-TO-DATE

:prepareComAndroidSupportSupportCoreUtils2520Library
 
UP-TO-DATE
:prepareComAndroidSupportSupportFragment2520Library
 UP-TO-DATE

:prepareComAndroidSupportSupportMediaCompat2520Library
 
UP-TO-DATE
:prepareComAndroidSupportSupportV42520Library
 
UP-TO-DATE
:prepareComGoogleAndroidGmsPlayServicesBase1180Library
 UP-TO-DATE

:prepareComGoogleAndroidGmsPlayServicesBaseLicense1180Library
 
UP-TO-DATE
:prepareComGoogleAndroidGmsPlayServicesBasement1180Library
 UP-TO-DATE

:prepareComGoogleAndroidGmsPlayServicesBasementLicense1180Library
 
UP-TO-DATE
:prepareComGoogleAndroidGmsPlayServicesLocation1180Library
 
UP-TO-DATE

:prepareComGoogleAndroidGmsPlayServicesLocationLicense1180Library
 UP-TO-DATE

:prepareComGoogleAndroidGmsPlayServicesMaps1180Library
 UP-TO-DATE

:prepareComGoogleAndroidGmsPlayServicesMapsLicense1180Library
 UP-TO-DATE

:prepareComGoogleAndroidGmsPlayServicesTasks1180Library
 UP-TO-DATE

:prepareComGoogleAndroidGmsPlayServicesTasksLicense1180Library
 UP-TO-DATE

:prepareOrgApacheCordovaCordovaLib630DebugLibrary
 UP-TO-DATE

:prepareTbxmlAndroidLibrary
 UP-TO-DATE

:prepareDebugDependencies


:compileDebugAidl
 UP-TO-DATE

:compileDebugRenderscript
 UP-TO-DATE

:generateDebugBuildConfig
 UP-TO-DATE

:generateDebugResValues
 UP-TO-DATE

:generateDebugResources
 UP-TO-DATE

:mergeDebugResources
 UP-TO-DATE

:processDebugManifest
/Users/leogio360/GeopostHybrid/platforms/android/AndroidManifest.xml:30:5-91 Error:
	Element uses-feature#android.hardware.location.gps at AndroidManifest.xml:30:5-91 duplicated with element declared at AndroidManifest.xml:22:5-66

/Users/leogio360/GeopostHybrid/platforms/android/AndroidManifest.xml Error:
	Validation failed, exiting



See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.

:processDebugManifest FAILED



FAILURE: Build failed with an exception.


* What went wrong:
Execution failed for task ':processDebugManifest'.

> Manifest merger failed with multiple errors, see logs


* Try:

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


BUILD FAILED


Total time: 4.074 secs

Error: /Users/leogio360/GeopostHybrid/platforms/android/gradlew: Command failed with exit code 1 Error output:
/Users/leogio360/GeopostHybrid/platforms/android/AndroidManifest.xml:30:5-91 Error:
	Element uses-feature#android.hardware.location.gps at AndroidManifest.xml:30:5-91 duplicated with element declared at AndroidManifest.xml:22:5-66
/Users/leogio360/GeopostHybrid/platforms/android/AndroidManifest.xml Error:
	Validation failed, exiting

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':processDebugManifest'.
> Manifest merger failed with multiple errors, see logs

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

My CONFIG.XML:

<?xml version='1.0' encoding='utf-8'?>
<widget id="com.Geo" version="1.0.0" xmlns="http://www.w3.org/ns/widgets" xmlns:gap="http://phonegap.com/ns/1.0">
    <name>Geo</name>
    <description>
        Hello World sample application that responds to the deviceready event.
    </description>
    <author email="support@phonegap.com" href="http://phonegap.com">
        PhoneGap Team
    </author>
    <content src="index.html" />
    <preference name="DisallowOverscroll" value="true" />
    <preference name="android-minSdkVersion" value="14" />
    <platform name="android">
        <icon density="ldpi" src="www/res/icon/android/drawable-ldpi-icon.png" />
        <icon density="mdpi" src="www/res/icon/android/drawable-mdpi-icon.png" />
        <icon density="hdpi" src="www/res/icon/android/drawable-hdpi-icon.png" />
        <icon density="xhdpi" src="www/res/icon/android/drawable-xhdpi-icon.png" />
        <icon density="xxhdpi" src="www/res/icon/android/drawable-xxhdpi-icon.png" />
        <icon density="xxxhdpi" src="www/res/icon/android/drawable-xxxhdpi-icon.png" />
        <splash density="land-ldpi" src="www/res/screen/android/drawable-land-ldpi-screen.png" />
        <splash density="land-mdpi" src="www/res/screen/android/drawable-land-mdpi-screen.png" />
        <splash density="land-hdpi" src="www/res/screen/android/drawable-land-hdpi-screen.png" />
        <splash density="land-xhdpi" src="www/res/screen/android/drawable-land-xhdpi-screen.png" />
        <splash density="land-xxhdpi" src="www/res/screen/android/drawable-land-xxhdpi-screen.png" />
        <splash density="land-xxxhdpi" src="www/res/screen/android/drawable-land-xxxhdpi-screen.png" />
        <splash density="port-ldpi" src="www/res/screen/android/drawable-port-ldpi-screen.png" />
        <splash density="port-mdpi" src="www/res/screen/android/drawable-port-mdpi-screen.png" />
        <splash density="port-hdpi" src="www/res/screen/android/drawable-port-hdpi-screen.png" />
        <splash density="port-xhdpi" src="www/res/screen/android/drawable-port-xhdpi-screen.png" />
        <splash density="port-xxhdpi" src="www/res/screen/android/drawable-port-xxhdpi-screen.png" />
        <splash density="port-xxxhdpi" src="www/res/screen/android/drawable-port-xxxhdpi-screen.png" />
    </platform>
    <platform name="ios">
        <icon height="57" platform="ios" src="www/res/icon/ios/icon.png" width="57" />
        <icon height="114" platform="ios" src="www/res/icon/ios/icon@2x.png" width="114" />
        <icon height="40" platform="ios" src="www/res/icon/ios/icon-40.png" width="40" />
        <icon height="80" platform="ios" src="www/res/icon/ios/icon-40@2x.png" width="80" />
        <icon height="50" platform="ios" src="www/res/icon/ios/icon-50.png" width="50" />
        <icon height="100" platform="ios" src="www/res/icon/ios/icon-50@2x.png" width="100" />
        <icon height="60" platform="ios" src="www/res/icon/ios/icon-60.png" width="60" />
        <icon height="120" platform="ios" src="www/res/icon/ios/icon-60@2x.png" width="120" />
        <icon height="180" platform="ios" src="www/res/icon/ios/icon-60@3x.png" width="180" />
        <icon height="72" platform="ios" src="www/res/icon/ios/icon-72.png" width="72" />
        <icon height="144" platform="ios" src="www/res/icon/ios/icon-72@2x.png" width="144" />
        <icon height="76" platform="ios" src="www/res/icon/ios/icon-76.png" width="76" />
        <icon height="152" platform="ios" src="www/res/icon/ios/icon-76@2x.png" width="152" />
        <icon height="29" platform="ios" src="www/res/icon/ios/icon-small.png" width="29" />
        <icon height="58" platform="ios" src="www/res/icon/ios/icon-small@2x.png" width="58" />
        <icon height="87" platform="ios" src="www/res/icon/ios/icon-small@3x.png" width="87" />
        <splash height="1136" platform="ios" src="www/res/screen/ios/Default-568h@2x~iphone.png" width="640" />
        <splash height="1334" platform="ios" src="www/res/screen/ios/Default-667h.png" width="750" />
        <splash height="2208" platform="ios" src="www/res/screen/ios/Default-736h.png" width="1242" />
        <splash height="1242" platform="ios" src="www/res/screen/ios/Default-Landscape-736h.png" width="2208" />
        <splash height="1536" platform="ios" src="www/res/screen/ios/Default-Landscape@2x~ipad.png" width="2048" />
        <splash height="768" platform="ios" src="www/res/screen/ios/Default-Landscape~ipad.png" width="1024" />
        <splash height="2048" platform="ios" src="www/res/screen/ios/Default-Portrait@2x~ipad.png" width="1536" />
        <splash height="1024" platform="ios" src="www/res/screen/ios/Default-Portrait~ipad.png" width="768" />
        <splash height="960" platform="ios" src="www/res/screen/ios/Default@2x~iphone.png" width="640" />
        <splash height="480" platform="ios" src="www/res/screen/ios/Default~iphone.png" width="320" />
    </platform>
    <platform name="wp8">
        <icon height="99" platform="wp8" src="www/res/icon/wp8/ApplicationIcon.png" width="99" />
        <icon height="159" platform="wp8" src="www/res/icon/wp8/Background.png" width="159" />
        <splash height="1280" platform="wp8" src="www/res/screen/wp8/screen-portrait.jpg" width="768" />
    </platform>
    <platform name="windows">
        <icon height="150" platform="windows" src="www/res/icon/windows/Square150x150Logo.scale-100.png" width="150" />
        <icon height="30" platform="windows" src="www/res/icon/windows/Square30x30Logo.scale-100.png" width="30" />
        <icon height="50" platform="windows" src="www/res/icon/windows/StoreLogo.scale-100.png" width="50" />
        <splash height="300" platform="windows" src="www/res/screen/windows/SplashScreen.scale-100.png" width="620" />
        <icon height="120" platform="windows" src="www/res/icon/windows/StoreLogo.scale-240.png" width="120" />
        <icon height="44" platform="windows" src="www/res/icon/windows/Square44x44Logo.scale-100.png" width="44" />
        <icon height="106" platform="windows" src="www/res/icon/windows/Square44x44Logo.scale-240.png" width="106" />
        <icon height="70" platform="windows" src="www/res/icon/windows/Square70x70Logo.scale-100.png" width="70" />
        <icon height="71" platform="windows" src="www/res/icon/windows/Square71x71Logo.scale-100.png" width="71" />
        <icon height="170" platform="windows" src="www/res/icon/windows/Square71x71Logo.scale-240.png" width="170" />
        <icon height="360" platform="windows" src="www/res/icon/windows/Square150x150Logo.scale-240.png" width="360" />
        <icon height="310" platform="windows" src="www/res/icon/windows/Square310x310Logo.scale-100.png" width="310" />
        <icon height="150" platform="windows" src="www/res/icon/windows/Wide310x150Logo.scale-100.png" width="310" />
        <icon height="360" platform="windows" src="www/res/icon/windows/Wide310x150Logo.scale-240.png" width="744" />
        <splash height="1920" platform="windows" src="www/res/screen/windows/SplashScreenPhone.scale-240.png" width="1152" />
    </platform>
    <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" />
    <plugin name="cordova-plugin-battery-status" spec="~1.2.4" />
    <plugin name="cordova-plugin-camera" spec="~2.4.1" />
    <plugin name="cordova-plugin-media-capture" spec="~1.4.3" />
    <plugin name="cordova-plugin-device" spec="~1.1.6" />
    <plugin name="cordova-plugin-dialogs" spec="~1.3.3" />
    <plugin name="cordova-plugin-file" spec="~4.3.3" />
    <plugin name="cordova-plugin-geolocation" spec="~2.4.3" />
    <plugin name="cordova-plugin-globalization" spec="~1.0.7" />
    <plugin name="cordova-plugin-inappbrowser" spec="~1.7.1" />
    <plugin name="cordova-plugin-network-information" spec="~1.3.3" />
    <plugin name="cordova-plugin-vibration" spec="~2.1.5" />
    <plugin name="cordova-plugin-whitelist" spec="~1.3.3" />
    <plugin name="cordova-plugin-googlemaps" spec="^2.2.4">
        <variable name="API_KEY_FOR_ANDROID" value="..." />
        <variable name="API_KEY_FOR_IOS" value="..." />
        <!-- these are optional settings -->
    <variable name="PLAY_SERVICES_VERSION" value="11.8.0" />
    <variable name="ANDROID_SUPPORT_V4_VERSION" value="24.1.0" />
    <variable name="LOCATION_WHEN_IN_USE_DESCRIPTION" value="Show your location on the map" />
    <variable name="LOCATION_ALWAYS_USAGE_DESCRIPTION" value="Trace your location on the map" />
  </plugin>

  <!--
    You need to specify cli-7.1.0 or greater version.
    https://build.phonegap.com/current-support
  -->
  <preference name="phonegap-version" value="cli-8.0.0" />
</widget>


My ANDROID MANIFEST:


<?xml version='1.0' encoding='utf-8'?>
<manifest android:hardwareAccelerated="true" android:versionCode="10000" android:versionName="1.0.0" package="com.Geo" xmlns:android="http://schemas.android.com/apk/res/android">
    <supports-screens android:anyDensity="true" android:largeScreens="true" android:normalScreens="true" android:resizeable="true" android:smallScreens="true" android:xlargeScreens="true" />
    <application android:hardwareAccelerated="true" android:icon="@mipmap/icon" android:label="@string/app_name" android:supportsRtl="true">
        <activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale" android:label="@string/activity_name" android:launchMode="singleTop" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
            <intent-filter android:label="@string/launcher_name">
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <provider android:authorities="${applicationId}.provider" android:exported="false" android:grantUriPermissions="true" android:name="android.support.v4.content.FileProvider">
            <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" />
        </provider>
        <meta-data android:name="com.google.android.geo.API_KEY" android:value="..." />
        <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
    </application>
    <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="26" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.RECORD_VIDEO" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-feature android:name="android.hardware.location.gps" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-feature android:glEsVersion="0x00020000" android:required="true" />
    <uses-feature android:name="android.hardware.location" android:required="false" />
    <uses-feature android:name="android.hardware.location.gps" android:required="false" />
</manifest>


Issue Analytics

  • State:closed
  • Created 6 years ago
  • Reactions:1
  • Comments:8 (4 by maintainers)

github_iconTop GitHub Comments

2reactions
Leogio360commented, Feb 13, 2018

Ok thanks, even if this is some kind of workaround.

0reactions
ADCJustinHcommented, Feb 17, 2018

Not sure what you meant but yes I have those settings. I ended up just commenting it out in plugin.xml

Read more comments on GitHub >

github_iconTop Results From Across the Web

Installing Apache Cordova/PhoneGap 2.2 for Android ...
Download and extract the latest PhoneGap/Cordova 2.2.0 zipball. · Download and install the Android Developer Tools Bundle for Windows (ADT-bundle) ...
Read more >
Building a PhoneGap Android App in Windows: Cordova 2.2.0 ...
1. Start up Eclipse. · 2. Project > New > Project · 3. Click on the + button to the left of Android...
Read more >
Android Platform Guide - Apache Cordova
Android Platform Guide. This guide will help set up your development environment for building Cordova apps for Android devices and optionally use ...
Read more >
Ionic cordova project not compiling when using phonegap ...
Yes phonegap-plugin-push is fine , i was having other plugin which causes this issue. 'github.com/Telerik-Verified-Plugins/ImagePicker'; plugin uses android sdk ...
Read more >
Build Android Apps with Phonegap - Free Tutorial - Construct 3
1- As you know there is ARM and x86 APK, but most phones use ARM APK, so by adding this code Phonegap will...
Read more >

github_iconTop Related Medium Post

No results found

github_iconTop Related StackOverflow Question

No results found

github_iconTroubleshoot Live Code

Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free

github_iconTop Related Reddit Thread

No results found

github_iconTop Related Hackernoon Post

No results found

github_iconTop Related Tweet

No results found

github_iconTop Related Dev.to Post

No results found

github_iconTop Related Hashnode Post

No results found