TuyaInc / tuyasmart_home_ios_sdk

Tuya Smart iOS Home SDK
https://tuyainc.github.io/tuyasmart_home_ios_sdk_doc
50 stars 19 forks source link

Ios sdk gives error tuyaSmartDeviceModel.h: no such file exist while building the app. #66

Closed nimesh1997 closed 4 years ago

nimesh1997 commented 4 years ago

Hi, I am trying to build the ios app and getting the below error. Please tell me what is the issue? Error: error: /Users/sushant/Desktop/zunpulse/zunpulserepo1/ios/Pods/TuyaSmartDeviceKit/ios/TuyaSmartDeviceKit.framework/Headers/TuyaSmartDeviceModel.h: No such file or directory (in target 'Runner' from project 'Runner') error: /Users/sushant/Desktop/zunpulse/zunpulserepo1/ios/Pods/TuyaSmartDeviceKit/ios/TuyaSmartDeviceKit.framework/Headers/TuyaSmartBleMeshModel.h: No such file or directory (in target 'Runner' from project 'Runner')

TuyaRonbin commented 4 years ago

It is recommended that you clear the cache of the current project in Xcode, and then reopen the project.

/Users/"UserName"/Library/Developer/Xcode/DerivedData/"projectName"

nimesh1997 commented 4 years ago

I tried this now but still same error no such file exist.

TuyaRonbin commented 4 years ago

Send me the contents of the podfile.

nimesh1997 commented 4 years ago

Podfile content

`

Uncomment this line to define a global platform for your project

platform :ios, '9.0'

CocoaPods analytics sends network stats synchronously affecting flutter build latency.

ENV['COCOAPODS_DISABLE_STATS'] = 'true'

project 'Runner', { 'Debug' => :debug, 'Profile' => :release, 'Release' => :release, }

def parse_KV_file(file, separator='=') file_abs_path = File.expand_path(file) if !File.exists? file_abs_path return []; end generated_key_values = {} skip_line_start_symbols = ["#", "/"] File.foreach(file_abs_path) do |line| next if skip_line_start_symbols.any? { |symbol| line =~ /^\s*#{symbol}/ } plugin = line.split(pattern=separator) if plugin.length == 2 podname = plugin[0].strip() path = plugin[1].strip() podpath = File.expand_path("#{path}", file_abs_path) generated_key_values[podname] = podpath else puts "Invalid plugin specification: #{line}" end end generated_key_values end

target 'Runner' do use_frameworks! use_modular_headers!

for Tuya SDK

pod "TuyaSmartHomeKit"

for Tuya Smart camera

pod "TuyaSmartCameraKit"

Flutter Pod

copied_flutter_dir = File.join(dir, 'Flutter') copied_framework_path = File.join(copied_flutter_dir, 'Flutter.framework') copied_podspec_path = File.join(copied_flutter_dir, 'Flutter.podspec') unless File.exist?(copied_framework_path) && File.exist?(copied_podspec_path)

Copy Flutter.framework and Flutter.podspec to Flutter/ to have something to link against if the xcode backend script has not run yet.

# That script will copy the correct debug/profile/release version of the framework based on the currently selected Xcode configuration.
# CocoaPods will not embed the framework on pod install (before any build phases can generate) if the dylib does not exist.

generated_xcode_build_settings_path = File.join(copied_flutter_dir, 'Generated.xcconfig')
unless File.exist?(generated_xcode_build_settings_path)
  raise "Generated.xcconfig must exist. If you're running pod install manually, make sure flutter pub get is executed first"
end
generated_xcode_build_settings = parse_KV_file(generated_xcode_build_settings_path)
cached_framework_dir = generated_xcode_build_settings['FLUTTER_FRAMEWORK_DIR'];

unless File.exist?(copied_framework_path)
  FileUtils.cp_r(File.join(cached_framework_dir, 'Flutter.framework'), copied_flutter_dir)
end
unless File.exist?(copied_podspec_path)
  FileUtils.cp(File.join(cached_framework_dir, 'Flutter.podspec'), copied_flutter_dir)
end

end

Keep pod path relative so it can be checked into Podfile.lock.

pod 'Flutter', :path => 'Flutter'

Plugin Pods

Prepare symlinks folder. We use symlinks to avoid having Podfile.lock

referring to absolute paths on developers' machines.

system('rm -rf .symlinks') system('mkdir -p .symlinks/plugins') plugin_pods = parse_KV_file('../.flutter-plugins') plugin_pods.each do |name, path| symlink = File.join('.symlinks', 'plugins', name) File.symlink(path, symlink) pod name, :path => File.join(symlink, 'ios') end end

post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['ENABLE_BITCODE'] = 'NO' config.build_settings['SWIFT_VERSION'] = '4.1' # <--- add this end end end `

TuyaRonbin commented 4 years ago

reference: https://stackoverflow.com/questions/10167442/whats-the-xcode-no-such-file-or-directory-error