3
votes

I've got a very curious error to share regarding Xcode localization process. I will try to share as much detail as legally possible.

From Xcode, I am trying to export an XLIFF file to send to our translators, via "Editor > Export for Localizations". However, this immediately throws error with the message:

The operation couldn't be completed. Argument list too long

This is indeed confusing, as I cannot find a more verbose log anywhere (I have already tried checking my Console.app). So, I spent quite a few time googling – to no avail. I couldn't find similar case like this. The error itself happens only when I am trying to export for localization. I can build and run the app just fine.

Facts

~ $ xcodebuild -version
Xcode 8.2
Build version 8C38
~ $ xcode-select -version
xcode-select version 2347.
~ $ echo $PATH
/Users/david.christiandy/.rbenv/shims:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/david.christiandy/arctools/arcanist/bin:/usr/local/go/bin:/Library/Frameworks/Mono.framework/Versions/Current/Commands
  1. I am using Xcode 8.2 on macOS Sierra 10.12.5.
  2. The error happens only when I try exporting from localization. This is also true when I run the localization process via xcodebuild -exportLocalizations.
  3. I can build and run the app just fine. (I believe) there's no problem with my header search paths.

Attempts

  • Thought there was something wrong in the code, so I tried to run the export process (via xcodebuild command) in a CI. Somehow, it's working. For the record, I am using Bitrise CI with the same stack as my system (Xcode 8.2.x, macOS 10.12)
  • Asked colleagues to run export process on their machines, and they have the same error.
  • This leads me to think that there must be something wrong with the configuration. So I made a standalone project to confirm that the export process fails consistently. Turns out, it works just fine!

So, the hypothesis I got currently is:

  • There's probably something wrong in the code, and
  • There might be tools/software (that most of our iOS engineers installed) that might contribute to the error (since the CI completes just fine).

I don't know why the CI can run the export process just fine, and I don't know when it might suddenly stop functioning (just like our local machines).

Appreciate any help on this matter. Thank you!

1
Here seems to be your answer (and I think this is your question too :D) forums.developer.apple.com/thread/86762, this worked? I so, please, answer your own question with the workaround and the source of the problem.Sulfkain
Thank you! Indeed, that is my question haha.dvdchr

1 Answers

5
votes

I also asked this question on Apple developer forums, here is the link: https://forums.developer.apple.com/thread/86762

“Argument list too long” sounds like E2BIG, which you get when you try to run a child process with a huge argument list (I believe the current limit is 256 KiB). I suspect that Export for Localizations is running some sort of command line tool to do that work (probably the extractLocStrings tool, which you’ll find lurking within Xcode’s app bundle) and passing it full paths to each of the files in your project. Depending on how many files you have and how long those paths are, it’s easy to run into problems like this.

One of the ‘fun’ things about bugs like this is that they are dependent on where you place your project. Things might work if the project is at the top of your home directory but fail if it’s nested deep inside a subdirectory. That also suggests a potential workaround, namely, to move your project further up in the directory hierarchy.

Finally, you should definitely file a bug about this. I believe we’ve seen this before (r. 30703294) but your report will help reinforce that this is causing problems for developers in the field. Please post your bug number, just for the record.

Several days ago before I read this answer, I managed to get the export working by deleting some folders via Xcode (remove references only). Initially I suspected that there's an invalid format within the folders that I deleted, but when I tried deleting other folders, the export process works just fine.

I also tried exporting strings using Xcode 9, and I didn't encounter the problem. So hopefully this bug is only for Xcode 8.3.3 and below.