Cocoapods 사유화 구덩이 밟기
다양한 파일 경로 오류
- ERROR | [iOS] file patterns: The `vendored_libraries` pattern did not match any file.
- ERROR | [iOS] file patterns: The `vendored_frameworks` pattern did not match any file.
- ERROR | [iOS] file patterns: The `resources` pattern did not match any file.
...
podspec
내 파일 경로가 올바른지 확인합니다.파일 경로에 대한 지침을 기억하십시오.
라이브러리 경로 (온라인git 라이브러리일 수도 있고 로컬git 라이브러리일 수도 있음) + 지정한 경로 = 찾으려는 파일 경로라면 문제없습니다.예를 들어 내 라이브러리 경로는:git=>'/Users/myUserName/Documents/XXSDK'이고 내가 지정한 s.source_files ='XXSDK/Classes/*/*/*', 두 개의 연결이 바로 나의 각종 원본 파일의 경로이다.
Source: The version should be included in the Git tag.
s.version
가 s.source
에 대응하는 tag
과 동일한지 확인합니다.이 방법을 사용하는 것이 좋습니다.
s.version = "0.1.0"
s.source = { :git => "http://gitlab...git", :tag => s.version.to_s }
바이너리 파일 내 Warning 실패
- WARN | source: Git SSH URLs will NOT work for people behind firewalls configured to only allow HTTP, therefore HTTPS is preferred.
추가
--allow-warnings
매개변수오류가 있는데 구체적인 정보가 없어요.
- ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
일부 비문법 오류는 오류의 원인을 제시하지 않습니다. 이때
--verbose
파라미터를 추가하여 오류의 상세한 정보를 볼 수 있습니다.정적 의존 오류
- ERROR | [iOS] Encountered an unknown error (The 'Pods' target has transitive dependencies that include static binaries: (Path) during validation.
이 오류는 의존 라이브러리
s.dependency
에 정적 라이브러리가 포함되어 있기 때문이다.이것은 .a
의 사용에 영향을 주지 않지만 검증은 통과할 수 없다.Pod
를 통해 검증을 통과할 수 있다.개인 창고를 찾을 수 없습니다.
[iOS] unknown: Encountered an unknown error (Unable to find a specification for `BBBPrivateSDK` depended upon by `AAAPrivateASDK`
--use-libraries
파일에는 다음과 같은 개인 저장소 종속성이 지정되어 있습니다.s.dependency 'BBBPrivateSDK'
podspec
및 pod lib lint
매개 변수를 추가해야 합니다.예:
pod lib lint --sources=http://xxx/xxxPrivateSpecs.git, https://github.com/CocoaPods/Specs.git
.a 파일 이름은lib로 시작해야 합니다
- ERROR | [iOS] file patterns: The `vendored_libraries` pattern did not match any file.
혹은
library not found for XXX
이런 상황은 대부분 정적 라이브러리의 이름에 문제가 생겼기 때문이다.정적 라이브러리를 불러올 때
pod repo push
라이브러리 이름과 접두사 --sources
가 있는 파일을 찾습니다.예를 들어, 라이브러리 이름이 Xcode
, lib
이면 XXX.a
라이브러리를 로드할 때 실패합니다.Undefined symbols for architecture i386 / x86_64 ...
Xcode
프레임워크:"_OBJC_CLASS_$_CTTelephonyNetworkInfo", referenced from:
xxxx
"std::__1::__basic_string_common::__throw_length_error() const", referenced from:
xxxx
libXXX.a
:"_OBJC_CLASS_$_AFHTTPResponseSerializer", referenced from:
xxxx
구체적으로 어떤 의존이 부족하면 SDK 개발 문서를 보거나 원본 코드를 보거나 잘못된 정보에 따라 인터넷에서 검색할 수 있다.
Undefined symbols for architecture i386:
"_varB", referenced from:
+[AAAObject methodAAA:] in AAAPrivateASDK(AAAObject.o)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
가능한 한 공급자가 보충하도록 해야 한다.
절충 방법은
CoreTelephony
을 추가하여pod가 가져올 수 있는지 확인하는 단계를 건너뛸 수 있습니다.pod lib lint 문제 없음, 프로젝트 내pod install 이후 컴파일 Undefined symbols for architecture i386 / x86_64 ...
Objective-C와 Swift 혼성 프로젝트의 경우, Podfile에use_를 추가해야 합니다.framework! 키워드이런 상황에서 원본 코드와 정적 라이브러리가 혼합되어 포장하면 문제가 생길 수 있다.(현재
AFNetworking
1.6.1 버전)동적 라이브러리와 정적 라이브러리 간의 의존 문제, 참조: 구성 요소화 - 동적 라이브러리 실전
해결 방법은podspec에 추가하는 것입니다.
s.static_framework = true #
s.user_target_xcconfig = {'OTHER_LDFLAGS' => '-ObjC'} # Objective-C
관련 문서: static_framework
push 새 버전pod스펙 리포 후 2차 수정 발견
--skip-import-validation
의 새로운 수정 정보;cocoapods
이 버전에 대응하는 commit
삭제;tag -d
;tag
수정된 tag
을 제출한다.참고: GitLab에 이미 존재하는
git push --tags -f
은 tag
동기화 명령을 통해 삭제할 수 없으며, 웹 페이지에 로그인하여 조작해야 합니다.2차 수정 제출 전 프로젝트
tag
가 이미 제출된 경우, 로컬 캐시를 정리한 후git push --tags -f
가 필요합니다.로컬
pod install / update
캐시를 지우려면pod install / update
에 대응하는 원본 코드를 삭제한다.pod
입력~/Library/Caches/Cocoapods
삭제를 확인합니다.find ~/Library/Caches/Cocoapods -name "DemoSDK" | xargs -n1 -p rm -rf
파일 삭제;y/n
디렉터리에 대응하는 원본 코드를 삭제합니다.개인 창고가 만들어졌습니다.pod 인용 후 파일 등급 관계가 분실되었습니다
Podfile.lock
디렉터리 보존 경로 설정: spec.header_mappings_dir = 'XXXSDK/Classes/**'
관련 문서: header_mappings_dir
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.