【问题标题】:Cordova: Azure Devops Pipeline Xcode build failed: Pods-Name does not support provisioning profiles. Pods-Name does not support provisioning profilesCordova:Azure Devops Pipeline Xcode 构建失败:Pods-Name 不支持配置文件。 Pods-Name 不支持配置文件
【发布时间】:2021-08-08 16:53:30
【问题描述】:

错误:

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

  • Xcode:12.4
  • 科尔多瓦 CLI:10.0.0
  • cordova-ios:6.2.0

我使用 Ionic Cordova 框架构建 ios 应用程序,并使用 Azure 管道 (CI) 构建和部署。 因此,我的 Azure 管道中有以下任务:

  • npm 安装
  • 安装 cocoapod
  • cordova 平台添加 ios
  • cordova build 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 platform add ios 和 Pod 文件动态生成时,Azure 管道会动态生成 ios 项目。

那么,如何修改 Azure 管道中的 Podfile 以更新 Podfile 并解决错误?

【问题讨论】:

    标签: ios xcode cordova ionic-framework azure-pipelines


    【解决方案1】:

    默认情况下,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 文件中看到添加的行。 然后存档并解决了问题。

    【讨论】:

      猜你喜欢
      • 2013-02-16
      • 2019-05-19
      • 2010-12-27
      • 2022-10-19
      • 2023-03-13
      • 2023-01-16
      • 2016-11-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多