TweakにSwift frameworkを導入する過程を記す
2482 ワード
最近、あるプラグインにAppとweb端末を通じて、web制御Appを実現したいと思っています.socketを選択します.ioはサービス側とwebフロントエンドとして機能する.iOS端末socket.ioは純粋なswift実装のライブラリです.現在Theosのswiftに対するサポートはまだ十分ではありませんが、一般的な仕事を完成することができます.Theosは現在、swiftファイルのコンパイルをサポートしています.
まずtheos倉庫でswiftサポートについて説明します.ここでSwift Runtimeという部分が重要なので、ここの説明に従ってcontrolファイルを修正する必要があります.次はOCとSwiftのインタラクションです.この部分は私たちが普段開発しているのと同じです.Makefileでブリッジファイルを指定することができます.最後にswiftでtweakを書くことはできません.うん、hock以外のコードしか書けません.以前から「解決済み」にTheosを使ってSwiftソースファイルをコンパイルする方法を聞いていました.
私のニーズはswift frameworkを導入することです.私の工事自体はlibswift*に依存しません.dylbですが、私が依存しているライブラリはそれらに依存しているので、swift runtimeを導入する必要があります.
tweakにframeworkを導入する場合、これらの資料Tweakがサードパーティのframeworkをどのように導入するか、どのようにTweakでサードパーティのframeworkに加入するか、どのようにTheosエンジニアリングにサードパーティのSDKまたは静的ライブラリを埋め込むかを参考にすることができます.対照的に、個人的にはTweakエンジニアリングの作成、構成チュートリアル&logos構文の自動補完を実現する説明が好きです.簡単に言えば、frameworkをlayoutを通じて脱獄するシステムに入れる必要があります.frameworkはホストbundleにはなく、ホストmachoファイルのload commandにも書き込まれていないからです.したがってframeworkのinstall name baseが@rpathの場合、dylibがinsert librariesでロードされてもdylib依存のframeworkは見つかりません.
otoolツールを使用して、machoファイルに依存するライブラリとそのロードパスを表示できます.
具体的なパスを変更するにはinstall_を使用しますname_tool.install_name_toolの主な使い方は2つあります.
まず、他のエンジニアリングコンパイルから生成されたframeworkのidを変更し、この2つの在庫が参照関係にあるため、参照されたライブラリのパスも修正します.これで、私たちのライブラリは適切に処理され、layoutの下にframeworkを置きたい場所に置きます.Makefileを変更し、この2つのライブラリを導入します.もし私たちのプロジェクトにswiftファイルがなければ、私たちは今コンパイルすることができます.しかし、ここで問題があります.tweakダイナミックライブラリはロードされません.この問題はまだ納得していないので,引き続き研究しなければならない.swiftファイルを導入してコンパイルすると、dylibにlibswiftCoreが1つ増えていることに気づきます.dylibの依存は、このとき、このダイナミックライブラリがロードされます.
Xcodeの高バージョンでは、swift 5.0のパスがtheosの現在のバージョンと一致せず、一部のライブラリがリンクされません.この問題に関する話題:unable to compile swift tool using XCode 11#476,This copy of libswiftCore.dylib requires an OS version prior to 12.2.0, [create_patched_sdk] Update bash script, create new python script #31 .
DH開発の古いバージョンtheosを使用している場合、dpkg-debに問題があり、frameworkのコピーを指定したパスに解凍するとエラーが発生し、パスが乱れ、プロンプトパスが存在しない.make packageを何度か試してみると成功しますが、Cydiaでパッケージの内容を確認したり、表示できないことに気づいたり、ファイルリストのplistファイルを開いたりすると、パスが間違っていることに気づきます.新版theosに移行し、dpkg-debをアップグレードした後、この問題は発生しませんでした.lzmaアーカイブ方式に変更したことと関係があるかもしれませんが、具体的には詳しくは検討しないで、issue追跡問題の発見と解決を見ることができます.
まずtheos倉庫でswiftサポートについて説明します.ここでSwift Runtimeという部分が重要なので、ここの説明に従ってcontrolファイルを修正する必要があります.次はOCとSwiftのインタラクションです.この部分は私たちが普段開発しているのと同じです.Makefileでブリッジファイルを指定することができます.最後にswiftでtweakを書くことはできません.うん、hock以外のコードしか書けません.以前から「解決済み」にTheosを使ってSwiftソースファイルをコンパイルする方法を聞いていました.
私のニーズはswift frameworkを導入することです.私の工事自体はlibswift*に依存しません.dylbですが、私が依存しているライブラリはそれらに依存しているので、swift runtimeを導入する必要があります.
tweakにframeworkを導入する場合、これらの資料Tweakがサードパーティのframeworkをどのように導入するか、どのようにTweakでサードパーティのframeworkに加入するか、どのようにTheosエンジニアリングにサードパーティのSDKまたは静的ライブラリを埋め込むかを参考にすることができます.対照的に、個人的にはTweakエンジニアリングの作成、構成チュートリアル&logos構文の自動補完を実現する説明が好きです.簡単に言えば、frameworkをlayoutを通じて脱獄するシステムに入れる必要があります.frameworkはホストbundleにはなく、ホストmachoファイルのload commandにも書き込まれていないからです.したがってframeworkのinstall name baseが@rpathの場合、dylibがinsert librariesでロードされてもdylib依存のframeworkは見つかりません.
otoolツールを使用して、machoファイルに依存するライブラリとそのロードパスを表示できます.
otool -L .../dylib
otool -L .../xx.framework/xxx
具体的なパスを変更するにはinstall_を使用しますname_tool.install_name_toolの主な使い方は2つあります.
install_name_tool -id [path] [target]
は、ライブラリが参照されるパスを変更するために使用され、独自のプロパティに相当します.ライブラリが複数のターゲットで参照される可能性がある場合は、ライブラリのidを変更するのが便利です.あるライブラリの依存ライブラリのパスを変更するだけであれば、install_name_tool -change [oldpath] [newpath] [target]
を使用できます.まず、他のエンジニアリングコンパイルから生成されたframeworkのidを変更し、この2つの在庫が参照関係にあるため、参照されたライブラリのパスも修正します.これで、私たちのライブラリは適切に処理され、layoutの下にframeworkを置きたい場所に置きます.Makefileを変更し、この2つのライブラリを導入します.もし私たちのプロジェクトにswiftファイルがなければ、私たちは今コンパイルすることができます.しかし、ここで問題があります.tweakダイナミックライブラリはロードされません.この問題はまだ納得していないので,引き続き研究しなければならない.swiftファイルを導入してコンパイルすると、dylibにlibswiftCoreが1つ増えていることに気づきます.dylibの依存は、このとき、このダイナミックライブラリがロードされます.
Xcodeの高バージョンでは、swift 5.0のパスがtheosの現在のバージョンと一致せず、一部のライブラリがリンクされません.この問題に関する話題:unable to compile swift tool using XCode 11#476,This copy of libswiftCore.dylib requires an OS version prior to 12.2.0, [create_patched_sdk] Update bash script, create new python script #31 .
DH開発の古いバージョンtheosを使用している場合、dpkg-debに問題があり、frameworkのコピーを指定したパスに解凍するとエラーが発生し、パスが乱れ、プロンプトパスが存在しない.make packageを何度か試してみると成功しますが、Cydiaでパッケージの内容を確認したり、表示できないことに気づいたり、ファイルリストのplistファイルを開いたりすると、パスが間違っていることに気づきます.新版theosに移行し、dpkg-debをアップグレードした後、この問題は発生しませんでした.lzmaアーカイブ方式に変更したことと関係があるかもしれませんが、具体的には詳しくは検討しないで、issue追跡問題の発見と解決を見ることができます.