Tôi không thực sự không đồng ý với câu trả lời của DarkDust , nhưng nếu tôi có thể chuyển tải nội tâm của tôi về Bill Clinton, điều đó phụ thuộc vào ý nghĩa của việc ủng hộ là gì :)
Apple không muốn bạn làm điều này cho các ứng dụng trên App Store, nhưng hệ điều hành chắc chắn cho phép. Ứng dụng bẻ khóa sử dụng kỹ thuật này mọi lúc. Về cơ bản, bạn sử dụng một kỹ thuật UNIX tiêu chuẩn để mở động một khuôn khổ / thư viện và sau đó sử dụng những thứ trong đó. Hàm dlopen cho phép bạn mở thư viện bằng cách chuyển đường dẫn đến khung công tác đó , hoặc dylib. Từ một số tài liệu để xây dựng ứng dụng bẻ khóa , đây là ví dụ về cách gọi một init()
hàm được triển khai bên trong dylib riêng của bạn:
#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);
}
}
Hơn nữa, hạn chế mặc định chống lại việc cho phép bạn xây dựng một dự án thư viện động cho iOS là thứ trong Xcode mà bạn có thể ghi đè bằng cách chỉnh sửa một số tệp xml XCode:
Xây dựng và sử dụng dylib trên iOS
Sau khi làm điều này, bạn có thể tạo một iOS bình thường thư viện .dylib và sử dụng nó theo mã mẫu ở trên. (có, bạn có thể sẽ phải mở khóa lại khả năng này bất cứ khi nào bạn cài đặt phiên bản XCode mới).
Vì vậy, đó không phải là giới hạn kỹ thuật mà là giới hạn chính sách của App Store. Nếu bạn không bị giới hạn trong App Store, thì bạn có thể làm điều đó. Lưu ý rằng kỹ thuật này không yêu cầu bẻ khóa, mặc dù nếu ứng dụng được hộp cát, nó có thể hạn chế bẻ khóa nơi có thể tải dylibs.
Chỉnh sửa: để đảm bảo thông tin này không bị mất liên kết trong tương lai, đây là nội dung liên kết mà tôi đã cung cấp về cách bật iOS dylibs trong Xcode. ( Lưu ý: quá trình này vẫn hoạt động trên Xcode 4, nhưng hãy xem (các) nhận xét bên dưới để biết các cập nhật cho đường dẫn, v.v.) Nguồn là blog iOS Place :
Xcode không cho phép bạn tạo dylib cho iOS. Ứng dụng sẽ bị từ chối nếu nó không phải là tệp nhị phân duy nhất. Nhưng tôi có một ứng dụng có kiến trúc trình cắm thêm để tải các mô-đun tùy chọn. Tôi chỉ muốn có một nguyên mẫu nhanh chóng để chứng minh khái niệm trước khi chuyển hoàn toàn nó sang iOS. Sẽ nhanh hơn nếu dylib có thể hoạt động. Vì vậy, bài đăng này hướng dẫn cách xây dựng và sử dụng dylib nhưng lưu ý rằng nó sẽ không được chấp thuận cho App Store. (Đã kiểm tra với Xcode 3.2.4 trên 10.6.4)
1. Mở các tệp này trong Trình chỉnh sửa danh sách thuộc tính: /Developer/Platforms/MacOSX.platform/Developer/Library/Xcode/Specilities/MacOSX Product Types.xcspec và /Developer/Platforms/iPhoneSimulator.platform/Developer/Library/Xcode/Specilities / iPhone Simulator ProductTypes.xcspec
2. Tìm mục trong “ MacOSX Product Types.xcspec ” có loại sản phẩm com.apple.product-type.library.dynamic
và kéo nó vào “ iPhone Simulator ProductTypes.xcspec ”.
3. Mở “ MacOSX Package Types.xcspec ” và “ iPhone Simulator PackageTypes.xcspec ” được tìm thấy ở cùng một vị trí.
4. Tìm mục trong “ MacOSX Product Types.xcspec ” có loại gói com.apple.package-type.mach-o-dylib
và kéo nó vào “ iPhone Simulator PackageTypes.xcspec ”.
5. Lặp lại các bước cho “ iPhoneOS.platform ” và khởi chạy lại Xcode nếu nó đang chạy.
Bây giờ, hãy xây dựng một dylib. Bắt đầu với Mẫu “ Thư viện tĩnh cảm ứng ca cao ”. Điều đó nên bao gồm Foundation.framework trong dự án. Đây là những thay đổi tôi đã thực hiện trên đầu mẫu để xây dựng dylib.
1. Mở tệp project.pbxproj (được tìm thấy bên trong gói tệp dự án Xcode) trong Trình soạn thảo văn bản. Tìm kiếm chuỗi “ producttype ”, thay đổi giá trị của nó thành com.apple.product-type.library.dynamic
;
Bây giờ, mở dự án bằng Xcode, đi tới Dự án-> Chỉnh sửa Cài đặt Dự án
2. “ Thư mục cài đặt ” được đặt thành@executable_path/
vì tôi định đặt dylib trong cùng thư mục với tệp thực thi của ứng dụng.
3. “ Loại Mach-O ” được đặt thành Thư viện động
4. “ Phần mở rộng có thể thực thi ” được đặt thành dylib
5. “ Tiền tố thực thi ” được đặt thành trống
6. Thêm một hoặc hai phương thức đơn giản vào thư viện và xây dựng nó.
Bây giờ, hãy tạo một ứng dụng để kiểm tra nó. Lần này, tôi chọn Ứng dụng dựa trên chế độ xem . Kết nối UIButton và UILabel để gọi lib và hiển thị thông báo trả về. Bạn có thể tải xuống TestApp dự án hoàn chỉnh và chơi với nó.