정말와 의견이 맞지 않을거야 DarkDust의 대답 ,하지만 난 내 내면의 빌 클린턴 채널 수 있다면, 그것의 의미에 따라 달라 지지는 것입니다 :)
애플은 앱 스토어 앱에서이 작업을하는 것을 원하지 않지만 운영 체제는 확실히 허용합니다. 탈옥 앱은 항상이 기술을 사용합니다. 기본적으로 표준 UNIX 기술을 사용하여 프레임 워크 / 라이브러리를 동적으로 열고 그 안에있는 것들을 사용합니다. dlopen이 기능을 사용하면 전달하여 라이브러리를 열 수 있습니다 그 프레임 워크의 경로 , 또는 dylib. 탈옥 앱 빌드를위한 일부 문서에서 다음은init()
별도의 dylib 내부에 구현 된 함수 를 호출하는 예입니다 .
#include <dlfcn.h>
initWrapper() {
char *dylibPath = "/Applications/myapp.app/mydylib2.dylib";
void *libHandle = dlopen(dylibPath, RTLD_NOW);
if (libHandle != NULL) {
// This assumes your dylib’s init function is called init,
// if not change the name in "".
void (*init)() = dlsym(libHandle, "init");
if (init != NULL) {
init();
}
dlclose(libHandle);
}
}
또한 iOS 용 동적 라이브러리 프로젝트 를 빌드 할 수 없도록 허용하는 기본 제한 은 일부 XCode xml 파일을 편집하여 재정의 할 수있는 기능이있는 Xcode의 것입니다.
iOS에서 dylib 빌드 및 사용
이렇게하면 일반 iOS .dylib 라이브러리를 빌드하고 위의 샘플 코드에 따라 사용할 수 있습니다. (예, 새 XCode 버전을 설치할 때마다이 기능을 다시 잠금 해제해야합니다.)
따라서 기술적 제한이 아니라 App Store 정책 제한입니다. App Store에 국한되지 않으면 할 수 있습니다. 이 기술은 탈옥 이 필요 하지 않지만 앱이 샌드 박스 인 경우 dylib를로드 할 수있는 위치를 제한 할 수 있습니다.
편집 : 이 정보가 향후 링크 부패로 인해 손실되지 않도록하기 위해 Xcode에서 iOS dylib를 활성화하는 방법에 대해 제공 한 링크의 내용이 있습니다. ( 참고 : 이 프로세스는 여전히 Xcode 4에서 작동하지만 경로 등에 대한 업데이트는 아래 주석을 참조하십시오.) 출처는 iOS Place 블로그입니다 .
Xcode에서는 iOS 용 dylib를 빌드 할 수 없습니다. 단일 바이너리가 아닌 경우 앱이 거부됩니다. 하지만 옵션 모듈을로드하는 플러그인 아키텍처가있는 응용 프로그램이 있습니다. iOS로 완전히 이식하기 전에 개념을 증명할 빠른 프로토 타입을 원합니다. dylib가 간단히 작동 할 수 있다면 더 빠릅니다. 따라서이 게시물은 dylib를 빌드하고 사용하는 방법을 보여 주지만 App Store에서 승인되지 않습니다. (10.6.4에서 Xcode 3.2.4로 테스트 됨)
1. 속성 목록 편집기에서 다음 파일을 엽니 다. /Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specifications/MacOSX Product Types.xcspec 및 /Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specifications / iPhone 시뮬레이터 ProductTypes.xcspec
2. 제품 유형이 있는“ MacOSX Product Types.xcspec ” 에서 항목 com.apple.product-type.library.dynamic
을 찾아“ iPhone Simulator ProductTypes.xcspec ”으로 끕니다 .
3. 같은 위치에있는 “ MacOSX Package Types.xcspec ”및“ iPhone Simulator PackageTypes.xcspec ”을 엽니 다 .
4. 패키지 유형이 있는“ MacOSX Product Types.xcspec ” 에서 항목 com.apple.package-type.mach-o-dylib
을 찾아“ iPhone Simulator PackageTypes.xcspec ”으로 끕니다 .
5. " iPhoneOS.platform "에 대해 단계를 반복하고 실행 중이면 Xcode를 다시 시작합니다.
이제 dylib를 빌드 해 보겠습니다. " Cocoa Touch Static Library "템플릿으로 시작하십시오 . 프로젝트에 Foundation.framework가 포함되어야합니다. 다음은 dylib를 빌드하기 위해 템플릿 위에 변경 한 사항입니다.
1. 텍스트 편집기에서 project.pbxproj 파일 (Xcode 프로젝트 파일 번들에 있음)을 엽니 다 . 문자열“ producttype ”을 검색하고 값을 com.apple.product-type.library.dynamic
;
이제 Xcode로 프로젝트를 열고 프로젝트 -> 프로젝트 설정 편집으로 이동 하십시오.
2. dylib를 앱의 실행 파일과 동일한 디렉토리에 넣을 계획이기 때문에 “ 설치 디렉토리 ”를로 설정했습니다 @executable_path/
.
3. “ Mach-O 유형 ”이 동적 라이브러리로 설정 됨
4. " 실행 파일 확장 "을 dylib로 설정
5. “ 실행 파일 접두사 ”가 비어 있음으로 설정 됨
6. 라이브러리에 하나 또는 두 개의 간단한 메서드를 추가하고 빌드합니다.
이제 테스트 할 앱을 만듭니다. 이번에는 보기 기반 애플리케이션을 선택합니다 . UIButton과 UILabel을 연결하여 lib를 호출하고 반환 메시지를 표시합니다. 당신은 할 수 있습니다 전체 프로젝트에서는 TestApp를 다운로드 하고 그것으로 재생할 수 있습니다.