ObjC-автомат
аюсь пройтись по этому руководству:
https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/walkthrough/
пытаемся создать привязки для этого проекта github:
https://github.com/lminhtm/LMGaugeView
Использование Sharpie 3.4.
Я сталкиваюсь со следующими проблемами:
Я не могу сгенерировать толстый двоичный файл с архитектуройi386 armv7 x86_64 arm64
потому что я строю против iOS11. Я могу генерировать только толстый двоичный файл с архитектуройx86_64
а такжеarm64
при попытке других выдает сообщение об ошибкеinvalid iOS deployment version, iOS 10 is the max deployment target for 32-bit targets
, Это ожидается?
Когда я затем использую Sharpie, я могу генерировать файлы API и Struct, однако каждый из этих файлов имеет огромные размеры: в структуре Struts 24K + строки и API 54K + строки. Я также следовал учебному пособию по YouTube, и он получил около 200 строк, так что тот факт, что у меня такие большие цифры, заставляет меня думать, что что-то происходит. Его учебник не был для моего проекта Objective-C, но я даже попробовал тот же, что и он, и в итоге получил тот же результат.
Файл Struct в итоге содержит более 7 тысяч ошибок, и я вижу бесчисленные строки, которые выглядят примерно так:
// extern long double tanhl (long double) __attribute__((const)) __attribute__((nothrow));
[DllImport ("__Internal")]
[Verify (PlatformInvoke)]
static extern [unsupported Builtin: long double] tanhl ([unsupported Builtin: long double]);
Где пропущены имена идентификаторов и есть это [неподдерживаемая сборка: часть, которую я не понимаю.
Существует также бесчисленное множество ссылок на другие версии iOS, а также watchOS и TV, поэтому создается впечатление, что он пытается создать API и Structs для каждой существующей ОС и версии, что имеет смысл, почему файлы будут такими большими. Вот небольшой фрагмент из файла Struct:
// extern CGPathRef _Nullable CGPathCreateCopyByTransformingPath (CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform) __attribute__((availability(ios, introduced=5.0))) __attribute__((cf_audited_transfer));
[iOS (5,0)]
[DllImport ("__Internal")]
[Verify (PlatformInvoke)]
[return: NullAllowed]
static extern unsafe CGPathRef* CGPathCreateCopyByTransformingPath ([NullAllowed] CGPathRef* path, [NullAllowed] CGAffineTransform* transform);
// extern CGMutablePathRef _Nullable CGPathCreateMutableCopy (CGPathRef _Nullable path) __attribute__((availability(ios, introduced=2.0))) __attribute__((cf_audited_transfer));
[iOS (2,0)]
[DllImport ("__Internal")]
[Verify (PlatformInvoke)]
[return: NullAllowed]
static extern unsafe CGMutablePathRef* CGPathCreateMutableCopy ([NullAllowed] CGPathRef* path);
// extern CGMutablePathRef _Nullable CGPathCreateMutableCopyByTransformingPath (CGPathRef _Nullable path, const CGAffineTransform * _Nullable transform) __attribute__((availability(ios, introduced=5.0))) __attribute__((cf_audited_transfer));
[iOS (5,0)]
[DllImport ("__Internal")]
[Verify (PlatformInvoke)]
[return: NullAllowed]
static extern unsafe CGMutablePathRef* CGPathCreateMutableCopyByTransformingPath ([NullAllowed] CGPathRef* path, [NullAllowed] CGAffineTransform* transform);
Я знаю, что эти файлы должны быть намного меньше, тем более что код Objective-C - это один заголовочный файл. Что я могу здесь делать не так?
Я могу предоставить более подробную информацию, если это необходимо!