talsec / Free-RASP-ReactNative

React Native plugin for improving app security and threat monitoring on Android and iOS mobile devices.
https://github.com/talsec/Free-RASP-Community
MIT License
91 stars 12 forks source link

multiple commands produce 'xcode/../../../deriveddata/debug-iphonesimulator/freerasp-react-native/freerasp_react_native.framework/headers/talsecruntime-swift.h' #26

Closed jaitruworth closed 1 year ago

jaitruworth commented 1 year ago

Describe the bug multiple commands produce 'xcode/deriveddata/debug-iphonesimulator/freerasp-react-native/freerasp_react_native.framework/headers/talsecruntime-swift.h'

To Reproduce just add npm add library and pod install in ios folder

Expected behavior build to be successful

Please complete the following information:

jaitruworth commented 1 year ago

also followed steps to add code to app and add binary to app and getting same issue

tompsota commented 1 year ago

Hi @jaitruworth,

Unfortunately I wasn't able to reproduce the error. Please, share the whole stack trace of the error if possible.

For now, I would suggest reinstalling pods, maybe that could solve the problem:

In ios folder, run these commands:

  1. pod deintegrate
  2. pod cache clean --all
  3. pod install

Let us know if this helps.

Best, Tomas, Talsec developer

jaitruworth commented 1 year ago
  1. added library to npm (npm install)
  2. cd ios
  3. pod deintegrate
  4. pod cache clean --all
  5. pod install --verbose
  6. then run from Xcode and fails

there are 15 similar "Multiple commands produce" errors 2 of them are shown below

Multiple commands produce '/Users/../Library/Developer/Xcode/DerivedData/appname-ewsgfwgfwsjwrbcdprlujuzitvvy/Build/Products/Debug-iphonesimulator/freerasp-react-native/freerasp_react_native.framework/Headers/CryptoBridgingHeader.h'

Multiple commands produce '/Users/../Library/Developer/Xcode/DerivedData/..-ewsgfwgfwsjwrbcdprlujuzitvvy/Build/Products/Debug-iphonesimulator/freerasp-react-native/freerasp_react_native.framework/Headers/CurlWrapper.h'

Multiple commands produce '/Users/../Library/Developer/Xcode/DerivedData/..-ewsgfwgfwsjwrbcdprlujuzitvvy/Build/Products/Debug-iphonesimulator/freerasp-react-native/freerasp_react_native.framework/Headers/TalsecRuntime-Swift.h'

jaitruworth commented 1 year ago

Screenshot 2023-08-01 at 15 18 59

These

  1. ios-arm64
  2. ios-arm64_×86_64-simulator

two folder both contains TalsecRuntime-Swift.h CurlWrapper.h CryptoBridgingHeader.h & 12 more files that triggers multiple commands produce error

can you please help me with this?

tompsota commented 1 year ago

Hi @jaitruworth,

we'll do our best to fix the issue.

These folders are not duplicates and are not reason of the error. They include binary code for multiple architectures, allowing it to run on different devices and simulators.

We still didn't reproduce the issue. Can you please answer following questions?

  1. Is this a new installation of freeRASP, or are you upgrading from a previous version?
  2. What version of XCode are you using?
  3. Do you run app with Rosetta?
  4. In your app's target in XCode, go to General -> Frameworks, Libraries and Embedded Content. Do you see TalsecRuntime.xcframework listed there?
  5. Do you see TalsecRuntime.xcframework in Build Phases -> Link Binary With Libraries? Also, please look inside "Build Phases" tab for any build phase (e.g., "Copy Headers," "Copy Files," "Compile Sources") that may be generating conflicting files and causing the conflict. If you find multiple build phases generating these files, delete one of them.
jaitruworth commented 1 year ago

hii @tompsota Any update on this ??

tompsota commented 1 year ago

Hello @jaitruworth,

Could you please respond to the questions in my previous message? You can find them in this link: https://github.com/talsec/Free-RASP-ReactNative/issues/26#issuecomment-1660041920.

We performed a clean install of freeRASP and did not encounter any errors, therefore your answers will be valuable in identifying the issue.

jaitruworth commented 1 year ago
  1. New installation
  2. Xcode 14.1
  3. Rosetta? - no
  4. Frameworks, Libraries and Embedded Content. - can't see framework here
  5. Link Binary With Libraries? - can't see framework here
  6. Copy Headers," "Copy Files," "Compile Sources" - no duplicate found
jaitruworth commented 1 year ago

added library to Frameworks, Libraries and Embedded Content and Link Binary With Libraries? and got same issue

Found library in Embed Frameworks in Build phases

also removed from there and checked, still got same issue

tompsota commented 1 year ago

Hi @jaitruworth,

we just released new version, let's see if the problem still persists. Try to remove everything related to freeRASP first and try to do a clean install:

  1. npm uninstall freerasp-react-native (or delete node_modules and remove freerasp from package.json)
  2. cd ios
  3. pod deintegrate
  4. pod cache clean --all
  5. cd ..
  6. npm install freerasp-react-native
  7. cd ios
  8. pod install

Ensure that freerasp 3.3.0 is installed. Try to run the app and let us know if this helped.

jaitruworth commented 1 year ago

Still same issue Version 3.3.0 is installed Followed all steps you mentioned

gansu18 commented 1 year ago

@jaitruworth https://github.com/talsec/Free-RASP-ReactNative/issues/11

tompsota commented 1 year ago

Hi and sorry for late reply, thanks @gansu18 for pointing this out!

@jaitruworth, can you check if you have use_frameworks! in your Podfile and eventually remove it? freeRASP is shipped as a static library, therefore dynamic linking with use_frameworks! will lead to duplicate class error.

Suliman-A commented 1 year ago

Hi and sorry for late reply, thanks @gansu18 for pointing this out!

@jaitruworth, can you check if you have use_frameworks! in your Podfile and eventually remove it? freeRASP is shipped as a static library, therefore dynamic linking with use_frameworks! will lead to duplicate class error.

I only have this line use_frameworks! :linkage => :static in my Podfile and i don't think it's a good idea to remove it.

jaitruworth commented 1 year ago

yes removing use_frameworks breaks other library that we are using

tompsota commented 1 year ago

Hi @jaitruworth, @Suliman-A, @gansu18,

Indeed, if some other package require use_frameworks!, then you cannot remove it. However, I finally reproduced the problem and found a way to fix it.

Fix:

  1. Go to _nodemodules/freerasp-react-native/freerasp-react-native.podspec
  2. After a line that starts with 's.source_files' (line 17), add this code that removes the duplicate headers: s.exclude_files = 'ios/TalsecRuntime.xcframework/ios-arm64_x86_64-simulator/TalsecRuntime.framework/Headers/*.h', 'ios/TalsecRuntime.xcframework/ios-arm64/TalsecRuntime.framework/Headers/*.h'
  3. Run pod install.

After that, the project should build successfully.

Hope this helps.

We'll have to do some more testing until we are able to release this globally, to ensure compatibility with projects that do not use the use_frameworks! directive. However, in your case, everything will work as expected.

tompsota commented 1 year ago

Hi @jaitruworth @Suliman-A ,

We just released v3.3.1, which fixes the issue.

Best, Tomas, Talsec developer