코드를 CocoaPods 라이브러리에 업로드할 때 겪은 문제 요약

3573 단어

코코아팟 제3자 인용 오류 업로드

    - ERROR | [iOS] xcodebuild: Returned an unsuccessful exit code. You can use `--verbose` for more information.
    - ERROR | xcodebuild:  /Users/isaac/Library/Developer/Xcode/DerivedData/App-fndikxwvwpulrwgjwibzdoqkkejs/Build/Products/Release-iphonesimulator/ISGCategory/ISGCategory.framework/Headers/MBProgressHUD+ISGProgress.h:10:9: error: include of non-modular header inside framework module 'ISGCategory.MBProgressHUD_ISGProgress': '/Users/isaac/Library/Developer/Xcode/DerivedData/App-fndikxwvwpulrwgjwibzdoqkkejs/Build/Products/Release-iphonesimulator/MBProgressHUD/MBProgressHUD.framework/Headers/MBProgressHUD.h' [-Werror,-Wnon-modular-include-in-framework-module]
    - NOTE  | xcodebuild:  /var/folders/5f/19hn47zd3gd3n7qz6l75hqzm0000gn/T/CocoaPods-Lint-20180508-13642-1ycastd-ISGCategory/App/main.m:3:9: fatal error: could not build module 'ISGCategory'

로컬 검사 코드 창고에 문제가 있는지
pod lib lint --allow-warnings --use-libraries

코드 창고에 문제가 있는지 원격 검출
pod spec lint --allow-warnings --use-libraries

원격 코드 인덱스 라이브러리에 스펙 제출
pod trunk push --allow-warnings --use-libraries

참고 자료


코드를 CocoaPods 라이브러리에 업로드

Pod 리소스 파일 Bundle의 올바른 읽기


방금 올린 후에 그림을 얻을 수 없다는 것을 발견하고 많은 방법을 시도하여 번들 등을 사용하였다

[UIImage imageNamed:]  //  UIImage nil

많은 자료를 찾았지만 해결되지 않았습니다. 결국 Pod 자원 파일의 정확한 Bundle 읽기에서 해결 방법을 얻었습니다. NSBundle 분류를 추가하여 그림을 얻는 데 성공했습니다.
아래 위 코드
NSBundle+ISGPodBundle.h


/**
  name, podName bundlename , 
 
 @param bundleName bundle , resource_bundles 
 @param podName pod 
 @return bundle
 */
+ (NSBundle *)bundleWithBundleName:(NSString *)bundleName
                           podName:(NSString *)podName;
NSBundle+ISGPodBundle.m

+ (NSBundle *)bundleWithBundleName:(NSString *)bundleName podName:(NSString *)podName { 
    if (bundleName == nil && podName == nil) {
        @throw @"bundleName podName ";
    }else if (bundleName == nil ) {
        bundleName = podName;
    }else if (podName == nil) {
        podName = bundleName;
    }
    
    
    if ([bundleName containsString:@".bundle"]) {
        bundleName = [bundleName componentsSeparatedByString:@".bundle"].firstObject;
    }
    // framwork 
    NSURL *associateBundleURL = [[NSBundle mainBundle] URLForResource:bundleName withExtension:@"bundle"];
    // framework 
    if (!associateBundleURL) {
        associateBundleURL = [[NSBundle mainBundle] URLForResource:@"Frameworks" withExtension:nil];
        associateBundleURL = [associateBundleURL URLByAppendingPathComponent:podName];
        associateBundleURL = [associateBundleURL URLByAppendingPathExtension:@"framework"];
        NSBundle *associateBunle = [NSBundle bundleWithURL:associateBundleURL];
        associateBundleURL = [associateBunle URLForResource:bundleName withExtension:@"bundle"];
    }
    
    NSAssert(associateBundleURL, @" bundle");
    // 
    return associateBundleURL?[NSBundle bundleWithURL:associateBundleURL]:nil;
}

그림 가져오기 방법:

    NSBundle *bundle = [NSBundle bundleWithBundleName:nil podName:@"ISGCategory"];
    
    NSString *path = [[bundle resourcePath] stringByAppendingPathComponent:icon];
    
    UIImage *img = [UIImage imageWithContentsOfFile:path];

참고 자료


Pod 리소스 파일의 올바른 Bundle 읽기

좋은 웹페이지 즐겨찾기