apache / cordova-ios

Apache Cordova iOS
https://cordova.apache.org/
Apache License 2.0
2.15k stars 987 forks source link

cordova-ios 6.2.0: onesignal-cordova-plugin@3.3.0 #import <OneSignal/OneSignal.h>file not found when name contains non-latin1 symbols #1289

Open anatoly-spb opened 1 year ago

anatoly-spb commented 1 year ago

Thank you for the great tool such as Cordova!

I have Ionic6 project powered by Cordova (https://github.com/anatoly-spb/ionic6-hello) and get #import <OneSignal/OneSignal.h>file not found during build.

My ionic info:

Ionic:

   Ionic CLI                     : 6.20.8 (/Users/jenkins/jenkins_slave/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node16.19.0/lib/node_modules/@ionic/cli)
   Ionic Framework               : @ionic/angular 6.5.4
   @angular-devkit/build-angular : 15.1.6
   @angular-devkit/schematics    : 15.1.6
   @angular/cli                  : 15.1.6
   @ionic/angular-toolkit        : 8.0.0

Cordova:

   Cordova CLI       : 11.1.0
   Cordova Platforms : ios 6.2.0
   Cordova Plugins   : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 5.0.0, (and 6 other plugins)

Utility:

   cordova-res : 0.15.4
   native-run  : 1.7.1

System:

   ios-deploy : 1.11.4
   ios-sim    : 8.0.2
   NodeJS     : v16.19.0 (/Users/jenkins/jenkins_slave/tools/jenkins.plugins.nodejs.tools.NodeJSInstallation/node16.19.0/bin/node)
   npm        : 8.19.3
   OS         : macOS Monterey
   Xcode      : Xcode 14.2 Build version 14C18

I have found the cause of this problem. This is non latin1 symbols in name in the config.xml:

    <name>Тестовый проект Ionic6</name>

https://github.com/anatoly-spb/ionic6-hello/blob/main/config.xml#L3

Steps to reproduce the problem:

  1. install node 16.19.0 cordova@11.1.0 cordova-res@0.15.4 native-run@1.7.1 @ionic/cli@6.20.8
  2. git clone https://github.com/anatoly-spb/ionic6-hello
  3. cd ionic6-hello
  4. npm install
  5. ionic cordova platforms add ios
  6. cd platforms/ios
  7. pod repo update
  8. pod install
  9. cd ../..
  10. security unlock-keychain -p "${UNLOCK_KEYCHAIN_PASSWORD}" login.keychain
  11. ionic cordova build ios
    onesignal-cordova-plugin/OneSignalPush.h:32:9: fatal error: 'OneSignal/OneSignal.h' file not found
    #import <OneSignal/OneSignal.h>
        ^~~~~~~~~~~~~~~~~~~~~~~
    1 error generated.

If we look into the platforms/ios/Pods/Pods.xcodeproj/project.pdxproj generated file:

...
/* Begin PBXFileReference section */
        0D3E8DCD7B1DADFDFB657927E051C5E9 /* Pods-Тестовый проект Ionic6.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-Тестовый проект Ionic6.modulemap"; sourceTree = "<group>"; };
        1FBC6F9C1DCF76A0CB20C0F87BFC8A7A /* Pods-Тестовый проект Ionic6-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-Тестовый проект Ionic6-dummy.m"; sourceTree = "<group>"; };
        2005BF5B0BF9FD158BE6A2BE2F1C90E9 /* Pods-Тестовый проект Ionic6.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Тестовый проект Ionic6.release.xcconfig"; sourceTree = "<group>"; };
        235750557D71E3DEC43FC870D42D17CD /* Pods-Тестовый проект Ionic6-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-Тестовый проект Ionic6-acknowledgements.markdown"; sourceTree = "<group>"; };
        2BDCB297F7EA2B64E2AFA454657F2B81 /* Pods-Тестовый проект Ionic6-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-Тестовый проект Ionic6-umbrella.h"; sourceTree = "<group>"; };
        41EFC0168F7D9E3D18E90E260D0E5008 /* OneSignalCore.xcframework */ = {isa = PBXFileReference; includeInIndex = 1; name = OneSignalCore.xcframework; path = iOS_SDK/OneSignalSDK/OneSignal_Core/OneSignalCore.xcframework; sourceTree = "<group>"; };
        443D29DAF3E8F51A71332019B811F554 /* Pods-Тестовый проект Ionic6-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Тестовый проект Ionic6-Info.plist"; sourceTree = "<group>"; };
        4B09CA017A30EFBECEC44EEE8783E547 /* Pods-Тестовый проект Ionic6 */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Тестовый проект Ionic6"; path = Pods__________________Ionic6.framework; sourceTree = BUILT_PRODUCTS_DIR; };
        73010CC983E3809BECEE5348DA1BB8C6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS14.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; };
        77B2BC0ED9B2CD1068C8F506D6E705C3 /* Pods-Тестовый проект Ionic6.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-Тестовый проект Ionic6.debug.xcconfig"; sourceTree = "<group>"; };
        8D4BF83AB36E673DC91FF7B9A7669269 /* Pods-Тестовый проект Ionic6-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-Тестовый проект Ionic6-acknowledgements.plist"; sourceTree = "<group>"; };
        907B2E4A768D10C2EF262A885648D173 /* OneSignalXCFramework-xcframeworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "OneSignalXCFramework-xcframeworks.sh"; sourceTree = "<group>"; };
        988AE3A3846A92E7331D47044BD7E417 /* OneSignalOutcomes.xcframework */ = {isa = PBXFileReference; includeInIndex = 1; name = OneSignalOutcomes.xcframework; path = iOS_SDK/OneSignalSDK/OneSignal_Outcomes/OneSignalOutcomes.xcframework; sourceTree = "<group>"; };
        9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
        BAC083DC6D1A62F577F32017FF266DAF /* OneSignalExtension.xcframework */ = {isa = PBXFileReference; includeInIndex = 1; name = OneSignalExtension.xcframework; path = iOS_SDK/OneSignalSDK/OneSignal_Extension/OneSignalExtension.xcframework; sourceTree = "<group>"; };
        CA4AB949E23077E9BAA62DE4A373E0BE /* OneSignalXCFramework.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = OneSignalXCFramework.debug.xcconfig; sourceTree = "<group>"; };
        CCF8807396E57E57229DE194173E14A1 /* OneSignalXCFramework.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = OneSignalXCFramework.release.xcconfig; sourceTree = "<group>"; };
        ED1EA2EB79D59EB2325301DBA0486F8B /* Pods-Тестовый проект Ionic6-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-Тестовый проект Ionic6-frameworks.sh"; sourceTree = "<group>"; };
        F8E18BAFF042F61B8590FFDE5D404002 /* OneSignal.xcframework */ = {isa = PBXFileReference; includeInIndex = 1; name = OneSignal.xcframework; path = iOS_SDK/OneSignalSDK/OneSignal_XCFramework/OneSignal.xcframework; sourceTree = "<group>"; };
/* End PBXFileReference section */
...

There is:

4B09CA017A30EFBECEC44EEE8783E547 /* Pods-Тестовый проект Ionic6 */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-Тестовый проект Ionic6"; path = Pods__________________Ionic6.framework; sourceTree = BUILT_PRODUCTS_DIR; };

Could path = Pods__Ionic6.framework be a problem?

Thank you for any help!

BR, Anatoly