react-native-clipboard / clipboard

React Native Clipboard API for both iOS and Android.
MIT License
697 stars 144 forks source link

Execution failed for task ':react-native-clipboard_clipboard:compileDebugJavaWithJavac'. > Compilation failed; see the compiler error output for details. #155

Open shubh89193 opened 2 years ago

shubh89193 commented 2 years ago

Environment

Platforms

Versions

Description

error Failed to install the app. Make sure you have the Android development environment set up: https://facebook.github.io/react-native/docs/getting-started.html#android-development-environment. Run CLI with --verbose flag for more details. Error: Command failed: ./gradlew app:installDebug -PreactNativeDevServerPort=8081 Note: /Users/extended/Downloads/vibesocialmusic-82830-react-native copy/src/node_modules/@invertase/react-native-apple-authentication/android/src/main/java/com/RNAppleAuthentication/AppleAuthenticationAndroidModule.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: /Users/extended/Downloads/vibesocialmusic-82830-react-native copy/src/node_modules/react-native-android-location-enabler/android/src/main/java/com/heanoria/library/reactnative/locationenabler/RNAndroidLocationEnablerModule.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. /Users/extended/Downloads/vibesocialmusic-82830-react-native copy/src/node_modules/@react-native-clipboard/clipboard/android/src/main/java/com/reactnativecommunity/clipboard/ClipboardModule.java:136: error: cannot find symbol if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R){ ^ symbol: variable R location: class VERSION_CODES /Users/extended/Downloads/vibesocialmusic-82830-react-native copy/src/node_modules/@react-native-clipboard/clipboard/android/src/main/java/com/reactnativecommunity/clipboard/ClipboardModule.java:137: error: cannot find symbol bitmap.compress(Bitmap.CompressFormat.WEBP_LOSSLESS, 100, outputStream); ^ symbol: variable WEBP_LOSSLESS location: class CompressFormat Note: /Users/extended/Downloads/vibesocialmusic-82830-react-native copy/src/node_modules/@react-native-clipboard/clipboard/android/src/main/java/com/reactnativecommunity/clipboard/ClipboardModule.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. 2 errors

Reproducible Demo

Nziranziza commented 2 years ago

I am having similar issue

brien-crean commented 2 years ago

I also encountered this issue and after some investigation it was caused as I was forcing dependencies to run on Android API version 29 as I needed it at the time for StethoWrapper to work with my react native project for Chrome debugging. API version 29 does not have the enum WEBP_LOSSLESS in the graphics package ( I believe it was introduced in API 30) hence this error.

I use Flipper now so I just removed these lines from my android/build.gradle and removed StethoWrapper

subprojects {
    afterEvaluate {project ->
        if (project.hasProperty("android")) {
            android {
                compileSdkVersion 29     // have to match with build.gradle and app/build.gradle ones
                buildToolsVersion '29.0.3'  // have to match with build.gradle and app/build.gradle ones
            }
        }
    }
}
w1ndyz commented 2 years ago

+1, i meet the same issue.

darriuk commented 2 years ago

+1 Have same issue. It was introduced in v1.11.0 with support for WEBP. Version 1.10.0 works fine.

MalcolmTomisin commented 2 years ago

Apologies to all who encountered this issue, please upgrade your compileSdkVersion to 30. The previous Bitmap.CompressFormat WEBP enum was deprecated in API level 30 hence WEBP_LOSSLESS enum was introduced. I'll make a PR to update this requirement in the docs.

coderdave commented 1 year ago

What about for compileSdkVersion: 31 and targetSdkVersion = 31?

MalcolmTomisin commented 1 year ago

@coderdave you should have no issues on that API level

coderdave commented 1 year ago

I get this note when on version 31: .../node_modules/@react-native-async-storage/async-storage/android/src/main/java/com/reactnativecommunity/asyncstorage/AsyncStorageModule.java uses or overrides a deprecated API.

It's not an error. I have something else that is causing my build to fail I think.

MalcolmTomisin commented 1 year ago

You might want to check for the error message if your build is failing

Anubhavjain786 commented 1 year ago

Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED > Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED > Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED


ManojJyaniMudulesSeventeen commented 8 months ago

what about this

FAILURE: Build failed with an exception.

Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

For more on this, please refer to https://docs.gradle.org/8.3/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.

BUILD FAILED in 38s 183 actionable tasks: 169 executed, 14 up-to-date

info 💡 Tip: Make sure that you have set up your development environment correctly, by running npx react-native doctor. To read more about doctor command visit: https://github.com/react-native-community/cli/blob/main/packages/cli-doctor/README.md#doctor

error Failed to build the app. Error: Command failed with exit code 1: ./gradlew app:bundleRelease at makeError (/home/manojjyani/Public/BUY/node_modules/execa/lib/error.js:60:11) at module.exports.sync (/home/manojjyani/Public/BUY/node_modules/execa/index.js:194:17) at build (/home/manojjyani/Public/BUY/node_modules/react-native/node_modules/@react-native-community/cli-platform-android/build/commands/buildAndroid/index.js:68:22) at Object.buildAndroid [as func] (/home/manojjyani/Public/BUY/node_modules/react-native/node_modules/@react-native-community/cli-platform-android/build/commands/buildAndroid/index.js:60:10) at Command.handleAction (/home/manojjyani/Public/BUY/node_modules/@react-native-community/cli/build/index.js:118:23) at Command.listener [as _actionHandler] (/home/manojjyani/Public/BUY/node_modules/commander/lib/command.js:482:17) at /home/manojjyani/Public/BUY/node_modules/commander/lib/command.js:1283:65 at Command._chainOrCall (/home/manojjyani/Public/BUY/node_modules/commander/lib/command.js:1177:12) at Command._parseCommand (/home/manojjyani/Public/BUY/node_modules/commander/lib/command.js:1283:27) at /home/manojjyani/Public/BUY/node_modules/commander/lib/command.js:1081:27

Princejain21 commented 8 months ago

I followed below steps which solved my problem.

  1. go to this file. node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java
  2. import this : import com.facebook.react.bridge.ReactApplicationContext;
  3. convert extened package from ContextBaseJavaModule to ReactContextBaseJavaModule everywhere in file(maybe used at two places)
  4. conver this : from: public ClipboardModule(Context context) { super(context); } private ClipboardManager getClipboardService() { return (ClipboardManager) getcontext().getSystemService(getcontext().CLIPBOARD_SERVICE); } to: public ClipboardModule(Context context) { super(new ReactApplicationContext(context)); }

    private ClipboardManager getClipboardService() { return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE); }

    this worked for me . Hope this will guide you thanks

ManojJyaniMudulesSeventeen commented 8 months ago

you need to just remove this package and @react-native-community\clipboard and install this reinstall this react-native-clipboard/clipboard one

Princejain21 commented 8 months ago

you need to just remove this package and @react-native-community\clipboard and install this reinstall this react-native-clipboard/clipboard one

actually i'm using react-native-otp-model by using @twotalltotems/react-native-otp-input library. but i'm getting this error.Cannot read property 'getString' of null. have you resolved this error earlier?

manishprimathon commented 8 months ago

I have also same issue like below

FAILURE: Build failed with an exception.

I have already set minSdkVersion to 24

RishiSetpal777 commented 8 months ago

you need to just remove this package and @react-native-community\clipboard and install this reinstall this react-native-clipboard/clipboard one

actually i'm using react-native-otp-model by using @twotalltotems/react-native-otp-input library. but i'm getting this error.Cannot read property 'getString' of null. have you resolved this error earlier?

+1 Same

I have tried uninstalling and Re-installing Try 1: npm install @twotalltotems/react-native-otp-input react-native-clipboard/clipboard Try 2: npm install --save @react-native-community/react-native-clipboard Try 3: Tried togeling minSdkVersion from 21 to 24 and vise versa.

i have also raised the same https://github.com/tttstudios/react-native-otp-input/issues/227

xdrcft8000 commented 8 months ago

I followed below steps which solved my problem.

  1. go to this file. node_modules@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java
  2. import this : import com.facebook.react.bridge.ReactApplicationContext;
  3. convert extened package from ContextBaseJavaModule to ReactContextBaseJavaModule everywhere in file(maybe used at two places)
  4. conver this : from: public ClipboardModule(Context context) { super(context); } private ClipboardManager getClipboardService() { return (ClipboardManager) getcontext().getSystemService(getcontext().CLIPBOARD_SERVICE); } to: public ClipboardModule(Context context) { super(new ReactApplicationContext(context)); }

private ClipboardManager getClipboardService() { return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE); }

this worked for me . Hope this will guide you thanks

worked for me, thank you!

maurosoppelsa commented 7 months ago

you need to just remove this package and @react-native-community\clipboard and install this reinstall this react-native-clipboard/clipboard one

this worked for me.

sunny812546 commented 7 months ago

return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE);

Hey.!

https://github.com/react-native-clipboard/clipboard/issues/155#issuecomment-1961252638 working fine for me.!

harsh455869 commented 6 months ago

I followed below steps which solved my problem.

  1. go to this file. node_modules@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java
  2. import this : import com.facebook.react.bridge.ReactApplicationContext;
  3. convert extened package from ContextBaseJavaModule to ReactContextBaseJavaModule everywhere in file(maybe used at two places)
  4. conver this : from: public ClipboardModule(Context context) { super(context); } private ClipboardManager getClipboardService() { return (ClipboardManager) getcontext().getSystemService(getcontext().CLIPBOARD_SERVICE); } to: public ClipboardModule(Context context) { super(new ReactApplicationContext(context)); }

private ClipboardManager getClipboardService() { return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE); }

this worked for me . Hope this will guide you thanks

great it's working fine just change package com.reactnativecommunity.clipboard; to top of file /**

import android.content.ClipboardManager; import android.content.ClipData; import android.content.Context;

import com.facebook.react.bridge.ReactContextBaseJavaModule; import com.facebook.react.bridge.ReactMethod; import com.facebook.react.bridge.Promise; import com.facebook.react.module.annotations.ReactModule;

/**

jedaydiya commented 6 months ago

I followed below steps which solved my problem.

  1. go to this file. node_modules@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java
  2. import this : import com.facebook.react.bridge.ReactApplicationContext;
  3. convert extened package from ContextBaseJavaModule to ReactContextBaseJavaModule everywhere in file(maybe used at two places)
  4. conver this : from: public ClipboardModule(Context context) { super(context); } private ClipboardManager getClipboardService() { return (ClipboardManager) getcontext().getSystemService(getcontext().CLIPBOARD_SERVICE); } to: public ClipboardModule(Context context) { super(new ReactApplicationContext(context)); }

private ClipboardManager getClipboardService() { return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE); }

this worked for me . Hope this will guide you thanks

I follow these steps but Its returns this error E:\User\Work\xxxxxxx\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:26: error: cannot find symbol super(new ReactApplicationContext(context)); ^ symbol: class ReactApplicationContext location: class ClipboardModule

Anyone know how to fix?

harsh455869 commented 6 months ago

@jedaydiya check second and third step

alokjaiswal commented 6 months ago

you need to just remove this package and @react-native-community\clipboard and install this reinstall this react-native-clipboard/clipboard one

actually i'm using react-native-otp-model by using @twotalltotems/react-native-otp-input library. but i'm getting this error.Cannot read property 'getString' of null. have you resolved this error earlier?

same issue, did you resolve this?

mindelias commented 6 months ago

change this `// public ClipboardModule(Context context) { // super(context); // }

// public static final String NAME = "RNCClipboard";

// @Override // public String getName() { // return ClipboardModule.NAME; // }

// private ClipboardManager getClipboardService() { // return (ClipboardManager) getContext().getSystemService(getContext().CLIPBOARD_SERVICE); // }`

to this

public ClipboardModule(Context context) { super(new ReactApplicationContext(context)); }

public static final String NAME = "RNCClipboard";

@Override public String getName() { return ClipboardModule.NAME; }

private ClipboardManager getClipboardService() { return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE);
}

Mario-e777 commented 5 months ago

I followed below steps which solved my problem.

  1. go to this file. node_modules@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java
  2. import this : import com.facebook.react.bridge.ReactApplicationContext;
  3. convert extened package from ContextBaseJavaModule to ReactContextBaseJavaModule everywhere in file(maybe used at two places)
  4. conver this : from: public ClipboardModule(Context context) { super(context); } private ClipboardManager getClipboardService() { return (ClipboardManager) getcontext().getSystemService(getcontext().CLIPBOARD_SERVICE); } to: public ClipboardModule(Context context) { super(new ReactApplicationContext(context)); }

    private ClipboardManager getClipboardService() { return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE); }

this worked for me . Hope this will guide you thanks

This worked for me! 👾

alexandernieves commented 4 months ago

Seguí los pasos a continuación que resolvieron mi problema.

  1. Vaya a este archivo. node_modules@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java
  2. importar esto: import com.facebook.react.bridge.ReactApplicationContext;
  3. Convierte el paquete extendido de ContextBaseJavaModule a ReactContextBaseJavaModule en todas partes del archivo (puede usarse en dos lugares)
  4. convertir esto: de: público ClipboardModule(Contexto contexto) { super(contexto); } privado ClipboardManager getClipboardService() { return (ClipboardManager) getcontext().getSystemService(getcontext().CLIPBOARD_SERVICE); } a: público ClipboardModule(Contexto contexto) { super(nuevo ReactApplicationContext(contexto)); }

privado ClipboardManager getClipboardService() { return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE); }

Esto me funcionó. Espero que te sirva de guía. Gracias.

lo hice tal cual pero no me funciono alguien podria ayudarme este es mi error gracias :

Configure project :react-native-reanimated Android gradle plugin: 7.3.1 Gradle: 7.5.1 WARNING:Software Components will not be created automatically for Maven publishing from Android Gradle Plugin 8.0. To opt-in to the future behavior, set the Gradle property android.disableAutomaticComponentCreation=true in the gradle.properties file or use the new publishing DSL. WARNING:We recommend using a newer Android Gradle plugin to use compileSdk = 34

This Android Gradle plugin (7.3.1) was tested up to compileSdk = 33

This warning can be suppressed by adding android.suppressUnsupportedCompileSdk=34 to this project's gradle.properties

The build will continue, but you are strongly encouraged to update your project to use a newer Android Gradle Plugin that has been tested with compileSdk = 34

Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED

Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.

You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.

See https://docs.gradle.org/7.5.1/userguide/command_line_interface.html#sec:command_line_warnings 392 actionable tasks: 2 executed, 390 up-to-date

info 💡 Tip: Make sure that you have set up your development environment correctly, by running npx react-native doctor. To read more about doctor command visit: https://github.com/react-native-community/cli/blob/main/packages/cli-doctor/README.md#doctor

C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:14: error: cannot find symbol import com.facebook.react.bridge.ContextBaseJavaModule; ^ symbol: class ContextBaseJavaModule location: package com.facebook.react.bridge C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:23: error: cannot find symbol public class ClipboardModule extends ContextBaseJavaModule { ^ symbol: class ContextBaseJavaModule C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:26: error: cannot find symbol super(new ReactApplicationContext(context)); ^ symbol: class ReactApplicationContext location: class ClipboardModule C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:31: error: method does not override or implement a method from a supertype @Override ^ C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:37: error: cannot find symbol return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE); ^ symbol: method getReactApplicationContext() location: class ClipboardModule C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:37: error: cannot find symbol return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE); ^ symbol: method getReactApplicationContext() location: class ClipboardModule C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardPackage.java:23: error: incompatible types: ClipboardModule cannot be converted to NativeModule modules.add(new ClipboardModule(reactContext)); ^ Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output 7 errors

FAILURE: Build completed with 2 failures.

1: Task failed with an exception.

2: Task failed with an exception.

BUILD FAILED in 1m 15s error Failed to install the app. Command failed with exit code 1: gradlew.bat app:installDebug -PreactNativeDevServerPort=8081 C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:14: error: cannot find symbol import com.facebook.react.bridge.ContextBaseJavaModule; ^ symbol: class ContextBaseJavaModule location: package com.facebook.react.bridge C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:23: error: cannot find symbol public class ClipboardModule extends ContextBaseJavaModule { ^ symbol: class ContextBaseJavaModule C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:26: error: cannot find symbol super(new ReactApplicationContext(context)); ^ symbol: class ReactApplicationContext location: class ClipboardModule C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:31: error: method does not override or implement a method from a supertype @Override ^ C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:37: error: cannot find symbol return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE); ^ symbol: method getReactApplicationContext() location: class ClipboardModule C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java:37: error: cannot find symbol return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE); ^ symbol: method getReactApplicationContext() location: class ClipboardModule C:\Users\alexa\OneDrive\Documentos\Neoestudio-APP\node_modules\@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardPackage.java:23: error: incompatible types: ClipboardModule cannot be converted to NativeModule modules.add(new ClipboardModule(reactContext)); ^ Note: Some messages have been simplified; recompile with -Xdiags:verbose to get full output 7 errors FAILURE: Build completed with 2 failures. 1: Task failed with an exception. ----------- What went wrong: Execution failed for task ':react-native-community_clipboard: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. > Run with --scan to get full insights. ============================================================================== 2: Task failed with an exception. ----------- What went wrong: java.lang.StackOverflowError (no error message) Try: > Run with --stacktrace option to get the stack trace. > Run with --info or --debug option to get more log output. > Run with --scan to get full insights. ============================================================================== * Get more help at https://help.gradle.org BUILD FAILED in 1m 15s. info Run CLI with --verbose flag for more details.

alexandernieves commented 4 months ago

Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED

help me!

ashtar23 commented 3 months ago

Task :react-native-community_clipboard:compileDebugJavaWithJavac FAILED

help me!

@alexandernieves

I've recently been trying to enable fabric in an existing RN CLI project and it's been painful. I've recently added support for expo so that we can use expo libs which came in clutch here. I've removed this lib and replaced it with https://docs.expo.dev/versions/latest/sdk/clipboard/

I know, might not be an option for some but hey, might be worth a shot if all else fails

Nachox07 commented 3 months ago

Hey there, I really wanted to use the new arch for my app, so I used a patch as a workaround and manually fixed it for now. A patch helps keep the change despite installing/changing dependencies. Here is a practical guide for those still struggling with it. I hope it helps.

  1. Install patch-package: First, you must install patch-package if you haven't already. Run the following command in your project directory:

    npm install patch-package
  2. Edit the file causing the compilation error: Manually edit the ClipboardModule.java file in your node_modules/@react-native-clipboard/clipboard/android/src/main/java/com/reactnativecommunity/clipboard directory

New content to place in the file

/**
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */

package com.reactnativecommunity.clipboard;

import android.annotation.TargetApi;
import android.content.ClipDescription;
import android.content.ClipboardManager;
import android.content.ClipData;
import android.content.ContentResolver;
import android.content.Context;
import android.graphics.Bitmap;
import android.net.Uri;
import android.os.Build;
import android.provider.MediaStore;
import android.util.Base64;
import android.util.Log;

import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;
import com.facebook.react.bridge.Promise;
import com.facebook.react.bridge.ReadableArray;
import com.facebook.react.module.annotations.ReactModule;
import com.facebook.react.modules.core.DeviceEventManagerModule;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.ByteBuffer;

/**
 * A module that allows JS to get/set clipboard contents.
 */
@ReactModule(name = ClipboardModule.NAME)
public class ClipboardModule extends NativeClipboardModuleSpec {

  public static final String CLIPBOARD_TEXT_CHANGED = "RNCClipboard_TEXT_CHANGED";
  private ReactApplicationContext reactContext;
  private ClipboardManager.OnPrimaryClipChangedListener listener = null;

  public ClipboardModule(ReactApplicationContext reactContext) {
    super(reactContext);
    this.reactContext = reactContext;
  }

  public static final String NAME = "RNCClipboard";
  public static final String MIMETYPE_JPEG = "image/jpeg";
  public static final String MIMETYPE_JPG = "image/jpg";
  public static final String MIMETYPE_PNG = "image/png";
  public static final String MIMETYPE_WEBP = "image/webp";
  public static final String MIMETYPE_HEIC = "image/heic";
  public static final String MIMETYPE_HEIF = "image/heif";

  @Override
  public String getName() {
    return ClipboardModule.NAME;
  }

  private ClipboardManager getClipboardService() {
    return (ClipboardManager) reactContext.getSystemService(Context.CLIPBOARD_SERVICE);
  }

  @ReactMethod
  public void getString(Promise promise) {
    try {
      ClipboardManager clipboard = getClipboardService();
      ClipData clipData = clipboard.getPrimaryClip();
      if (clipData != null && clipData.getItemCount() >= 1) {
        ClipData.Item firstItem = clipData.getItemAt(0);
        promise.resolve("" + firstItem.getText());
      } else {
        promise.resolve("");
      }
    } catch (Exception e) {
      promise.reject(e);
    }
  }

  @Override
  public void getStrings(Promise promise) {
    promise.reject("Clipboard:getStrings", "getStrings is not supported on Android");
  }

  @Override
  public void getImagePNG(Promise promise) {
    promise.reject("Clipboard:getImagePNG", "getImagePNG is not supported on Android");
  }

  @Override
  public void getImageJPG(Promise promise) {
    promise.reject("Clipboard:getImageJPG", "getImageJPG is not supported on Android");
  }

  @Override
  public void setImage(String content, Promise promise) {
    promise.reject("Clipboard:setImage", "setImage is not supported on Android");
  }

  @ReactMethod
  public void setString(String text) {
    try {
      ClipData clipdata = ClipData.newPlainText(null, text);
      ClipboardManager clipboard = getClipboardService();
      clipboard.setPrimaryClip(clipdata);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  @Override
  public void setStrings(ReadableArray content) {

  }

  @ReactMethod
  public void hasString(Promise promise) {
    try {
      ClipboardManager clipboard = getClipboardService();
      ClipData clipData = clipboard.getPrimaryClip();
      promise.resolve(clipData != null && clipData.getItemCount() >= 1);
    } catch (Exception e) {
      promise.reject(e);
    }
  }

  @Override
  public void hasImage(Promise promise) {
    promise.reject("Clipboard:hasImage", "hasImage is not supported on Android");
  }

  @Override
  public void hasURL(Promise promise) {
    promise.reject("Clipboard:hasURL", "hasURL is not supported on Android");
  }

  @Override
  public void hasNumber(Promise promise) {
    promise.reject("Clipboard:hasNumber", "hasNumber is not supported on Android");
  }

  @Override
  public void hasWebURL(Promise promise) {
    promise.reject("Clipboard:hasWebURL", "hasWebURL is not supported on Android");
  }

  @ReactMethod
  public void getImage(Promise promise){
    ClipboardManager clipboardManager = getClipboardService();
    if (!(clipboardManager.hasPrimaryClip())){
      promise.resolve("");
    }
    else if (clipboardManager.getPrimaryClipDescription().hasMimeType(ClipDescription.MIMETYPE_TEXT_PLAIN)){
      promise.resolve("");
    }
    else {
      ClipData clipData = clipboardManager.getPrimaryClip();
      if(clipData != null){
        ClipData.Item item = clipData.getItemAt(0);
        Uri pasteUri = item.getUri();
        if (pasteUri != null){
          ContentResolver cr = reactContext.getContentResolver();
          String mimeType = cr.getType(pasteUri);
          if (mimeType != null){
            try {
              Bitmap bitmap = MediaStore.Images.Media.getBitmap(cr, pasteUri);
              ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
              switch(mimeType){
                case MIMETYPE_JPEG:
                case MIMETYPE_JPG:
                  bitmap.compress(Bitmap.CompressFormat.JPEG, 100, outputStream);
                  break;
                case MIMETYPE_PNG:
                case MIMETYPE_HEIC:
                case MIMETYPE_HEIF:
                  bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
                  break;
                case MIMETYPE_WEBP:
                  if (Build.VERSION.SDK_INT > Build.VERSION_CODES.Q){
                    bitmap.compress(Bitmap.CompressFormat.WEBP_LOSSLESS, 100, outputStream);
                    break;
                  }
                  bitmap.compress(Bitmap.CompressFormat.WEBP, 100, outputStream);
                  break;
                default:
                  return;
              }
              byte[] byteArray = outputStream.toByteArray();
              String encodedString = Base64.encodeToString(byteArray, Base64.DEFAULT);
              promise.resolve("data:" + mimeType + ";base64," + encodedString);
            } catch (IOException e) {
              promise.reject(e);
              e.printStackTrace();
            }
          }
        }
      }
      promise.resolve("");
    }
  }

  @ReactMethod
  public void setListener() {
    try {
      ClipboardManager clipboard = getClipboardService();
      listener = new ClipboardManager.OnPrimaryClipChangedListener() {
        @Override
        public void onPrimaryClipChanged() {
          reactContext
            .getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter.class)
            .emit(CLIPBOARD_TEXT_CHANGED, null);
        }
      };
      clipboard.addPrimaryClipChangedListener(listener);
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  @ReactMethod
  public void removeListener() {
    if(listener != null){
      try{
        ClipboardManager clipboard = getClipboardService();
        clipboard.removePrimaryClipChangedListener(listener);
      } catch (Exception e) {
        e.printStackTrace();
      }
    }
  }

  @ReactMethod
  public void addListener(String eventName) {
    // Keep: Required for RN built in Event Emitter Calls.
  }

  @Override
  public void removeListeners(double count) {
    // Keep: Required for RN built in Event Emitter Calls.
  }
}
  1. Create the Patch: After making the changes, create a patch file by running the following command:

    npx patch-package @react-native-clipboard/clipboard

    This will create a .patch file inside a patches directory at the root of your project.

  2. Apply the Patch: To apply the patch automatically whenever you install dependencies (e.g., running npm install or yarn), add a postinstall script to your package.json:

    "scripts": {
     "postinstall": "patch-package"
    }
  3. Clean and try to build the app: Clean your project and rebuild it to ensure the patch is applied correctly and that the issue is resolved.

    npx react-native clean
    npx react-native run-android
Mario-e777 commented 2 months ago

I followed below steps which solved my problem.

  1. go to this file. node_modules@react-native-community\clipboard\android\src\main\java\com\reactnativecommunity\clipboard\ClipboardModule.java
  2. import this : import com.facebook.react.bridge.ReactApplicationContext;
  3. convert extened package from ContextBaseJavaModule to ReactContextBaseJavaModule everywhere in file(maybe used at two places)
  4. conver this : from: public ClipboardModule(Context context) { super(context); } private ClipboardManager getClipboardService() { return (ClipboardManager) getcontext().getSystemService(getcontext().CLIPBOARD_SERVICE); } to: public ClipboardModule(Context context) { super(new ReactApplicationContext(context)); } private ClipboardManager getClipboardService() { return (ClipboardManager) getReactApplicationContext().getSystemService(getReactApplicationContext().CLIPBOARD_SERVICE); }

this worked for me . Hope this will guide you thanks

This worked for me! 👾

This previously worked for me, but not anymore! 😅 Changing the package to @react-native-clipboard/clipboard solved the problem. ✨