【iOS】【RNCryptor】iOS11以降のSDKでビルドすると、RNCryptorの"int SecRandomCopyBytes~" でエラーが起きる
iOS11未満のSDKでビルドしていたモジュールを、iOS11以降の環境でビルドしようとすると、RNCryptorというライブラリでエラーが起きたため、その時の応急処置をメモしておきます。
対処方法(多分最善ではない応急処置的な)
・原因
RNCryptor.m内のSecRandomCopyBytesを呼び出し時の引数が違う物になっている(バージョンアップによって?)
★参考
https://github.com/RNCryptor/RNCryptor-objc/issues/17
https://github.com/RNCryptor/RNCryptor/issues/248
・コードを以下のように修正
● 修正前
extern int SecRandomCopyBytes(SecRandomRef rnd, size_t count, uint8_t *bytes) **attribute**((weak_import));
○ 修正後
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 110000
extern int SecRandomCopyBytes(SecRandomRef rnd, size_t count, void *bytes) __attribute__((weak_import));
#else
extern int SecRandomCopyBytes(SecRandomRef rnd, size_t count, uint8_t *bytes) __attribute__((weak_import));
#endif
さいごに
この事象に陥ったのは、iOS保守の案件での出来事でしたが、外部ライブラリを修正するのは正直微妙な気がしてます(gitの管理対象ファイルにも外しているので、また期間が経ってアップデートを余儀なくされたとき、私以外の違う人が保守対応していたら同じところで詰まりそう)
最善の対応は使用言語をObjective-CからSwiftに変更しつつ、ライブラリをSwift版の最新に変える、とかだと思います。(調べきれていませんが、今使っているObjective-C版のライブラリはサポート終了してしまったのかもしれませんね)
Author And Source
この問題について(【iOS】【RNCryptor】iOS11以降のSDKでビルドすると、RNCryptorの"int SecRandomCopyBytes~" でエラーが起きる), 我々は、より多くの情報をここで見つけました https://qiita.com/masao_dev/items/d69e385f0563b4b8a70d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .