How to rename platform "App" in ionic with capacitor - ionic-framework

How to rename platform application name from "App" to something else?
When adding platform to ionic capacitor project by npx cap add ios it generates ios/App folder but I would like to name it ios/my-app.
And if it is possible I would like to add two apps for the same project for different environments (ios/my-app-test and ios/my-app-prod).

From looking into this it seems the answer is no to both of your questions.
The IOS template comes from here:
https://github.com/ionic-team/capacitor/tree/master/ios-template
Which has the /App/ folder set without any configuration options.
The command starts here:
https://github.com/ionic-team/capacitor/blob/master/cli/src/tasks/add.ts
Then hands off to this file for ios:
https://github.com/ionic-team/capacitor/blob/master/cli/src/ios/add.ts
And all of the settings are put together here:
https://github.com/ionic-team/capacitor/blob/master/cli/src/config.ts#L182
Which shows that it just pulls in the template dir, with no option to configure any renaming of the subfolders within it:
https://github.com/ionic-team/capacitor/blob/master/cli/src/ios/add.ts#L17

This is actually now addressed in the documentation here: https://capacitor.ionicframework.com/docs/ios/configuration/#renaming-the-application-s-default-app-name
You can't rename the App folder, but you can set the name of your app by renaming the "target" called "App".
In Xcode, click on the name of the target twice to edit the name.
Update the Podfile where it says 'App' to the new target name.
target 'App' do # <- change 'App' to 'Your App Name'
capacitor_pods
# Add your Pods here
end
Restart Xcode to see the change fully reflected.
Don't try and change the name of the project itself or things can start to break... Just leave as App. The strategy by #bittor poza caused similar issues so make sure to only change the Target name.

I have changed the name of the project in two simple steps.
Select the name of the project.
Enter the new name in the menu on the right.
Official Xcode documentation
Edit: The proper way to avoid future problems when updating Capacitor is to follow the official documentation. Renaming the application's default App name
Example: Example

You can't rename the App folder, what you can do is to add targets to the native project.
Just right click the existing "App" target and choose duplicate. You can also rename the existing target if you click on the "App" text.
But if you add new targets, or rename the existing one, you have to also modify the Podfile to add the new targets or to rename the current target accordingly.

Here is the solution after trying multiple time
you just have to follow the capacitor documentation
1: Delete you ios folder
2: then again add ios using this cmd
npx cap add ios
3: then follow the capacitor official documentation that ask you to do
two steps.
=> Edit pods file like this
=> Rename the App in target section Check this image
Documentation
then it will not throw any error work perfectly
My Answer on ionic forms

As of 2023, all of the previous solutions seems to either not work well, or give problems. I'm not saying that this solution is the absolute best, but I've found this out when I was looking at all of these solutions while having this problem.
Change the iOS app display name
You can change the app display name that shows up on the app by following these steps
Click on the App project folder
Go to the Targets Area (Usually would be named App, but my isn't because I've manually changed the name)
Go to the info tab
Go to Bundle display name and change the value. This value will be the same value that will be displayed as the name on the iOS app so don't use too many letters.

Related

Remove static library based on certain preprocessor macro

I have one functionality and it is depending on one static library. Actually, Apple is not allowing this static library because of few reasons. So, for now we have decided to add one Preprocessor macro and based on that functionality should be switch on/off.
I have switched my code to behave based on that Preprocessor macro. But I didn't find any to link or unlink the library based on preprocessor macro. I can not allow to link the library all times, as I have already told apple is not allowing it.
One solution that I already know : I can create the multiple target. But problem is that my app has already lots of targets. So, again to manage this I have to create one more target for each target those are already created.
Any help will be appreciated.
Edit:
I have created configuration like Francesco suggested. But One quick question I have let's say If I will remove the path of library from "Library Search Path" then that library will not be linked to app? Because that library is still in target of App.
Instead of targets you can create multiple configurations. And you can change the linker flags there.
I did this think for Sparkle framework (which is not allowed on App Store)
EDIT:
To create/manage the configurations click on the project in the sidebar. Then in the main window select again the project, not the targets, and select the "Info" tab.
Together with Deployment Target selection and Languages you will find a Configuration section.
You can add or remove configurations from there.
Then to launch it you have to go to Product -> Scheme -> Edit Scheme -> Build Configurations.
You can duplicate an existing scheme and choose the correct configuration from there.
You can remove the static library from the list of linked items by setting a (somewhat undocumented) Xcode build setting:
EXCLUDED_SOURCE_FILE_NAMES = libUnwanted.a
You can do this in an .xcconfig file or in the normal target build settings UI (by adding a custom build setting). If you for example set this in the "Release" configuration Xcode will include the library in the "Debug" build but omit if for the release build.
EXCLUDED_SOURCE_FILE_NAMES works with all kinds of files that can be added to a target: source files, resources, libraries, ...
Here's how to do this step by step:
Open the target build settings by clicking on the blue project icon in the Project Navigator and select the Build Settings tab.
Click the plus icon to add a "User-Defined Setting"
Name the setting "EXCLUDED_SOURCE_FILE_NAMES"
Expand the Configurations for the setting and set the "Release" value to the name of your unwanted library.
Credit of this answer goes to Nikolai Ruhe & Francesco
I have combined the answer of both and I got the solution.
Here are the steps that I followed.
Created new configuration. ( To know how to create configuration see
the answer of Francesco)
Added flag EXCLUDED_SOURCE_FILE_NAMES in user-defined setting of Build settings. (For steps see the answer of Nikolai Ruhe). And in this flag I have added the name of my static library under the my custom configuration.
Here is a good tutorial that will definitely help you : Remove tesflight from Distriubtion

Xcode - How to change application/project name : what do I need to to update and check?

Using Xcode 4.2, if I want to change my application/project name (including the name of the project folder and subfolder that are auto created by Xcode), what are the different items I need to update to make the whole thing compile and work again like a charm ?
I have noticed that I have to change the pch acces path, the bundle identifier, ... but I'm afraid of missing something.
It's really easy in Xcode 4. Simply double click (slowly) on your project name in the Navigator (the bar on the left). When you change the name of your project, Xcode will ask you to confirm which files to change (generally, it will be all of the ones necessary).
Alternately, if you simply want to change the name of your bundle (the name of your app as it appears in a users' home screen), you can just change your "Bundle Display Name" in your app plist.
An advice : NEVER change the name of your project without having saved the whole thing before. Even if XCode has a feature that helps to do this, using it may destroy all your hard work to organise your project, letting many many dirty things everywhere, not changing everything that needs to be changed, it's just awfull. I've tried this some days ago on a just simple project, letting XCode change the main things, but it has let so many things unchanged, or changed things without updating links, so I've had to rebuild a new project from the beginning to make it compile again.
If you just want to change the App name, select the project in xcode, select the app in TARGETS > YourAppOldName. Press enter, rename the OldName. Save, compile. thats all!
Change the config.xml from the main www directory
Here is the Name you want to change
here is description of your application
My team
Now rebuild app with CLI
phonegap build ios, phonegap install ios or phonegap run ios

Duplicating an Xcode 4 Project

Basically I want to make an independent copy of my Xcode project and all of my files. How can I do this? I'm researching graphing frameworks and I want to use the same UI for each.
Seconding #zoul's comment, this can be accomplished in Xcode 4.5 with four steps.
In Finder, duplicate the project folder. Do not update the .xcodeproj file name.
In Xcode, rename the project. Accept the proposed changes.
Still in Xcode, rename the scheme in "Manage Schemes".
In Info.plist, rename your Bundle identifier.
Few months ago, I had the need to create a different applications with the same source code.
I didn't wanted to copy the full directory, so I came up with a procedure that allowed me to mantain the source code in one place and create many different apps based on the same source code.
My procedure is the following:
duplicate the target to make a new target and change the name to the new name
change the name of the product and info.plist in the build options (select the new target and click info button), make sure this is for All Configurations
rename the info.plist file created at the duplication to "newnameInfo".plist (click on the file and then info button and pick the target)
add icon.png to the resources for the specific target.
change the name of the icon
in the NewnameInfo.plist change the icon name to icon_xxx and the bundle identifier com.yourdomain.newname
in language/other flags you can have a flag to check at the code.
create a new APP_ID in the iOS Provisional Portal
if APN is used, configure the APN BEFORE creating the development profile
create a new development & distribution (ad-hoc or appstore)
in Target (info) choose the right profile for the code sign
I hope this helps.
--nnahum
Go to your project folder. Right click on it. Select "duplicate".
Is there something you want to achieve that this doesn't accomplish?
Copy and paste your project folder. Open the new folder and open the Xcode project file. Select the project name in the "Project Navigator" on the left side and then in "File Inspector" on the right hand side, change the name of the project under Identity and Type.
That way you will have a duplicate project with two different names.
Hope this helps!

Distinguishing development iPhone app versions

I like to keep a store-bought version of my iPhone apps on my phone so that I can reproduce any customer issues that come up, but I obviously also want to run the most current development version. I can install both (one from iTunes, one from xCode) but I'm interested in ways that I'm better able to tell the two apart. I could just change the name or icon temporarily, but that doesn't seem very failsafe, i.e. I might forget and ship it with the wrong icon.
Is there a happy funtime developer way to do this?
I was inspired by Eric's idea of adding a user-defined setting to the project but I didn't want to run a script every time I built the project.
We know that the iPhone looks for icon files named "Icon.png" by default. It turns out that the "Icon File" setting in the project plist isn't necessary at all if you've named your icon properly. However, if there is no file named "Icon.png" in the project, xCode looks at the value of the "Icon File" setting.
I set a user-defined setting in "Debug" called "Icon_Name" to a non-standard icon name, "DevIcon.png" and "ReleaseIcon.png" for the "Release" config. The "Icon File" setting in the project plist can now be set to ${ICON_NAME} and will take on the value of whatever config file we're using. Now building under two different configurations does use two different icons.
Edit: For multiple icons (high res, small, ipad, etc) I made a slightly different approach. The user-defined setting is now "IconPrepend" which is "Dev" for debug and "Release" for release config. I'm now using "Icon Files" (rather than "Icon File") in the info plist which takes an array of strings. Each string is prepended with ${ICONPREPEND} so that debug configurations look for "DevIcon.png" or "DevIcon#2x.png" and release configurations look for "ReleaseIcon.png" or "ReleaseIcon#2x.png".
Here's an idea - if you set a User-Defined Setting in your Project Build properties for Debug only along the lines of USE_DEV_ICON=YES (or something). Then, using the "Run Script" option in your Build Target you could copy different icons based on which Active Configuration you called.
Something along the lines of (pseudo-code):
if ($USE_DEV_ICON == YES)
cp DevIcon.png Icon.png
else
cp RealIcon.png Icon.png
Then every time you build, depending on the active configuration, it will copy the correct icon.
Most probably there is no other way. Your app store version and development version is completely different to the OS. If you want to distinguish, you need to change the icon or name. You can also include some debugging label (e.g. version number) in your development version, but you may also forget to remove this.
Maybe you'd just buy a second iPhone? Seriously. On your place I'd ask the same question as you do, but I will definitely take such a solution in mind. If I was an iPhone (or whatever other specific platform) developer, I'd most probably have more than one.
Couldn't you make a new target which has a different Bundle name in the Info.plist file, and use this target whenever you want to build the app to run on your iPhone?

When compiling for multiple targets in XCode, how do i ensure that certain files will not be included one target

I searched for a long time on stackoverflow using every keyword I could think of to solve this. I am programming for iphone and I have a lite and paid version of my app. I followed the instructions here Creating Lite Versions of iPhone Games / Apps for duplicating the target. This works and now I am working on slimming down the lite version.
Main problem? Images. The lite version needs to have several hundred less images than the paid version. So, I made 2 groups in XCode. One "Folder Group" in Xcode - named "FreeImages" and another "ProImages". I want all FreeImages only to be included in the lite app and all FreeImages and ProImages to be in the paid app. I do not care that XCode considers these Groups to be Virtual Folders. I reversed the instructions to a point and have an environment flag (-D) set in XCode "PLUS_VERSION" I want XCode to basically do the following:
If (PLUS_VERSION)
{
copy contents of FreeImages *and* ProImages where normally they go
}
else
{
copy contents of FreeImages where they normally go.
}
Anyone know where to start to tell XCode to conditionally copy contents of groups into the target?
For each resource (or folder of resources) you want to direct to a specific target, you can click on the resource and inspect it (either via right-clicking and selecting Get Info or by clicking on the Inspect toolbar option). Within that info dialog will be a tab called Targets, where you can check the targets you want the resource (or even source code file) to be incorporated into, and uncheck the ones you don't.
Alternatively, I believe you can navigate to the target itself in Xcode, click on the triangle next to its name to expand the list of build phases, expand the Copy Bundle Resources build phase, and manually delete from the list there any resources you don't wish to have copied over into that target.