iOS 응용 모듈 화 된 사고 및 착지 방안 (2) 모듈 화 자동 구축 도구 사용

1.0 iOS 모듈 화의 문제점
앞에서 모듈 화 된 절차 와 흔히 볼 수 있 는 문 제 를 소 개 했 으 니 여기 서 다시 한 번 정리 하 겠 습 니 다.
업무 중 에 우리 가 새로운 프로젝트 를 시작 할 때 가장 먼저 고려 하 는 것 은 모듈 화 작업 이다.
모듈 화 작업 의 생각 은 매우 아름 답지 만 집행 과정 에서 많은 문제 에 부 딪 힐 수 있 고 이런 문제 들 은 우리 로 하여 금 업무 수행 에 어려움 을 겪 게 할 수 있다.
  • 도구 사용 문제.iOS 의 모듈 화 는 일반적으로 cocoapods 도 구 를 사용 합 니 다. 이 도 구 는 매우 강력 하고 내용 도 풍부 합 니 다. 우 리 는 모듈 화 작업 을 완성 하려 면 개인 라 이브 러 리 를 만 들 고 podspec 파일 을 작성 하 며 자원 을 처리 하고 Podfile 파일 을 작성 하 며 로 컬 의존 도 를 구축 해 야 합 니 다.팀 원 모두 가 이 도구 에 정통 하 게 하 는 것 은 불필요 하 다.그래서 도 구 를 사용 하 는 과정 에서 해결 하기 어 려 운 문제 에 부 딪 혀 많은 시간 을 낭비 하 는 경우 가 많다.
  • xcode 설정 문제.xcode 설정 항목 이 소 털 처럼 많 고 많은 내용 이 직관 적 이지 않 으 므 로 우리 가 공식 문 서 를 찾 아 해결 해 야 합 니 다.그리고 이런 설정 의 수량 이 많 고 사용 하 는 빈도 가 적 기 때문에 이런 상황 이 발생 할 수 밖 에 없다. 모든 사람 이 겪 는 문 제 를 각자 시간 을 들 여 해결 한 다음 에 시간 이 지나 면 똑 같은 문 제 를 만나면 잊 어 버 리 고 시간 을 들 여 찾 아 해결 해 야 하기 때문에 자원 의 중복 낭 비 를 초래 해 야 한다.
  • 모듈 간 의존 문제 도 ( ) 에 의존 할 때 개발 과정 에서 여러 모듈 을 동시에 수정 해 야 여러 공정 에서 전환 하 는 문제 가 발생 할 수 있 습 니 다.
  • 규범 문 제 는 모든 사람 이 모듈 을 구축 하 는 방식 이 다 를 수 있 는데 공사 구조, 공사 설정 등 을 포함한다.이렇게 되면 서로 다른 모듈 의 차이 가 매우 클 수 있 고 크로스 모듈 개발 이나 코드 가 인수 인계 할 때 해결 하기 어 려 운 문제 가 발생 할 수 있다.
  • 설정 의 변경 수정 은 모두 수 동 으로 수정 되 는데 가끔 은 소홀 해서 발견 하기 어 려 운 오류 가 발생 할 수 있 고 처리 해 야 할 모듈 과 의존 이 많 을 때 오류 가 발생 할 확률 도 높아진다.

  • 2.0 자동화 도구 작성
    이러한 문 제 를 해결 하기 위해 팀 이 업무 개발 에 집중 할 수 있 도록 bash 셸 을 사용 하여 구축 도 구 를 개발 하여 모듈 화 과정 에서 발생 하 는 설정 과 도구 사용 문 제 를 자동화 처리 하 는 데 사용 합 니 다.
    도구 의 주 소 는 다음 과 같 습 니 다.https://github.com/hardman/AWModularization
    이 자동화 도 구 를 사용 하면 다음 과 같은 능력 을 얻 을 수 있 습 니 다.
  • 하나의 명령 으로 모듈 프로젝트 를 만 들 수 있 습 니 다. podspec 및 Podfile 파일 을 만 들 고 의존 도 를 자동 으로 설치 합 니 다. 프로젝트 는 기본적으로 정적 라 이브 러 리 를 사용 하고 Swift 와 OC
  • 를 지원 합 니 다.
  • 하나의 명령 으로 이전에 개 발 된 모듈 을 끌 어 올 리 고 모든 의존 도 를 설치 할 수 있다
  • 하나의 명령 으로 자동 으로 tag 를 하고. podspec 파일 을 자동 으로 업데이트 하여 pod 서버
  • 로 공 사 를 전송 할 수 있 습 니 다.
  • 자체 모듈 의 목록 은 단독 git 라 이브 러 리 에 저장 되 어 모듈 에 의존 할 때 동적 으로 불 러 올 수 있 습 니 다
  • 자체 모듈 의 의존 도 는. podspec 파일 을 통 해 local path 로 설치 되 어 있 습 니 다. 의존 하 는 모듈 도 수정 이 필요 할 때 여러 프로젝트 를 열지 않 아 도 됩 니 다
  • 따라서 이 자동화 도 구 를 사용 하면 cocoapods 도 구 를 이해 할 필요 도 없고 그 어떠한 공사 와 도구 설정 도 처리 할 필요 도 없 으 며 업무 개발 에 집중 할 수 있 습 니 다.
    [주] 도 구 는 정적 라 이브 러 리 를 모듈 의 출력 파일 로 사용 합 니 다.
    3.0 도구 사용
    3.1 기본 사용 절차
  • 로 컬 디 렉 터 리 에 프로젝트 클론
  • 설정 파일 수정 열기 tools/config
  • modulelistgitaddress. txt: git 라 이브 러 리 를 새로 만 들 고 주 소 를 이 파일 에 저장 합 니 다. 주 소 는 git@ 로 시작 하 는 것 이 좋 습 니 다.이 git 라 이브 러 리 는 모든 자체 모듈 이름과 주 소 를 저장 하 는 데 사 용 됩 니 다.
  • podspecsadr. txt: git 라 이브 러 리 를 새로 만 들 고 주 소 를 이 파일 에 저장 합 니 다. 주 소 는 git@ 시작 하 는 것 이 좋 습 니 다.이 git 라 이브 러 리 가 바로 당신 의 개인 라 이브 러 리 주소 입 니 다.
  • podspectsname. txt: git 라 이브 러 리 의 이름 을 지어 이 파일 에 저장 합 니 다
  • 상기 3 개 파일 은 모두 한 줄
  • 만 있다.
  • dependencypodrepos. txt: 이 파일 은 app 이 의존 하 는 다른 pod repos 을 저장 합 니 다. 일반적인 상황 에서 기본 값 을 유지 하면 됩 니 다. 여러 줄 을 지원 합 니 다. 줄 마다 주 소 를 저장 합 니 다
  • 이 설정 들 은 거의 수정 되 지 않 기 때문에 이 파일 들 을 git 라 이브 러 리 에 제출 하 는 것 을 고려 합 니 다
  • 집행 ./create.sh -n=[ ] -b=[bundle id] -t=[s|f|r] 하면 공 사 를 만 들 수 있다.
  • 스 크 립 트 실행 과정 에서 일부 공정 기본 정보 와 의존 하 는 모듈 을 입력 하 라 고 요구 할 수 있 습 니 다. 누락 되 지 않도록 진지 하 게 입력 하 십시오
  • 생 성 된 프로젝트 는 자동 으로 열 리 고 직접 실행 할 수 있 습 니 다
  • 만 든 모듈 파일 은: /modules 에 있 습 니 다.
  • 예: ./create.sh -n=HelloWorld -b=com.helloworld -t=s
  • 모듈 개발 이 끝나 면 코드 를 develop 분기 에 제출 한 다음 에 실행 해 야 합 니 다 ./push.sh [ ] [tag]
  • push. sh 를 실행 할 때 모듈 은 develop 분기 에 있어 야 합 니 다
  • 실행 에 성공 하면 모듈 이 제출 되 었 습 니 다. Podfile 파일 로 참조 할 수 있 습 니 다
  • 예: ./push.sh HelloWorld 0.0.1
  • 사용 ./pull.sh [ ] 하면 로 컬 에 동기 화 되 지 않 은 다른 자체 모듈 을 다운로드 할 수 있 습 니 다.
  • 실행 에 성공 하면 모든 의존 모듈 을 자동 으로 다운로드 하고 local path 를 통 해 모듈 의존 에 추가 합 니 다
  • 예: ./pull.sh HelloWorld

  • 3.2 모듈 이 다른 모듈 에 의존 하 는 버 전 번 호 를 어떻게 향상 시 킵 니까?
    현재 모듈 이 의존 하 는 모듈 버 전이 업그레이드 되 었 을 때 현재 모듈 의 의존 파일 을 수정 해 야 합 니 다.두 가지 방법 이 있다.
  • 파일 직접 수정
  • 수정 해 야 할 파일 은 2 개 입 니 다. 하 나 는 파일 루트 디 렉 터 리 dependency.txt 파일 입 니 다. 파일 에는 현재 모듈 이 의존 하 는 파일 이 기록 되 어 있 습 니 다.
  • dependency.txt 파일 기록 모듈 버 전의 형식 은 줄 마다 모듈 입 니 다.형식: @@ , 버 전 번호 지원 ~> 접두사, 빈 칸 없 음
  • 다른 파일 은 .podspec 파일
  • podspec 파일 이 요구 하 는 형식 에 따라 버 전 번 호 를 수정 합 니 다
  • 스 크 립 트 수정 사용
  • 명령 집행: ./utils.sh [ ] upgradedependency [ ] [ ]
  • 그 중 버 전 번 호 는 비어 있 을 수 있 습 니 다
  • 예: ./utils.sh LoginModule upgradedependency AFNetworking 3.5.0
  • 예: ./utils.sh LoginModule upgradedependency AFNetworking
  • 버 전 번 호 는 영문 문 자 를 지원 합 니 다: a. b. c
  • 3.3 모듈 프로젝트 에서 Swift & OC 혼합 을 어떻게 사용 합 니까?
  • module 프로젝트 에서 OC 의 클래스 파일 과 swift 파일 을 만 듭 니 다. OC 클래스 가 TestOC 라 고 가정 하고 swift 클래스 는 TestSwift
  • 입 니 다.
  • OC 가 Swift 류 에 접근 할 수 있 도록
  • TestOC. m 에 import 만 추가 하면 됩 니 다.예: #import " / -Swift.h".
  • 또한 주의해 야 할 것 은 TestSwift 류 는 반드시 Public 이 고 NSObject 에서 계승 해 야 한 다 는 것 이다.

  • Swift 가 OC 클래스 에 접근 할 수 있 도록
  • [모듈 이름]. h 이 파일 에 헤더 파일 을 도입 합 니 다.예: #import "TestOC.h".
  • xcode - build phases - [ ].h 파일 은 Public 구역
  • 에 있어 야 합 니 다.

    3.4 모듈 자원 파일 가 져 오기
  • 모듈 이 정적 라 이브 러 리 이기 때문에 최종 적 으로 app 에 실 행 된 후에 모든 모듈 의 자원 파일 (.xcassets, .xib, .png, .jpg, .jpeg, .gif, .txt, .plist, .bundle, .zip, .car) 은 다음 과 같 습 니 다. " .bundle" 파일 에 있 습 니 다. 이 bundle 은 main bundle 의 루트 디 렉 터 리 (이것 도 모듈 이름 이 이름 을 바 꾸 지 않도록 요구 하 는 이유 중 하나 입 니 다)
  • 그림 을 얻 기 위해 사용 할 수 있 는 UIImage.init(named: name, in: bundle, compatibleWith: nil) 방법
  • 다른 파일 을 가 져 오 려 면 bundle 을 지정 해 야 합 니 다
  • 개발 과정 에서 모든 자원 을 얻 으 려 면 bundle 이 필요 하 며 유사 한 UIImage.init(named:String) 방법 을 직접 사용 할 수 없습니다. 모듈 공학 내부 의 코드 라 도 안 됩 니 다
  • 주의해 야 할 것 은 정적 라 이브 러 리 의 유닛 테스트 target 은 자원 을 얻 을 수 없다 는 것 이다
  • .
    3.5 주의사항
  • 모듈 명 은 중복 을 방지 해 야 한다. 같은 사유 라 이브 러 리 의 중복 을 방지 해 야 할 뿐만 아니 라 다른 pod repo 내 모듈 과 중복 되 는 것 도 방지 해 야 한다
  • 의존 라 이브 러 리 는 순환 의존 을 발생 시 킬 수 없다. 예 를 들 어 A 의존 B, B 의존 C, C 의존 A
  • 각 모듈 은 하나의 develop 분기 가 있 고 develop 분기 의 코드 는 항상 최신 tag 와 일치 합 니 다.push 명령 을 실행 할 때 코드 는 항상 develop 분기 에 있 습 니 다
  • 개발 기간 (통합 테스트 전) 은 항상 로 컬 모듈 에 의존 하고 매번 통합 테스트 전에 push. sh 스 크 립 트
  • 를 실행 합 니 다.
  • 현재 개발 모듈 이 수정 되 고 의존 하 는 모듈 도 수정 되면 현재 모듈 이 의존 하 는 모듈 을 먼저 push 하고 마지막 으로 push 현재 모듈 을 사용 해 야 합 니 다.이 때 모듈 이 의존 하 는 모듈 의 버 전 번호 ./utils.sh [ ] upgradedependency [ ] [ ] 를 수정 하 라 는 명령 을 사용 해 야 할 수도 있 습 니 다.
    – 끝 -
  • iOS 응용 모듈 화 된 사고 및 착지 방안 (1) 모듈 의 구분 및 모듈 화 작업 절차
  • iOS 응용 모듈 화 된 사고 와 착지 방안 (2) 모듈 화 자동 구축 도구 의 사용
  • 좋은 웹페이지 즐겨찾기