다른 iPhone 응용 프로그램에 포함시키고 자하는 재사용 가능한 코드 용 프레임 워크를 만들고 싶습니다. 가장 좋은 방법은 무엇입니까? 이상적으로는 빌트인 프레임 워크처럼 작동하고 앱에서 빌드 파일을 사용하지 않고 사용하게하고 싶습니다.iPhone 프레임 워크를 만들고 다른 iPhone 응용 프로그램에서 사용하는 방법
답변
나는 똑같은 생각을 해왔다. 지금까지 내가 할 수 있었던 것은 하나의 프로젝트를 내가 원하는 방식으로 만들어 다른 프로젝트를 시작하기 위해 다른 폴더에 복사하는 것입니다. 그런 다음 .xcodeproj 파일의 이름을 바꾸고 엽니 다. 그런 다음 새 앱을 만들기 전에 기본 사항 (아이콘, default.png, 대상, 실행 파일)을 사용자 정의합니다.
코드가 재사용되는 방식과 같이 깔끔하지는 않습니다. 더 나은 해결책이있을 것이라고 확신합니다. 어쩌면 소스 코드 관리/버전 제어를 영리하게 사용할 수 있습니까? 어쩌면 XCode에 내장 된 것이 있을까요? 다른 아이디어? 나는 여기에 더 많은 게시물을 보길 고대한다.
Apple은 iPhone에서 사용자 정의 프레임 워크의 사용을 금지합니다. 그러나 좋은 오래된 정적 라이브러리를 사용할 수 있습니다. 3.0 GM SDK에는 거기에 대한 프로젝트 템플릿도 있지만 정적 라이브러리 대상을 직접 설정할 수도 있습니다.
@Nikolai Ruhe - Apple은 iPhone에서 사용자 정의 프레임 워크를 사용하는 것을 정확히 어디에 금지 시켰습니까? iOS Developer Program License Agreement과 App Store Review Guidelines을 모두 읽었으며 그러한 금지에 대한 언급을 찾을 수 없습니다.
왜 애플이 커스텀 스태틱 라이브러리를 사용할 수 있는지, 그리고 커스텀 프레임 워크의 사용을 금지하고 있습니다. 아마도 다른 법적 문서가 누락 된 것입니까?
어쩌면 인터페이스 빌더에 iphone-plugins를 생성하는 것이 어렵거나 불가능한 것처럼 기술적 인 예술 일 수도 있습니다. – hfossli
런타임시 iOS 실행 파일에 연결할 수있는 코드가 없습니다. 이것이 dylib, 프레임 워크 및 플러그인에서 발생합니다. 정적 아카이브는 컴파일 타임에 링크됩니다. 이것은 아마도 앱이 비열하고 SDK 용어를 위반하거나 실수로 악용되어 사용자의 데이터를 위험에 빠뜨리지 않도록하기 위해 수행됩니다. 예를 들어, 주소록과 같습니다. –
"참고 : iOS에서는 사용자 정의 프레임 워크 생성이 지원되지 않습니다." http://developer.apple.com/library/ios/#documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1 –
저는 장치 및 시뮬레이터에서 모두 작동하는 범용 iOS 프레임 워크를 작성할 수있는 Xcode 4 템플릿을 만들었습니다.
템플릿이 설치되면 새 프로젝트를 만들 때 "정적 iOS 프레임 워크"만 선택하면됩니다. 나머지는 자동으로 선택합니다. 또한 단위 테스트와 함께 작동합니다.
아주 좋습니다. 공유해 주셔서 감사합니다! –
이 링크를 참조, 당신은 절대적으로 프레임 워크를 생성하고 사용할 수 있습니다. 왜 프로그램을 구조화하면 애플이 앱을 거부할까요? see this link
프레임 워크는 코드의 구조적인 구성에 불과합니다. 직접적인 접근 방식은 없습니다. 그러나 번들과 목표물을 사용하여 달성 할 수 있습니다. 프로젝트에 새 번들을 추가하고 다음 Base SDK를 실행합니다. 최신 iOS (iOS X.X) (X.X에는 컴퓨터에 설치된 최신 iOS SDK의 번호가 표시됩니다). 아키텍처 : $ (ARCHS_STANDARD_32_BIT) armv6 ("armv6"이전의 공간을 포함하여이 값이 정확하게 중요합니다.)이 설정은 Xcode 4.2에 유효합니다. 이전 버전을 사용하는 경우 "Standard (armv6 armv7)" 선택권. (이 속성의 값은 항목의 값에 따라 다르므로 먼저 설정하십시오). 활성 아키텍처 만 빌드 : 아니요 (그렇지 않으면 armv6과 armv7을 동시에 컴파일 할 수 없음). 유효한 아키텍처 : $ (ARCHS_STANDARD_32_BIT) (정확하게이 값이되는 것이 중요합니다). Xcode에서 armv6 및 armv7을 사용하여 두 줄을 표시하는 경우 삭제 한 다음 한 줄에이 값을 삽입하십시오. Dead Code Stripping : NO. 표준 라이브러리와 연결 : 아니요. Mach-O 유형 : 재배치 가능한 객체 파일. 이것이 가장 중요한 변화입니다. 여기서는 컴파일러에게 Bundle을 relocatable 파일로 처리하도록 지시합니다. 이렇게하면 래퍼 설정이있는 프레임 워크로 바뀔 수 있습니다. 기타 링커 플래그 :이 설정은 필수는 아니지만 모든 종류의 C++ 코드 (.cpp 또는 .cpp)를 사용할 계획이라면.mm)이 프레임 워크에서 Chris Moore (의견에)는 "-lstdC++"옵션을 사용하라고 조언합니다. 이 경우 오래된 컴파일러의 충돌을 피하기 위해 "-ObjC"도 사용하는 것이 좋습니다. 래퍼 확장 : 프레임 워크. 여기에서 번들을 프레임 워크로 변경합니다. Xcode에서 프레임 워크는 하나 이상의 컴파일 된 이진 소스, 리소스 및 일부 폴더가있는 .framework 확장자를 가진 폴더이며 일반적으로 헤더라고하는 폴더에는 모든 공용 헤더가 포함됩니다. 디버그 기호 생성 : 아니요 (매우 중요한 설정입니다. 그렇지 않으면 프레임 워크가 다른 컴퓨터/프로필에서 작동하지 않습니다). 접두어 머리글 사전 컴파일 : 아니요.
는 aggrigated 대상을 생성하고 실행 스크립트에
# Sets the target folders and the final framework product.
FMK_NAME=FI
FMK_VERSION=A
# Install dir will be the final output to the framework.
# The following line create it in the root folder of the current project.
INSTALL_DIR=${SRCROOT}/Products/${FMK_NAME}.framework
# Working dir will be deleted after the framework creation.
WRK_DIR=build
DEVICE_DIR=${WRK_DIR}/Release-iphoneos/${FMK_NAME}.framework
SIMULATOR_DIR=${WRK_DIR}/Release-iphonesimulator/${FMK_NAME}.framework
# Building both architectures.
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphoneos
xcodebuild -configuration "Release" -target "${FMK_NAME}" -sdk iphonesimulator
# Cleaning the oldest.
if [ -d "${INSTALL_DIR}" ]
then
rm -rf "${INSTALL_DIR}"
fi
# Creates and renews the final product folder.
mkdir -p "${INSTALL_DIR}"
mkdir -p "${INSTALL_DIR}/Versions"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources"
mkdir -p "${INSTALL_DIR}/Versions/${FMK_VERSION}/Headers"
# Creates the internal links.
# It MUST uses relative path, otherwise will not work when the folder is copied/moved.
ln -s "${FMK_VERSION}" "${INSTALL_DIR}/Versions/Current"
ln -s "Versions/Current/Headers" "${INSTALL_DIR}/Headers"
ln -s "Versions/Current/Resources" "${INSTALL_DIR}/Resources"
ln -s "Versions/Current/${FMK_NAME}" "${INSTALL_DIR}/${FMK_NAME}"
# Copies the headers and resources files to the final product folder.
cp -R "${DEVICE_DIR}/Headers/" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Headers/"
cp -R "${DEVICE_DIR}/" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/"
# Removes the binary and header from the resources folder.
rm -r "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/Headers" "${INSTALL_DIR}/Versions/${FMK_VERSION}/Resources/${FMK_NAME}"
# Uses the Lipo Tool to merge both binary files (i386 + armv6/armv7) into one Universal final product.
lipo -create "${DEVICE_DIR}/${FMK_NAME}" "${SIMULATOR_DIR}/${FMK_NAME}" -output "${INSTALL_DIR}/Versions/${FMK_VERSION}/${FMK_NAME}"
rm -r "${WRK_DIR}"
이 복사 프레임 워크를 아래
귀하의 웹 사이트로가는 스팸 링크를 막으십시오. –
@AndrewBarber 내 웹 사이트라고 생각합니까? 방금 질문에 대답한다면? 그게 내 웹 사이트라면 훨씬 더 행복 할거야 :) –
이 사이트에 답변의 유용한 점을 게시하거나 게시 위험이 [ "답변이 없음"]으로 삭제된다는 점에 유의하십시오 (http : //meta.stackexchange.com/q/8259). 원하는 경우 링크를 포함 할 수 있지만 '참조'로만 사용하십시오. 대답은 링크가 필요없이 독자적으로 서 있어야합니다. –
- 1. iPhone 응용 프로그램에서 Core Midi 프레임 워크를 사용하는 방법은 무엇입니까?
- 2. Zend 프레임 워크를 사용하는 iPhone 웹 서비스
- 3. iPhone 응용 프로그램에서 보안 프레임 워크를 사용하여 CSR을 생성합니까?
- 4. 웹 응용 프로그램에서 jQuery와 Spry 프레임 워크를 모두 사용하는 방법
- 5. iPhone 응용 프로그램에서 NSDayCalendarUnit을 사용하는 방법
- 6. iPhone 응용 프로그램에서 Facebook 채팅을 통합하는 방법
- 7. iPhone 프로젝트에 mailcore 프레임 워크를 추가하는 방법
- 8. iPhone OpenCV 및 AVFoundation 프레임 워크를 사용하는 실시간 이미지 처리?
- 9. iPad 응용 프로그램에서 iPhone 크기보기를 표시하는 방법
- 10. iPhone 응용 프로그램에서 FLAC을 사용하는 방법은 무엇입니까?
- 11. iPhone 응용 프로그램에서 약한 링크를 어떻게 사용합니까?
- 12. iphone 응용 프로그램에서 PDF 편집
- 13. iPhone 응용 프로그램에서 스피커와 헤드폰을 전환하는 방법
- 14. iPhone 응용 프로그램에서 Geolocalisation
- 15. 다른 응용 프로그램에서 iphone 주소록을 불러 오시겠습니까?
- 16. coreLocation 프레임 워크를 사용하지 않는 iphone 위치
- 17. iPhone 응용 프로그램에서 SIP 사용
- 18. iPhone 응용 프로그램에서 Google지도 사용
- 19. iPhone 응용 프로그램에서 tabbar를 "재설정"하는 방법
- 20. 응용 프로그램에서 iphone 용 와이파이 켜기/끄기
- 21. iPhone 응용 프로그램에서 .svc 웹 서비스 파일을 사용하는 방법
- 22. 내 iPhone 응용 프로그램에서 FUTURA-Bold 글꼴을 사용하는 방법
- 23. iphone 응용 프로그램에서 배경 이미지를 사용하는 가장 효과적인 방법
- 24. 스프링 보드라는 프레임 워크를 사용하는 방법
- 25. 웹킷 프레임 워크 iphone
- 26. RegexKitLite 프레임 워크를 추가하는 방법?
- 27. iPhone 응용 프로그램에서 텍스트를 끌기
- 28. 다른 기본 iPhone 응용 프로그램에서 기본 iPhone 응용 프로그램을 호출하는 방법
- 29. iPhone 응용 프로그램에서 webservice 호출하는 방법
- 30. iPhone 응용 프로그램에서 텍스트를 다시 쓰는 방법
참조 마이클의 답변을 얻을 수있는 aggrigate 목표를 실행합니다. 프레임 워크를 만드는 것이 가능합니다. 약간의 수동 접근 만 있으면됩니다. – DougW