Closed jasssonpet closed 8 years ago
From @NathanWalker on March 22, 2016 18:31
To help in debugging the above for whomever may tackle the fix here:
git clone https://github.com/bradmartin/nativescript-cardview.git
npm run setup
// you will see warnings, it's oknpm run demo.ios
// more warnings, it will run just fine thoughYou should see Simulator open and the demo running properly.
Now stop ctrl + c
, then:
cd demo
tns emulate ios
And you will see the error reported:
Expected "/*", "//" or "{" but "<" found.
From @NathanWalker on March 22, 2016 21:38
As reported by @raef (on slack) This appears to be a workaround for those working on NativeScript projects with CocoaPods. Ensure you have this tool installed:
brew install xcproj
Then add this as an npm
script (replace YourApp with your actual project name!!):
package.json
"scripts": {
"ios": "xcproj --project platforms/ios/YourApp.xcodeproj touch; xcproj --project platforms/ios/Pods/Pods.xcodeproj touch; tns livesync ios --emulator --watch"
}
Then run everything through that so:
npm run ios
From @raefa on March 22, 2016 23:0
As discussed in the Slack iOS channel I got this going. Thanks to @alg as he helped me figure this out (doing a diff between his files and mine). So the issue is caused by “pod install” converting the “.pbxproj” files (within the xcodeproj files) to XML. NativeScript expects them to be in JSON. The problem is explained in a little more detail here: https://github.com/CocoaPods/CocoaPods/wiki/Generate-ASCII-format-xcodeproj
I don’t know why it changes or why it is only happening now with Xcode 7.3. I read here (https://github.com/CocoaPods/CocoaPods/wiki/Generate-ASCII-format-xcodeproj) that if you touch the files it converts them back to JSON. I tried the technique they specified but that did not work. So I installed xcproj (brew install xcproj
see: https://github.com/0xced/xcproj/blob/develop/README.md) and then played around touching the project files. I found that I needed to convert both the platforms/ios/ExampleApp.xcodeproj
(replace ExampleApp with your app name) and the platforms/ios/Pods/Pods.xcodeproj
file. So to do that run:
xcproj --project "platforms/ios/ExampleApp.xcodeproj" touch
xcproj --project "platforms/ios/Pods/Pods.xcodeproj" touch
That is a bit of a pain to type in every time so I created some quick bash scripts to run to build. E.g.
#!/bin/bash
echo LiveSync to Simulator
xcproj --project "platforms/ios/HotHealthApp.xcodeproj" touch
xcproj --project "platforms/ios/Pods/Pods.xcodeproj" touch
tns livesync ios --emulator --watch
I hope that helps.
So to sum it up - CocoaPods updates the Xcode project to XML format and node-xcode is not being able to parse xml projects. I'm moving this to the CLI repo.
Argh, :+1:, this caught me out.
I updated to xcode 7.3 today, and I have no such issues... my app uses 2-3 pods also. I can build & run the app several times both via cli and via xcode.
As @jasssonpet said this is probably a Cocoa Pods issue
@NathanWalker @manijak can you guys run $ pod --version
inside a terminal and tell me your Cocoa Pods' versions
@Mitko-Kerezov my version is 0.39.0
@Mitko-Kerezov 0.39.0
here as well.
All right - now I too seem to be getting 100% reproduction @manijak can you tell me which pods your project uses exactly - it might be that the issue only applies to specific pods
@Mitko-Kerezov
There are probably some dependencies in each of them. Don't know what is the best way to get a full list here, they seem to be spread to diferent folders in platforms/ios/Pods
Issue seems to have disappeared in Cocoa Pods 1.0.0 beta releases
@Mitko-Kerezov Does this mean we should all just update to Cocoa Pods 1.0.0 beta? Or should we wait til' {N} ios-runtime 1.7.2?
@NathanWalker Bottom line: The issue is only reproduced with Xcode 7.3 and CocoaPods < 1.0.0. Lower versions of CocoaPods don't support Xcode 7.3 yet and will not in the near future. The workaround proposed by @jasssonpet will be implemented in NatvieScript CLI's next release - 2.0.0 so currently there are three options in total - either wait for NativeScript CLI 2.0.0, upgrade to the latest CocoaPods beta, or use @jasssonpet's workaround
@Mitko-Kerezov So I updated to latest CocoaPods beta 1.0.0.beta.8
and I now get warnings like this during compile:
[!] CocoaPods did not set the base configuration of your project because your project already has a custom config set. In order for CocoaPods integration to work at all, please either set the base configurations of the target `demo` to `Pods/Target Support Files/Pods-demo/Pods-demo.debug.xcconfig` or include the `Pods/Target Support Files/Pods-demo/Pods-demo.debug.xcconfig` in your build configuration (`demo/build-debug.xcconfig`).
[!] CocoaPods did not set the base configuration of your project because your project already has a custom config set. In order for CocoaPods integration to work at all, please either set the base configurations of the target `demo` to `Pods/Target Support Files/Pods-demo/Pods-demo.release.xcconfig` or include the `Pods/Target Support Files/Pods-demo/Pods-demo.release.xcconfig` in your build configuration (`demo/build-release.xcconfig`).
Then it finally errors with this:
diff: /../Podfile.lock: No such file or directory
diff: /Manifest.lock: No such file or directory
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.
I tried running pod install
in the platform/ios
directory as it mentions but no dice.
I've also searched around for those pod errors and have yet to find a solution. Do you know what would work to get me past ^ all that with latest CocoaPods beta 1.0.0.beta.8
@NathanWalker Sorry for the late reply
I think the issue you're describing may be derived from the fact that you haven't cleared (removed) the platforms
directory in your project prior to building with the new CocoaPods
.
I'm going to go ahead and add a disclaimer here stating that even if you cleaned your platforms
directory, you'd probably hit https://github.com/NativeScript/nativescript-cli/issues/1611
Luckily, however, all of these problems will be solved in the upcoming 2.0.0 release which should be out by the start of next week.
Until release however I strongly suggest switching back to CocoaPods 0.39.0
and using the workaround described by @jasssonpet
@Mitko-Kerezov -- I've seen a couple reports that this is NOT been solved in v2.00 are we sure the patch got applied.
Maybe a clarification, does 2.0 also require CocoaPods 1.0 beta?
@NathanaelA
2.0 does not require CocoaPods 1.0 beta. In 2.0 if the CLI detects a troublesome configuration (e.g. Xcode 7.3 and CocoaPods 0.39.0) a message is displayed telling users to install the xcproj command line tool. Underneath, the CLI uses said tool to restore the main .pbxproj
back to the ASCII format.
So in theory every configuration should work - regardless of Xcode and CocoaPods versions. @NathanaelA could the reports you mentioned be related to CLI 1.7.x users?
No, a couple people in the general slack chat was having the issue with 2.00 and Cocoapods .39. Shortly after I posted the question, they upgraded to 1.0 beta the issues vanished. So I updated my question to ask for clarification on the fix. :grinning:
I still have CP .39 and xcproj so I'll try and see what happens tomorrow when I upgrade my mac box to 2.00...
Sounds good - any feedback would be much appreciated
Well, in my case my stack so far is working fine with V2.00 and Cocoapods 0.39.
@NathanaelA is 2.0 stable enough in iOS? If so how about in Android? I read there are issues posted by people ?
Thanks
I'm getting this issue again on xcode 8 with ios 10, is any one else?
Expected "/*", "//" or "{" but "<" found.
Me too. Seems it reappears.
@ignaciolarranaga check this comment out, will fix you up hopefully: https://github.com/NativeScript/NativeScript/issues/2703#issuecomment-247430766
@firescript thanks !, but I think it is happening again, check my comments at the issue: https://github.com/NativeScript/nativescript-cli/issues/2062
From @NathanWalker on March 22, 2016 17:40
7.3 fixes a number of problems with 7.2, namely this very frustrating issue for us plugin developers: https://github.com/NativeScript/ios-runtime/issues/536
The only problem though is (as @raef mentioned on Slack), on subsequent build/runs:
If you remove
platforms
and add clean viatns platform add ios
, everything builds and runs perfectly. Awesome.So it appears the only issue is just subsequent runs after the platform has been added. Any insight or patch that could be incorporated to resolve this would be very much appreciated.
Copied from original issue: NativeScript/ios-runtime#538