IOS 정적 라 이브 러 리 패키지 프로 세 스 간소화 상세 소개
8013 단어 IOS정적 라 이브 러 리포장 하 다.
iOS 개발 에 서 는 SDK 개발 에 대한 수요 가 자주 발생 한다.개 발 된 정적 라 이브 러 리 는 수 동 으로 통합
.a
파일 을 한 다음 에 관련 헤더 파일 을 복사 한 다음 에 정적 라 이브 러 리 와 헤더 파일 을 같은 파일 에 포장 하여 SDK 사용자 에 게 보 내야 합 니 다.본 고 는 스 크 립 트 를 어떻게 사용 하 는 지 를 소개 하고 이 일련의 과정 을 간소화 할 것 이다.많은 초보 자 들 을 배려 하기 위해 서 튜 토리 얼 은 포장 의 기본 절 차 를 상세 하 게 소개 할 것 이다.정적 라 이브 러 리 와 동적 라 이브 러 리 의 차이 에 대해 나의 다른 글 을 볼 수 있다.iOS 정적 라 이브 러 리 와 프레임 워 크 차이
프로젝트 설정
정적 라 이브 러 리 프로젝트 를 새로 만 듭 니 다.
그리고
TestSDK
아래 에 있 는 플러스 버튼 을 클릭 하여 새로운 Target 을 추가 합 니 다.선택
Target
,새 것Cross-platform
,이름Aggregate
TestSDKShell
디 렉 터 리 에 새로운 Target 이 하나 더 있 는 것 을 볼 수 있 습 니 다.클릭
TARGETS
->TARGETS
->TestSDKShell
->Build Phases
->+
그리고 셸 파일 을 새로 만 듭 니 다.이름 은
New Run Script Phases
입 니 다.파일 추가
build_TestSDK_script.sh
프로젝트 는 다음 과 같 습 니 다.그리고 셸 파일 의 디 렉 터 리 를 방금 만 든
Shell
에 기록 합 니 다.인 코딩 이 끝 난 후 노출 할 헤더 파일 을 설정 하고 노출 할 헤더 파일 을 추가 합 니 다
Run Script Phases
마지막 으로 블 로그 의 마지막 셸 코드 를
Copy Files
파일 에 복사 하여 실행build_TestSDK_script.sh
하면 자동 포장 을 완성 할 수 있 습 니 다.여기 서 존재 할 수 있 는 문 제 는 스 크 립 트 가 실행 할 수 있 는 권한 이 없습니다.터미널 에서
TestSDKShell
이 있 는 디 렉 터 리 로 전환 하여 사용 하 는 것 입 니 다.build_TestSDK_script.sh
셸 파일 에 권한 을 부여 하고 다시 실행 하면 됩 니 다.운행 에 성공 하면 가방 이 다 싸 진 것 을 볼 수 있다.파일 의 이름 은 정적 라 이브 러 리 이름,날짜,Git 버 전(코드 를 제출 하지 않 았 기 때문에 Git 버 전 을 가 져 올 수 없습니다),Debug/Release 버 전 을 포함 합 니 다.절차 분석 을 간소화 하 다.
스 크 립 트 간소화 절 차 를 시작 하려 면 먼저 SDK 가 주의해 야 할 다음 과 같은 몇 가 지 를 명 확 히 해 야 합 니 다.
sudo chmod +x build_TestSDK_script.sh
arm64 armv7 armv7s
입 니 다.이 설정 은 개발 자가 Xcode 를 설정 하고 현재 삽 입 된 장 치 를 만족 시 키 는 프로세서 바 이 너 리 파일 만 컴 파일 하 는 역할 을 합 니 다.현재 삽입 장 치 는 디 버 깅 에 사용 되 고 있 는 기계 입 니 다.일상적인 개발 에 서 는 컴 파일 속 도 를 높이 기 위해 Debug 모드 에서
Build Active Architecture Only
로 설정 할 수 있 지만 Release 모드 에 서 는YES
로 설정 해 야 합 니 다.그렇지 않 으 면 온라인 파일 을 포장 하 는 데 문제 가 생 길 수 있 습 니 다.SDK 를 개발 할 때 우 리 는 모든 것 을
NO
로 설정 하면 포 장 된 파일 에 문제 가 없 을 것 이다.스 크 립 트 가 Debug 와 Relaese 모드 에 적합 하도록 합 니 다.저 희 는 Xcode 자체 설정 변수
NO
를 사용 합 니 다.포장 할 때 이 변 수 를 사용 하면 됩 니 다.포장 할 때 수정 할 게 요.여 기 는 어떤 버 전 으로 할 지 결정 할 게 요.
패키지 시 뮬 레이 터 정적 라 이브 러 리
#
xcodebuild build -project ${PROJ} \
-scheme ${LIB_STATIC_NAME} \
-configuration ${CONFIGURATION} \
-sdk iphonesimulator \
clean \
build \
CONFIGURATION_BUILD_DIR=${IPHONE_SIMULATOR_DIR}
패키지 라 이브 러 리 파일
#
xcodebuild -project ${PROJ} \
-scheme ${LIB_STATIC_NAME} \
-configuration ${CONFIGURATION} \
-sdk iphoneos \
clean \
build \
CONFIGURATION_BUILD_DIR=${IPHONE_OS_DIR}
마지막 으로 두 개의 라 이브 러 리 파일 을 합 친 것 입 니 다.
#
LIB_NAME=lib${LIB_STATIC_NAME}.a
#
lipo -create ${IPHONE_OS_DIR}/${LIB_NAME} ${IPHONE_SIMULATOR_DIR}/${LIB_NAME} -output ${TEMP_DIR}/${LIB_NAME}
lipo -info ${LIB_NAME}
이렇게 해서 기본 적 인 컴 파일 합병 작업 을 완 성 했 지만 게 으 른 프로그래머 에 게 는 아직 부족 합 니 다.그러면 저 는 머리 파일${CONFIGURATION}
파일 을 각각 복사 한 다음 에 디 렉 터 리 아래 에 놓 아야 합 니 다.그럼 스 크 립 트 를 계속 써 서 스 크 립 트 를 완성 하 세 요.
# .a
## SDK
pushd ${TEMP_DIR}
if [[ -d ${LIB_STATIC_NAME} ]]; then
rm -fR ${LIB_STATIC_NAME}
fi
mkdir -p ${LIB_STATIC_NAME}
## .a
cp -fR ${LIB_NAME} ${LIB_STATIC_NAME}
rm -fR ${LIB_NAME}
cp -f ${IPHONE_SIMULATOR_DIR}/include/${LIB_STATIC_NAME}/* ${LIB_STATIC_NAME}
같은 폴 더 에 넣 었 지만 SDK 를 사용 하 는 사용자 에 게 보 낼 때 는 압축 패 키 지 를 사용 해 야 합 니 다.압축 도 자동화 해.
# zip
PACKAGE_DATE=`date '+%Y%m%d%H'`
GIT_VERSION=`git log --abbrev-commit|head -1|cut -d' ' -f 2`
SDK_ZIP_NAME=iOS_${LIB_STATIC_NAME}_${PACKAGE_DATE}_${GIT_VERSION}_${CONFIGURATION}.zip
zip -qr ${SDK_ZIP_NAME} ${LIB_STATIC_NAME}
물론 너 도 계속 대본 을 쓸 수 있어...압축 가방 을 필요 한 사람 에 게 자동 으로 보내다.스 크 립 트 전체 코드
#!/bin/sh
# build_TestSDK_script.sh
# TestSDK
#
# Created by jianquan on 2016/11/16.
# Copyright © 2016 JoySeeDog. All rights reserved.
PROJ=${PROJECT_NAME}.xcodeproj
LIB_STATIC_NAME=TestSDK #
TEMP_DIR=~/XcodeTestTempBuild# ,
IPHONE_OS_DIR=${TEMP_DIR}/${CONFIGURATION}-iphoneos
IPHONE_SIMULATOR_DIR=${TEMP_DIR}/${CONFIGURATION}-iphonesimulator
#
if [[ ! -d ${IPHONE_OS_DIR} ]]; then
mkdir -p ${IPHONE_OS_DIR}
fi
#
if [[ ! -d ${IPHONE_SIMULATOR_DIR} ]]; then
mkdir -p ${IPHONE_SIMULATOR_DIR}
fi
#
xcodebuild -project ${PROJ} \
-scheme ${LIB_STATIC_NAME} \
-configuration ${CONFIGURATION} \
-sdk iphoneos \
clean \
build \
CONFIGURATION_BUILD_DIR=${IPHONE_OS_DIR}
# -archivePath ${IPHONE_OS_DIR}
#
xcodebuild build -project ${PROJ} \
-scheme ${LIB_STATIC_NAME} \
-configuration ${CONFIGURATION} \
-sdk iphonesimulator \
clean \
build \
CONFIGURATION_BUILD_DIR=${IPHONE_SIMULATOR_DIR}
# -archivePath ${IPHONE_SIMULATOR_DIR}
#
LIB_NAME=lib${LIB_STATIC_NAME}.a
#
lipo -create ${IPHONE_OS_DIR}/${LIB_NAME} ${IPHONE_SIMULATOR_DIR}/${LIB_NAME} -output ${TEMP_DIR}/${LIB_NAME}
lipo -info ${LIB_NAME}
# .a
## SDK
pushd ${TEMP_DIR}
if [[ -d ${LIB_STATIC_NAME} ]]; then
rm -fR ${LIB_STATIC_NAME}
fi
mkdir -p ${LIB_STATIC_NAME}
## .a
cp -fR ${LIB_NAME} ${LIB_STATIC_NAME}
rm -fR ${LIB_NAME}
cp -f ${IPHONE_SIMULATOR_DIR}/include/${LIB_STATIC_NAME}/* ${LIB_STATIC_NAME}
# zip
PACKAGE_DATE=`date '+%Y%m%d%H'`
GIT_VERSION=`git log --abbrev-commit|head -1|cut -d' ' -f 2`
SDK_ZIP_NAME=iOS_${LIB_STATIC_NAME}_${PACKAGE_DATE}_${GIT_VERSION}_${CONFIGURATION}.zip
zip -qr ${SDK_ZIP_NAME} ${LIB_STATIC_NAME}
읽 어 주 셔 서 감사합니다. 여러분 에 게 도움 이 되 기 를 바 랍 니 다.본 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
IOS에서 ReplayKit 및 RTC 사용 방법응용된 소리와 아나운서의 소리를 포함한다.이 두 가지 수요를 감안하여 우리는 스크린 공유를 하는 생방송에 필요한 미디어 흐름을 간단하게 분석할 수 있다. 만약 우리가 Audio App과 Audio Mic를 두 개의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.