getbouncer / react-native-cardscan

Other
64 stars 13 forks source link

iOS Build Issue #56

Closed caseyg1204 closed 3 years ago

caseyg1204 commented 4 years ago

Hello - I am having trouble getting this project to build


  "(extension in Vision):__C.VNRecognizedText.boundingBox(for: Swift.Range<Swift.String.Index>) throws -> __C.VNRectangleObservation?", referenced from:
      closure #1 (__C.VNRecognizedTextObservation) -> CardScan.OcrObject? in closure #1 (__C.VNRequest, Swift.Error?) -> () in static CardScan.AppleOcr.performOcr(image: __C.CGImageRef, completion: ([CardScan.OcrObject]) -> ()) -> () in libCardScan.a(AppleOcr.o)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)```

`"react-native-cardscan": "^1.1.11",`

react-native: 0.63.2

xCode 12.0.1
jaimejiyepark commented 4 years ago

Hello @caseyg1204! Thank you for bringing up this issue! Can I ask if you were using a simulator or a real device? If you were using a real device, can you tell me the model and the iOS version on it?

caseyg1204 commented 4 years ago

Hi @jaimejiyepark , thanks for your help. It was a build time error for simulator.

jaimejiyepark commented 4 years ago

Great! I will be closing this issue now. Thank you again bringing to our attention.

caseyg1204 commented 4 years ago

@jaimejiyepark why did you close it? I am unable to build our project if I include your library

jaimejiyepark commented 4 years ago

@caseyg1204 I am so sorry. I misinterpreted your response. Let me look into it right now.

caseyg1204 commented 4 years ago

thanks @jaimejiyepark ! apologies for not being clear

jaimejiyepark commented 4 years ago

Hey @caseyg1204 , I can't seem to replicate the error on my end. Can I some detail on the steps you took to build your project while including cardscan? Also can I see what your Podfile looks like?

caseyg1204 commented 4 years ago

Hi @jaimejiyepark I created a sample project that is having same issue: https://github.com/caseyg1204/cardScan

jaimejiyepark commented 4 years ago

@caseyg1204 Thank you so much! I have been able to reproduce the error with your example. Let me get back to you once I have a solution.

jaimejiyepark commented 4 years ago

Hey @caseyg1204 , I just wanted to give you an update on what is going on. I have a strong hunch that this error is due to a build config rule I added for Carthage support where it excludes certain architectures for XCode12 simulators. I am still working on the solution but please check out our troubleshooting page. I will give you another update very soon!

jaimejiyepark commented 4 years ago

Hello @caseyg1204 , I hope you are doing well. I believe I found the solution to this issue! It takes a couple of steps but fortunately they are issues we have tackled before listed in our troubleshooting page.

  1. Dealing with error ld: symbol(s) not found for architecture x86_64
    • We have multiple solutions for this error but the one I tested and successfully built the app with was to add use_framework! in the Podfile. Please make sure to check out our troubleshooting page for the full set of instructions since there are more steps to this solution. Your Podfile should look something like this:
      
      require_relative '../node_modules/react-native/scripts/react_native_pods'
      require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

platform :ios, '10.0' use_frameworks!

target 'cardScan' do config = use_native_modules!

use_react_native!(:path => config["reactNativePath"])

target 'cardScanTests' do inherit! :complete

Pods for testing

end

Enables Flipper.

#

Note that if you have use_frameworks! enabled, Flipper will not work and

you should disable these next few lines.

use_flipper!

post_install do |installer|

flipper_post_install(installer)

end

end

target 'cardScan-tvOS' do

Pods for cardScan-tvOS

target 'cardScan-tvOSTests' do inherit! :search_paths

Pods for testing

end end


2. Dealing with errors such as `ld: warning: Could not find auto-linked library 'swiftCoreMl'`
    * This was resolved by creating a bridge header then re-building. The instructions to make one is listed [here](https://stackoverflow.com/questions/52536380/why-linker-link-static-libraries-with-errors-ios/56176956#56176956).

3. If you are building the app with a simulator through react-native (i.e. `react-native run-ios`) , make sure to go into the `ios/.xcworkspace` and build in XCode successfully before running the app with react-native. 

I hope this helps! If you have any issues please let me know I will get back to you as soon as possible. Please make sure to head to our [troubleshooting page](https://docs.getbouncer.com/card-scan/react-native-integration-guide/troubleshooting) for more detailed instructions.
jaimejiyepark commented 4 years ago

Oh! Also small hiccup in our README:

Sorry about the confusion!

awushensky commented 3 years ago

@caseyg1204 I'm going to close this issue since it's dormant. Please feel free to re-open it if your issue is not solved.

DKetaki commented 3 years ago

image

Hello @jaimejiyepark I am also getting the same error. Its been two days and I have tried everything as mentioned in the doc. I can't use use_framework! as I have some static framework linking.

Therefore opening this issue.

jaimejiyepark commented 3 years ago

Hello @DKetaki , Let me take a look into this. In the meanwhile, do you mind sharing some details about your build?

DKetaki commented 3 years ago

Please find the below details.

Podfile

platform :ios, '11.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

def add_flipper_pods!(versions = {})
  versions['Flipper'] ||= '~> 0.74.0'
  versions['DoubleConversion'] ||= '1.1.7'
  versions['Flipper-Folly'] ||= '~> 2.1'
  versions['Flipper-Glog'] ||= '0.3.6'
  versions['Flipper-PeerTalk'] ||= '~> 0.0.4'
  versions['Flipper-RSocket'] ||= '~> 1.0'

  pod 'FlipperKit', versions['Flipper'], :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitLayoutPlugin', versions['Flipper'], :configuration => 'Debug'
  pod 'FlipperKit/SKIOSNetworkPlugin', versions['Flipper'], :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitUserDefaultsPlugin', versions['Flipper'], :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitReactPlugin', versions['Flipper'], :configuration => 'Debug'

  # List all transitive dependencies for FlipperKit pods
  # to avoid them being linked in Release builds
  pod 'Flipper', versions['Flipper'], :configuration => 'Debug'
  pod 'Flipper-DoubleConversion', versions['DoubleConversion'], :configuration => 'Debug'
  pod 'Flipper-Folly', versions['Flipper-Folly'], :configuration => 'Debug'
  pod 'Flipper-Glog', versions['Flipper-Glog'], :configuration => 'Debug'
  pod 'Flipper-PeerTalk', versions['Flipper-PeerTalk'], :configuration => 'Debug'
  pod 'Flipper-RSocket', versions['Flipper-RSocket'], :configuration => 'Debug'
  pod 'FlipperKit/Core', versions['Flipper'], :configuration => 'Debug'
  pod 'FlipperKit/CppBridge', versions['Flipper'], :configuration => 'Debug'
  pod 'FlipperKit/FBCxxFollyDynamicConvert', versions['Flipper'], :configuration => 'Debug'
  pod 'FlipperKit/FBDefines', versions['Flipper'], :configuration => 'Debug'
  pod 'FlipperKit/FKPortForwarding', versions['Flipper'], :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitHighlightOverlay', versions['Flipper'], :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitLayoutTextSearchable', versions['Flipper'], :configuration => 'Debug'
  pod 'FlipperKit/FlipperKitNetworkPlugin', versions['Flipper'], :configuration => 'Debug'
end

pre_install do |installer|
  puts("Image fix for ios14: remove this when upgradeing to >= 0.63.3")
  find = "_currentFrame.CGImage;"
  replace = "_currentFrame.CGImage ;} else { [super displayLayer:layer];"
  op = `sed -ie "s/#{find}/#{replace}/" ../node_modules/react-native/Libraries/Image/RCTUIImageViewAnimated.m`
  puts("Image fix for ios14 done")
end

# Post Install processing for Flipper
def flipper_post_install(installer)
  installer.pods_project.targets.each do |target|
    if target.name == 'YogaKit'
      target.build_configurations.each do |config|
        config.build_settings['SWIFT_VERSION'] = '4.1'
      end
    end
  end
end

target 'NotabClient' do
  # Pods for NotabClient
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
  pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
  pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"
  pod 'React', :path => '../node_modules/react-native/'
  pod 'React-Core', :path => '../node_modules/react-native/'
  pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
  pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
  pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'
  pod 'react-native-camera', path: '../node_modules/react-native-camera'

  pod 'CardScan', '~> 1.0.5051'
  pod 'react-native-cardscan', :path => '../node_modules/react-native-cardscan/react-native-cardscan.podspec'

  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
  pod 'ReactCommon/callinvoker', :path => "../node_modules/react-native/ReactCommon"
  pod 'ReactCommon/turbomodule/core', :path => "../node_modules/react-native/ReactCommon"
  pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga', :modular_headers => true

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  permissions_path = '../node_modules/react-native-permissions/ios'

  pod 'Permission-Camera', :path => "#{permissions_path}/Camera.podspec"
  pod 'Permission-PhotoLibrary', :path => "#{permissions_path}/PhotoLibrary.podspec"

  pod 'Stripe', '~> 19.0.1'
  pod 'tipsi-stripe', :path => '../node_modules/tipsi-stripe'

  pod 'FBSDKLoginKit'

  use_native_modules!

  # Enables Flipper.
  #
  # Note that if you have use_frameworks! enabled, Flipper will not work and
  # you should disable these next few lines.
  add_flipper_pods!
  post_install do |installer|
    flipper_post_install(installer)
  end
end

Xcode : Version 12.0 (12A7209)

React-Native:

react-native-cli: 2.0.1
react-native: 0.62.2

Update

I have also tried the same with Xcode version 12.3

jaimejiyepark commented 3 years ago

Thank you for the details. Let me try to reproduce this build issue and I'll get back to you.

DKetaki commented 3 years ago

Hello @jaimejiyepark ,any update on this issue.

maranmanicse commented 3 years ago

@jaimejiyepark , Any update on this issue. Can i implement this for both ios and android?

jaimejiyepark commented 3 years ago

Hello @DKetaki, I was actually OOO last week and passed on this issue to another team member but it seems as though they haven't gotten to it yet. My apologies. I am back now and I will pick up where I left off. Let me give you an update of my progress EOD.

cc @maranmanicse

jaimejiyepark commented 3 years ago

@DKetaki I can't seem to replicate your issue on my end. Please let me know of your thoughts of some steps we can take that I will list below. We can then decide together how to proceed.

  1. We can deploy an updated react-native-cardscan version. You can test the new version on your project and see if the issue persists.
  2. You can provide me an example app with the replicated issue and I can try to debug with your example.
jaimejiyepark commented 3 years ago

@DKetaki We have released a new version react-native-cardscan@1.1.27 which includes the updated CardScan@2.0.9 library. The main changes to the deploy are as follows:

Please give this version a try and if the issue persists, we can continue from there. Hope this works out and please keep me updated.

cc @maranmanicse

maranmanicse commented 3 years ago

Thank you

On Fri, Feb 26, 2021 at 5:30 AM jaimejiyepark notifications@github.com wrote:

@DKetaki https://github.com/DKetaki We have released a new version react-native-cardscan@1.1.27 which includes the updated CardScan@2.0.9 library. The main changes to the deploy are as follows:

  • The scanning UI is changed to a much simplified UI
  • The library is gated from iOS 11.2 since our expiration extraction ML model requires at least iOS 11.2

https://user-images.githubusercontent.com/42391849/109235117-e4ea9f00-7781-11eb-9ed8-c610e00de7aa.PNG

Please give this version a try and if the issue persists, we can continue from there. Hope this works out and please keep me updated.

cc @maranmanicse https://github.com/maranmanicse

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/getbouncer/react-native-cardscan/issues/56#issuecomment-786312793, or unsubscribe https://github.com/notifications/unsubscribe-auth/AEMLBJEUGO3Z2WKDEWQKYR3TA3QBTANCNFSM4R7BZIMA .