SolvedNativeScript No .ipa found in /Users/.../platforms/ios/build/Debug-iphoneos directory

Describe the bug
After updating to xcode 12, I get this error when I run tns run ios:

Project successfully built.
Unable to apply changes on device: ... Error is: No .ipa found in /Users/.../platforms/ios/build/Debug-iphoneos directory..

I have checked the folder and the .ipa file exists. In order to make it work I had to change the BundleDisplayName and BundleName in Info.plist back to ${PRODUCT_NAME}.

Info.plist (before)

<key>CFBundleDisplayName</key>
<string>Example Name</string>
<key>CFBundleName</key>
<string>Example Name</string>

Info.plist (after)

<key>CFBundleDisplayName</key>
<string>${PRODUCT_NAME}</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>

But my ${PRODUCT_NAME} is ExampleNameApp, so I can't keep this change.

Here is someone else with the same problem, but the issue is closed without fix: NativeScript/nativescript-cli#5345

Environment

"tns-android": {
   "version": "6.5.2"
},
"tns-ios": {
   "version": "6.5.2"
}
"dependencies": {
    "@nativescript/theme": "^2.2.1",
    "@vue/devtools": "^5.3.3",
    "nativescript-toasty": "^3.0.0-alpha.2",
    "nativescript-ui-sidedrawer": "^8.0.1",
    "nativescript-vue": "^2.6.0",
    "nativescript-vue-devtools": "^1.4.0",
    "rxjs": "^6.4.0",
    "tns-core-modules": "^6.5.1",
    "vuex": "^3.1.1"
  },
  "devDependencies": {
    "@babel/preset-env": "^7.0.0",
    "babel-loader": "^8.1.0",
    "nativescript-dev-webpack": "^1.5.1",
    "nativescript-vue-template-compiler": "^2.6.0",
    "nativescript-worker-loader": "~0.11.0",
    "node-sass": "^4.13.1",
    "tns-platform-declarations": "^6.5.1",
    "typescript": "^3.8.3",
    "@types/node": "^13.11.1",
    "vue": "^2.6.11",
    "vue-loader": "^15.9.1",
    "@babel/core": "~7.1.0"
  },
17 Answers

✔️Accepted Answer

Adding my 2 cents.

With @NathanWalker's PR to fix nativescript-localize applied, I can now do this in my Info.plist:

<key>CFBundleDisplayName</key>
<string>Whatever you need</string>
<key>CFBundleName</key>
<string>${PRODUCT_NAME}</string>

That will make sure CFBundleName sets the .ipa name to whatever the CLI expects, and allows you to set CFBundleDisplayName to whatever you need it to be.

Note that the latest version of nativescript-localize (4.2.2) will only change CFBundleDisplayName based on your i18n files, so you can have a language-specific app name. It won't touch CFBundleName anymore so this bug no longer pops up for me.

Other Answers:

I am encountering the same issue.

And when I do get it to install on my device, it either gets stuck on "Restarting application on device" or it says "Unable to start application {my app id} on device {my device id}. Try starting it manually."

@JWiseCoder
I am running into the same issue.

@asharghi
This is more of an FYI for others, I found out if you are using this plugin with app.name set:

https://www.npmjs.com/package/nativescript-localize

Setting ${PRODUCT_NAME} in the Info.plist will get blown away.

For now, I have written internally a "after-buildIOS" hook to rename the file back to the workspace file expected by the NativeScript build process.

However, this does not cure the issue exposed by @JWiseCoder.

More Issues: