CocoaPods文件引用是多个组的成员

时间:2015-10-28 15:51:57

标签: cocoapods ios-frameworks

我有一个分享扩展的应用。我的应用取决于[Authorize] public ActionResult Excel(string user) { var products = new System.Data.DataTable("Activity"); // Creates the DataTable products.Columns.Add("Project", typeof(string)); // Adds a column IEnumerable<Project> lp = _service.List(strUser, strYear, strMonth); // Creates a list of the projects UserActivityDb db = new UserActivityDb(System.Configuration.ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString); lp = lp.Where(p => (true == db.ExistUserActivity(int.Parse(strYear), int.Parse(strMonth), ListDaysOfMonth, p.ProjectId, strUser))); List<string[]> lstInts = new List<string[]>(); foreach (Project p in lp) { string strInts = db.getFormattedData(int.Parse(strYear), int.Parse(strMonth), ListDaysOfMonth, p.ProjectId, strUser, null, 0); string[] ints = strInts.Split(';'); lstInts.Add(ints); products.Rows.Add(p.Name, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0); // Adds an empty row to be filed with the correct values later } int i = 0; int y = 1; int z = 0; foreach (string[] tab in lstInts) // Adds the activity data cell by cell { while (tab[z] != "") { products.Rows[i][y] = tab[z]; y++; z++; } i++; y = 1; z = 0; } var grid = new GridView(); grid.DataSource = products; grid.DataBind(); Response.ClearContent(); Response.Buffer = true; Response.AddHeader("content-disposition", "attachment; filename=Activity.xls"); Response.ContentType = "application/ms-excel"; Response.Charset = ""; StringWriter sw = new StringWriter(); HtmlTextWriter htw = new HtmlTextWriter(sw); grid.RenderControl(htw); Response.Output.Write(sw.ToString()); Response.Flush(); Response.End(); return View("Excel"); } ,我的分享扩展取决于CocoaLumberjack/Default。当我使用CocoaLumberjack/Core构建时,出现以下错误:

use_frameworks!
  

2015-10-28 10:46:04.015 ruby​​ [53095:3440989]警告:该文件   “CocoaLumberjack.framework”的引用是多个成员   团体(“产品”和“产品”);这表明情况不正常   项目。仅保留其中一个组中的成员资格   (但目标成员资格不受影响)。如果你想要一个   引用多个组中的同一文件,请添加另一个   引用相同的路径。

$ rm -rf Pods Podfile.lock; pod install
Updating local specs repositories
Analyzing dependencies
Downloading dependencies
Installing CocoaLumberjack (2.0.3)
Generating Pods project
  

PBXFileReference -   /mainGroup/children/children:displayName:CocoaLumberjack.framework,explicitFileType:wrapper.framework,includeInIndex:0,isa:PBXFileReference,name:CocoaLumberjack.framework,path:CocoaLumberjack.framework,sourceTree:BUILT_PRODUCTS_DIR,,displayName:CocoaLumberjack.framework, explicitFileType:wrapper.framework,includeInIndex:0,赛:PBXFileReference,名称:CocoaLumberjack.framework,道:CocoaLumberjack.framework,sourceTree:BUILT_PRODUCTS_DIR ,,显示名:Pods_MyProject.framework,explicitFileType:wrapper.framework,includeInIndex:0,赛:PBXFileReference ,名称:Pods_MyProject.framework,道:Pods_MyProject.framework,sourceTree:BUILT_PRODUCTS_DIR ,,显示名:Pods_MyShare.framework,explicitFileType:wrapper.framework,includeInIndex:0,赛:PBXFileReference,名称:Pods_MyShare.framework,道:Pods_MyShare.framework, sourceTree:BUILT_PRODUCTS_DIR ,,显示名:产品,赛:PBXGroup,名称:产品,sourceTree:,/产品/儿童/显示名:CocoaLumberjack.framework,explicitFileType:wrapper.framework,includeInIndex: 0,赛:PBXFileReference,名称:CocoaLumberjack.framework,路径:CocoaLumberjack.framework,sourceTree:BUILT_PRODUCTS_DIR,/产品/ CocoaLumberjack.framework

这是我的Integrating client project Sending stats Sending stats Pod installation complete! There are 2 dependencies from the Podfile and 1 total pod installed. [!] [Xcodeproj] Generated duplicate UUIDs:

Podfile

通过让我的两个目标使用相同的workspace 'MyWorkspace' xcodeproj 'MyProject/MyProject.xcodeproj' use_frameworks! source 'https://github.com/CocoaPods/Specs.git' link_with 'MyProject', 'MyShare' target :MyProject do pod 'CocoaLumberjack', '~> 2.0.1' end target :MyShare do pod 'CocoaLumberjack/Core', '~> 2.0.1' end 子规,我能够解决这个问题。我的工作CocoaLumberjack如下:

Podfile

为什么这种解决方法是必要的?当我在两个目标之间实际具有不同的子规范依赖关系时会发生什么?

修改

这看起来与CocoaPods Issue 4370有关。我在github上发布了我的示例项目。

5 个答案:

答案 0 :(得分:18)

这是Cocoapods中的一个错误 - 可能它很长时间没有被修复 -

在终端上运行export COCOAPODS_DISABLE_DETERMINISTIC_UUIDS=YES似乎暂时取消了警告。

2016年2月编辑:

在Cocoapods的最新版本中,现在已将其移至Podfile的安装部分:install! 'cocoapods', :deterministic_uuids => false

答案 1 :(得分:3)

这是由不同目录中的重复文件引起的。 有时,当您将文件移动到另一个目录时,Xcode可能会出错并重复文件。这些重复的文件是孤立的,尚未添加到Xcode项目中,因此一切正常。但是,pod install接受了Development Pods中的所有文件,包括这些孤儿。

要找到这些重复的文件,我有以下两种解决方法,

解决方案1 ​​

find . -path ./.git -prune -o -type f -exec basename {} + | sort | uniq -d

其中-path ./.git -prune -o表示查找时排除.git目录

解决方案2

  1. 将错误消息复制到名为duplicateUUIDs.txt的文本文件中
  2. 获取排序的文件名并输出重复项
grep -E '[a-zA-Z+]+\.(h|m|swift)' -o duplicateUUIDs.txt | sort | uniq -d

下一步

删除不必要的文件。

答案 2 :(得分:0)

添加应用程序扩展时遇到此错误。

我通过将我的应用目标中的platform :ios, '7.0'行重复到我的新目标来修复它。

确保两个目标使用相同的平台解决了我的问题。

答案 3 :(得分:0)

通过以下步骤为我解决的问题:(我也按照建议的@ ale0xB进行了更改)

  1. 清理项目
  2. 关闭Xcode
  3. 删除派生数据
  4. 如果您已经安装了POD,请删除“ .xcworkspace”和“ Podfile.lock”文件
  5. 再次安装吊舱
  6. 打开“ .xcworkspace”并运行

答案 4 :(得分:0)

在 podfile 中写下这一行 ==> 安装! 'cocoapods', :deterministic_uuids => false

例如: 平台:ios,'10.0' 安装! 'cocoapods', :deterministic_uuids => false

目标 'WheeboxExamSheetScanner' 做 config = use_native_modules!