Cordova钩子更改iOS和Android的应用程序名称

Cordova钩子更改iOS和Android的应用程序名称,cordova,Cordova,生成iOS目标时,我无法在应用程序名称中留有空格。在清单(android)和资源(ios)中覆盖应用程序名称是可以的,但在我重新构建应用程序时(因为它再次从config.xml复制应用程序名称),更改就会丢失 我正在考虑为它制作一个钩子。这样的钩子将为ios和android设置合适的应用程序名称值。有没有什么样的钩子可以做到这一点,而且“编译前”是正确的时机呢?我注意到,当名称中有空格或特殊字符时,Cordova项目名称通常不会很好地发挥作用。我通常只需要一个简单的项目名称,然后在本机项目中覆盖

生成iOS目标时,我无法在应用程序名称中留有空格。在清单(android)和资源(ios)中覆盖应用程序名称是可以的,但在我重新构建应用程序时(因为它再次从config.xml复制应用程序名称),更改就会丢失


我正在考虑为它制作一个钩子。这样的钩子将为ios和android设置合适的应用程序名称值。有没有什么样的钩子可以做到这一点,而且“编译前”是正确的时机呢?

我注意到,当名称中有空格或特殊字符时,Cordova项目名称通常不会很好地发挥作用。我通常只需要一个简单的项目名称,然后在本机项目中覆盖应用程序的显示名称

我从命令行构建我的应用程序,因为我的构建过程是通过jenkins连接的

我不太确定原生Cordova钩子,但在iOS上,你只需要修改“应用程序名”。你可以在这里找到这个文件

CORDOVA_PROJECT_DIRECTORY/platforms/ios/cordova/build.xcconfig
并在文件末尾添加以下行

PRODUCT_NAME = My Crazy App Name With Spaces And Character !?
现在当你运行

cordova compile ios --release
应用程序将显示上面指定的产品名称,而不是cordova项目的名称

Android有点复杂,需要修改几个xml文件


我将用安卓解决方案更新一下这个答案。

为了回答我自己的问题,我可以让安卓使用
after\u prepare
钩子创建一个脚本(我在dart中创建的,因为我比较习惯),它只需修改字符串
“app\u name”
platforms/android/res/values/strings.xml中的
。调用cordova prepare android
正确修复应用程序名称


对于iOS,我更改了XCode中的名称(在xxxx-Info.plist中,Bundle Display name),再次调用
cordova prepare iOS
似乎不会覆盖它

我创建了一个钩子来实现这一点。你可以看一看

该插件在添加显示名称时将其作为变量,然后在安装时更新iOS plist,并添加一个after_prepare钩子,为Android设置app_名称,这样您就不会遇到更改被覆盖的问题

cordova plugin add cordova-plugin-app-name --variable APP_NAME="My Super Cool App" --save

您是使用本机SDK还是仅使用命令行构建和导出IPAs/APK?我使用各种“cordova build”命令,我的目标是每次都不需要手动修改挂钩的位置,对于这种情况,我使用after_prepare,但我认为after prepare和before compile之间没有太大区别?我在cordova cli文档中的任何地方都找不到--变量。你能解释一下它是如何工作的吗?但是如何在在线服务“cordova build”中使用这个插件呢?“--变量”部分?