expo / eas-cli

Fastest way to build, submit, and update iOS and Android apps
https://docs.expo.dev/eas/
MIT License
755 stars 79 forks source link

Duplicate class bcprov-jdk15on-1.70.jar bcprov-jdk15to18-1.70.jar #2455

Open tianlang2013 opened 1 month ago

tianlang2013 commented 1 month ago

Build/Submit details page URL

No response

Summary

1 WARNING: The option setting 'android.jetifier.ignorelist=bcprov' is experimental. 2 WARNING: The option setting 'android.jetifier.ignorelist=bcprov-jdk15on-1.70.jar' is experimental. 3 WARNING: The option setting 'android.jetifier.ignorelist=bcprov-jdk15to18-1.70' is experimental.

all error as next ,and can`t build to success

 Duplicate class org.bouncycastle.jce.spec.ElGamalParameterSpec found in modules bcprov-jdk15on-1.70.jar -> bcprov-jdk15on-1.70 (org.bouncycastle:bcprov-jdk15on:1.70) and bcprov-jdk15to18-1.70.jar -> bcprov-jdk15to18-1.70 (org.bouncycastle:bcprov-jdk15to18:1.70) 

 Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.

Managed or bare?

android

Environment

package.json

{ "name": "expo", "version": "1.0.0", "scripts": { "start": "expo start --dev-client", "startTest": "NODE_ENV=test npx expo start", "android": "expo run:android", "ios": "expo run:ios", "web": "expo start --web" }, "dependencies": { "@ant-design/icons-react-native": "^2.3.2", "@ant-design/react-native": "^5.1.3", "@babel/preset-env": "^7.1.6", "@expo/config-plugins": "~8.0.0", "@expo/status-bar-height": "^0.0.1", "@kafudev/react-native-vconsole": "^0.1.11", "@react-native-async-storage/async-storage": "^1.23.1", "@react-native-community/masked-view": "^0.1.10", "@react-native-community/netinfo": "11.3.1", "@react-native-community/segmented-control": "^2.2.2", "@react-native-community/slider": "4.5.2", "@react-native-picker/picker": "2.7.5", "@react-navigation/bottom-tabs": "^6.5.20", "@react-navigation/native": "^6.1.17", "@react-navigation/native-stack": "^6.9.26", "bignumber.js": "^9.1.2", "crypto-js": "4.2.0", "expo": "^51.0.18", "expo-build-properties": "^0.12.3", "expo-camera": "~15.0.13", "expo-clipboard": "^6.0.3", "expo-device": "^6.0.2", "expo-document-picker": "~12.0.2", "expo-file-system": "~17.0.1", "expo-font": "^12.0.7", "expo-image-picker": "~15.0.7", "expo-status-bar": "~1.12.1", "expo-system-ui": "~3.0.7", "expo-updates": "~0.25.18", "hermes-engine": "^0.11.0", "metro": "~0.80.8", "metro-config": "~0.80.8", "metro-resolver": "~0.80.8", "mobx": "^6.0.3", "mobx-persist": "^0.4.1", "mobx-react-lite": "^4.0.7", "mobx-utils": "^6.0.3", "moment": "^2.29.1", "prettier": "2.8.8", "prop-type": "0.0.1", "prop-types": "^15.7.2", "react": "18.2.0", "react-native": "0.74.3", "react-native-autolink": "^4.2.0", "react-native-background-timer": "^2.4.1", "react-native-confirmation-code-field": "^7.4.0", "react-native-dropdown-picker": "^5.4.6", "react-native-extended-stylesheet": "^0.12.0", "react-native-extra-dimensions-android": "1.2.5", "react-native-fast-image": "^8.6.3", "react-native-gesture-handler": "~2.16.1", "react-native-get-random-values": "^1.11.0", "react-native-gradients": "^2.1.1", "react-native-image-picker": "^7.1.2", "react-native-image-zoom-viewer": "^3.0.1", "react-native-keyboard-spacer": "^0.4.1", "react-native-linear-gradient": "^2.5.6", "react-native-modalize": "^2.0.6", "react-native-qrcode-svg": "^6.3.1", "react-native-reanimated": "3.10.1", "react-native-safe-area-context": "4.10.1", "react-native-screens": "3.31.1", "react-native-sensitive-info": "^5.5.8", "react-native-spinner-button": "^1.0.3", "react-native-svg": "14.1.0", "react-native-svg-transformer": "^1.4.0", "react-native-swipeout": "^2.3.6", "react-native-tcp-socket": "^6.0.6", "react-native-video": "^6.1.2", "react-native-webview": "13.8.6", "react-test-renderer": "18.0.0", "rn-overlay": "^0.4.0", "toggle-switch-react-native": "^3.3.0", "typescript": "5.3.3", "without-props": "^1.0.1", "xlsx": "^0.18.5" }, "devDependencies": { "@babel/core": "^7.20.0", "@babel/plugin-proposal-decorators": "^7.12.1", "@babel/runtime": "^7.12.5", "@react-native-community/eslint-config": "^3.2.0", "babel-eslint": "^10.1.0", "babel-jest": "^29.7.0", "babel-plugin-import": "^1.13.8", "eslint": "^8.57.0", "eslint-plugin-react": "^7.34.2", "eslint-plugin-react-hooks": "^4.2.0", "eslint-plugin-react-native": "^4.1.0", "jest": "^29.4.0", "metro-react-native-babel-preset": "^0.77.0" }, "resolutions": { "react-native-reanimated": "~3.10.1" }, "jest": { "preset": "react-native" }, "private": true }

app.json { "expo": { "name": "expo", "slug": "qt", "version": "1.0.0", "orientation": "portrait", "icon": "./assets/icon.png", "userInterfaceStyle": "automatic", "splash": { "image": "./assets/splash.png", "resizeMode": "contain", "backgroundColor": "#ffffff" }, "ios": { "supportsTablet": true, "usesIcloudStorage": true, "bundleIdentifier": "com.qinglong.qwallet", "infoPlist": { "NSCameraUsageDescription": "This app uses the camera to scan barcodes on event tickets.", "CFBundleAllowMixedLocalizations": true, "EXUpdatesCheckOnLaunch": "NEVER", "NSAppTransportSecurity": { "NSAllowsArbitraryLoads": true, "NSAllowsLocalNetworking": true, "NSExceptionDomains": { "47.238.182.113": { "NSIncludesSubdomains": true, "NSTemporaryExceptionAllowsInsecureHTTPLoads": true, "NSTemporaryExceptionMinimumTLSVersion": "TLSv1.1" } } } }, "buildNumber": "19" }, "android": { "adaptiveIcon": { "foregroundImage": "./assets/adaptive-icon.png", "backgroundColor": "#ffffff" }, "package": "com.qinglong.qwallet", "permissions": [ "android.permission.CAMERA", "android.permission.RECORD_AUDIO", "android.permission.READ_EXTERNAL_STORAGE", "android.permission.WRITE_EXTERNAL_STORAGE" ], "versionCode": 70 }, "web": { "favicon": "./assets/favicon.png" }, "extra": { "eas": { "projectId": "0160f9bb-8641-49be-bb60" } }, "runtimeVersion": { "policy": "appVersion" }, "updates": { "fallbackToCacheTimeout": 0, "checkAutomatically": "ON_ERROR_RECOVERY", "url": "https://u.expo.dev/0160f9bb-8641-49be-bb60" }, "plugins": [ [ "./withModifyGradle.js" ], [ "expo-build-properties", { "android": { "usesCleartextTraffic": true } } ], [ "expo-camera", { "cameraPermission": "Allow $(PRODUCT_NAME) to access your camera", "microphonePermission": "Allow $(PRODUCT_NAME) to access your microphone", "recordAudioAndroid": true } ], [ "expo-document-picker", { "iCloudContainerEnvironment": "Production" } ], [ "expo-image-picker", { "photosPermission": "The app accesses your photos to let you share them with your friends.", "cameraPermission": "Allow $(PRODUCT_NAME) to open the camera", "microphonePermission": false } ] ],

} }

Error output

Running 'gradlew :app:assembleRelease' in /home/expo/workingdir/build/android Welcome to Gradle 8.6! Here are the highlights of this release:

Task :react-native-community_slider:copyReleaseJniLibsProjectAndLocalJars Task :react-native-community_slider:extractDeepLinksForAarRelease Task :react-native-community_slider:extractReleaseAnnotations Task :react-native-community_slider:mergeReleaseGeneratedProguardFiles Task :react-native-community_slider:mergeReleaseConsumerProguardFiles Task :react-native-community_slider:mergeReleaseShaders Task :react-native-community_slider:compileReleaseShaders NO-SOURCE Task :react-native-community_slider:generateReleaseAssets UP-TO-DATE Task :react-native-community_slider:packageReleaseAssets Task :react-native-community_slider:prepareLintJarForPublish Task :react-native-community_slider:prepareReleaseArtProfile Task :app:lintVitalRelease Task :app:checkReleaseDuplicateClasses FAILED Task :app:dexBuilderRelease FAILURE: Build failed with an exception.

  • What went wrong: Execution failed for task ':app:checkReleaseDuplicateClasses'. A failure occurred while executing com.android.build.gradle.internal.tasks.CheckDuplicatesRunnable Duplicate class org.bouncycastle.LICENSE found in modules bcprov-jdk15on-1.70.jar -> bcprov-jdk15on-1.70 (org.bouncycastle:bcprov-jdk15on:1.70) and bcprov-jdk15to18-1.70.jar -> bcprov-jdk15to18-1.70 (org.bouncycastle:bcprov-jdk15to18:1.70) Duplicate class org.bouncycastle.asn1.ASN1ApplicationSpecific found in modules bcprov-jdk15on-1.70.jar -> bcprov-jdk15on-1.70 (org.bouncycastle:bcprov-jdk15on:1.70) and bcprov-jdk15to18-1.70.jar -> bcprov-jdk15to18-1.70 (org.bouncycastle:bcprov-jdk15to18:1.70) Duplicate class org.bouncycastle.asn1.ASN1ApplicationSpecificParser found in modules bcprov-jdk15on-1.70.jar -> bcprov-jdk15on-1.70 (org.bouncycastle:bcprov-jdk15on:1.70) and bcprov-jdk15to18-1.70.jar -> bcprov-jdk15to18-1.70 (org.bouncycastle:bcprov-jdk15to18:1.70)
 Go to the documentation to learn how to <a href="d.android.com/r/tools/classpath-sync-errors">Fix dependency resolution errors</a>.

Reproducible demo or steps to reproduce from a blank project

a

tianlang2013 commented 1 month ago

const { withGradleProperties } = require('@expo/config-plugins');

module.exports = (config, customName) => { return withGradleProperties(config, async config => { config.modResults.push({ key: 'android.jetifier.ignorelist', value: 'bcprov', // unable type: 'property', }); config.modResults.push({ key: 'android.jetifier.ignorelist', value: 'bcprov-jdk15to18-1.70.jar', // unable type: 'property', }); config.modResults.push({ key: 'android.jetifier.ignorelist', value: 'bcprov-jdk15on-1.70.jar', // unable type: 'property', }); config.modResults.push({ key: 'android.jetifier.ignorelist', value: 'org.bouncycastle.*', // unable type: 'property', });

config.modResults.push({
  key: 'android.enableJetifier',
  value: true,
  type: 'property',
});

// /// Use the plugin // module.exports = withJetifierIgnoring;