繁体   English   中英

Cordova:Azure Devops Pipeline Xcode 构建失败:Pods-Name 不支持配置文件。 Pods-Name 不支持配置文件

[英]Cordova: Azure Devops Pipeline Xcode build failed: Pods-Name does not support provisioning profiles. Pods-Name does not support provisioning profiles

错误:

Pods-Name 不支持配置文件。 Pods-Name 不支持配置文件,但已手动指定配置文件 MobileAppProvisioning。 在构建设置编辑器中将配置文件值设置为“自动”。 (在项目“Pods”的目标“Pods-Name”中)

  • Xcode:12.4
  • Cordova CLI:10.0.0
  • 科尔多瓦-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

但是,由于 Azure 管道在我运行命令 Cordova 平台动态生成 ios 项目时动态生成 Z9E304D4E13DF1B7248ABZ8ABZ 项目并动态生成 9 文件。

那么,如何修改 Azure 管道中的 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 文件中看到添加的行。 然后存档并解决了问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM