Cordova:Azure Devops 管道 Xcode 构建失败:Pods-名称不支持配置文件。 Pods-名称不支持配置文件
Cordova: Azure Devops Pipeline Xcode build failed: Pods-Name does not support provisioning profiles. Pods-Name does not support provisioning profiles
错误:
Pods-Name does not support provisioning profiles. Pods-Name does not
support provisioning profiles, but provisioning profile
MobileAppProvisioning has been manually specified. Set the
provisioning profile value to "Automatic" in the build settings
editor. (in target 'Pods-Name' from project 'Pods')
- Xcode: 12.4
- Cordova CLI:10.0.0
- cordova-ios: 6.2.0
我使用 Ionic Cordova 框架构建 ios 应用程序,并使用 Azure 管道构建和部署 (CI)。
所以,我的 Azure 管道中有以下任务:
- npm 安装
- 安装cocoapod
- cordova平台添加ios
- cordova 构建 ios
- 正在安装苹果证书
- Xcode build - 当 ARCHIVE 出现上述错误时抛出错误
- 将文件复制到工件
- 发布人工制品
我在网上搜索过这个,解决方案是更改 Podfile 并添加以下代码:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
end
end
end
但是,当我 运行 命令 Cordova 平台添加 ios 并且 Pod 文件动态生成时,Azure 管道会动态生成 ios 项目。
那么,如何修改Azure pipeline中的Podfile来更新Podfile并解决错误?
Cordova 默认不添加对 iOS 方向的支持,但您可以通过添加构建挂钩来实现。
为了让它工作,我遵循了以下步骤:
将以下内容添加到您的 config.xml 文件中:
<platform name="ios">
<hook src="iosAfterPlatformAdd.js" type="after_platform_add" />
</platform>
在顶层目录中创建一个名为iosAfterPlatformAdd.js的文件,并将以下代码复制到该文件中:
const fs = require("fs");
const execSync = require("child_process").execSync;
console.log('iosAfterPlatformAdd hook called');
execSync(`cd platforms/ios && pod deintegrate && cd ../../`, {
stdio: "inherit"
});
const searchString = 'use_frameworks!';
const fileName = './platforms/ios/Podfile';
const appendText = `${searchString}
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
end
end
end`;
try {
const data = fs.readFileSync(fileName, { encoding: 'utf8', flag: 'r' });
let content = data.replace(searchString, appendText);
const updatedData = fs.writeFileSync(fileName, content);
console.log('Podfile', content);
} catch (err) {
console.error(err)
}
execSync("pod install --project-directory='./platforms/ios/'", {
stdio: "inherit"
});
execSync("pod update --project-directory='./platforms/ios/'", {
stdio: "inherit"
});
从命令行,运行以下命令自动更改 Podfile:
cordova platform rm ios
cordova platform add ios
此时您应该会在 Podfile 文件中看到添加的行。
然后存档并解决了问题。
错误:
Pods-Name does not support provisioning profiles. Pods-Name does not support provisioning profiles, but provisioning profile MobileAppProvisioning has been manually specified. Set the provisioning profile value to "Automatic" in the build settings editor. (in target 'Pods-Name' from project 'Pods')
- Xcode: 12.4
- Cordova CLI:10.0.0
- cordova-ios: 6.2.0
我使用 Ionic Cordova 框架构建 ios 应用程序,并使用 Azure 管道构建和部署 (CI)。 所以,我的 Azure 管道中有以下任务:
- npm 安装
- 安装cocoapod
- cordova平台添加ios
- cordova 构建 ios
- 正在安装苹果证书
- Xcode build - 当 ARCHIVE 出现上述错误时抛出错误
- 将文件复制到工件
- 发布人工制品
我在网上搜索过这个,解决方案是更改 Podfile 并添加以下代码:
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
end
end
end
但是,当我 运行 命令 Cordova 平台添加 ios 并且 Pod 文件动态生成时,Azure 管道会动态生成 ios 项目。
那么,如何修改Azure pipeline中的Podfile来更新Podfile并解决错误?
Cordova 默认不添加对 iOS 方向的支持,但您可以通过添加构建挂钩来实现。
为了让它工作,我遵循了以下步骤:
将以下内容添加到您的 config.xml 文件中:
<platform name="ios">
<hook src="iosAfterPlatformAdd.js" type="after_platform_add" />
</platform>
在顶层目录中创建一个名为iosAfterPlatformAdd.js的文件,并将以下代码复制到该文件中:
const fs = require("fs");
const execSync = require("child_process").execSync;
console.log('iosAfterPlatformAdd hook called');
execSync(`cd platforms/ios && pod deintegrate && cd ../../`, {
stdio: "inherit"
});
const searchString = 'use_frameworks!';
const fileName = './platforms/ios/Podfile';
const appendText = `${searchString}
post_install do |installer|
installer.pods_project.targets.each do |target|
target.build_configurations.each do |config|
config.build_settings['EXPANDED_CODE_SIGN_IDENTITY'] = ""
config.build_settings['CODE_SIGNING_REQUIRED'] = "NO"
config.build_settings['CODE_SIGNING_ALLOWED'] = "NO"
end
end
end`;
try {
const data = fs.readFileSync(fileName, { encoding: 'utf8', flag: 'r' });
let content = data.replace(searchString, appendText);
const updatedData = fs.writeFileSync(fileName, content);
console.log('Podfile', content);
} catch (err) {
console.error(err)
}
execSync("pod install --project-directory='./platforms/ios/'", {
stdio: "inherit"
});
execSync("pod update --project-directory='./platforms/ios/'", {
stdio: "inherit"
});
从命令行,运行以下命令自动更改 Podfile:
cordova platform rm ios
cordova platform add ios
此时您应该会在 Podfile 文件中看到添加的行。 然后存档并解决了问题。