Swiftでwebrtc .a静的ライブラリを使用したい。お願いできますか?私はあなたがSwiftで静的ライブラリを使用できないと読んだ、それは本当ですか?
尋ねたこの問題を修正しましたか?私も今日この問題に直面しましたが、ほんの一瞬で修正しました。この問題を解決していない場合は、次の手順を試してください。
p.s .: 2つのプロジェクトは同じワークスペース(静的ライブラリプロジェクトとアプリプロジェクト)にあり、静的ライブラリプロジェクトはアプリプロジェクトの前にビルドされます。写真が示すようなワークスペース構造:
- 静的libプロジェクトでは、すべての.hファイルを「Build Phases/Copy Files」に追加する必要があります。
- 静的ライブラリ製品ファイル(.aファイル)をアプリプロジェクトにドラッグします。写真を参照してください。
(パス:「アプリプロジェクト/ビルドフェーズ/ライブラリとバイナリをリンク」)
* .aファイルの赤い色のマークが気になる場合は、ビルドデバイスとして「汎用iOSデバイス」を選択して静的libプロジェクトを再ビルドし、.aをアプリプロジェクトに再ドラッグするだけです(赤いものは削除できます)
- アプリプロジェクトで「ライブラリ検索パス」を設定します。
これは、プロジェクトがビルドした.aファイルパスです:$(USER_LIBRARY_DIR)/ Developer/Xcode/DerivedData/StockApp-fkjqyvsniiauxogkivalcduqeotj/Build/Products/Debug-iphoneos
- アプリプロジェクトのBridging-Headerファイルを作成し、その中に静的ライブラリをインポートします。私の場合、「StaticLib/StaticLib.h」と「CommonFoundation/CommonFoundation.h」を含めます。
- アプリプロジェクトの "Objective-C Bridging Header"にBridging-Headerファイルパスを追加します。
SwiftでのObjective-Cクラスの使用
App Target内にコードをインポートする場合(1つのプロジェクトでSwiftとObjective-Cを混合)、bridging header
ファイルを使用して、Objective-CコードをSwiftに公開する必要があります。 _コード。 [プロジェクトでSwiftとObjective-Cコードを混合]
この投稿では、Objective-Cの静的ライブラリをSwiftコードにインポートする方法を説明します
Xcodeバージョン10.2.1
ライブラリプロジェクトを作成するか、ライブラリターゲットを作成します
File -> New -> Project... -> Cocoa Touch Static Library
//or
Project editor -> Add a Target -> Cocoa Touch Static Library
module.modulemap
ファイルを作成 [約]
module module_name {
umbrella header "module_name-umbrella.h"
export *
}
module_name-umbrella.h
ファイルを作成 [約] そして、消費者向けに開くすべての.h
ファイルを追加します
#import "header_1.h"
#import "header_2.h"
module.modulemap
およびmodule_name-umbrella.h
ファイルをCopy Files
セクションに追加します [約] 。
Project editor -> select a target -> Build Phases -> Copy Files -> add `module.modulemap`, `module_name-umbrella.h`
実装ファイルの追加.m
Select `.m` file -> Select File Inspectors Tab -> Target Membership -> Select the target
//or
Project editor -> select a target -> Build Phases -> Compile Sources -> add files
.h
(module_name-umbrella.h
、header_1.h
)にリストされたヘッダーファイルheader_2.h
を追加します [できません][公開ターゲットメンバーシップ]
Select `.h` file -> Select File Inspectors Tab -> Target Membership -> Select the target and make it **public**
//or
Project editor -> select a target -> Build Phases -> Headers -> add files to the **public** zone
ビルドライブラリ- ⌘ Command + B またはProduct -> Build
注:クライアントコードと同じプロセスアーキテクチャのライブラリをビルドしてください。
生成された出力を検索 [ビルド場所]
Products group -> lib<product_name>.a -> Show in Finder
ディレクトリに含まれるもの
lib<product_name>.a
–構築された静的ライブラリinclude/<product_name>
セクションのファイルを含むCopy Files
フォルダーHeaders
セクションのファイルを含むusr/local/include
フォルダー。パブリックインターフェイス/定義がありますDrag and drop
Xcodeプロジェクトへのバイナリ [約]
Link Library
[未定義のシンボル][リンクと埋め込み]
Project editor -> select a target -> General -> Linked Frameworks and Libraries -> add -> Add Others... -> point to `lib<product_name>.a` file
//or
Project editor -> select a target -> Build Phases -> Link Binary With Libraries -> add -> Add Others... -> point to `lib<product_name>.a` file
Library Search paths
[ライブラリが見つかりません][再帰パス]
Project editor -> select a target -> Build Settings -> Search Paths -> Library Search paths -> add path to the parent of `lib<product_name>.a` file
Header Search Paths
[モジュールが見つかりません][再帰パス]
Project editor -> select a target -> Build Settings -> Search Paths -> Header Search Paths -> add path to generated `include/<product_name>` folder with `module.modulemap` and `<product_name>-umbrella.h`
モジュールをSwiftクライアントコードにインポート [モジュール名]
import module_name
Xcode 9では、Swiftでサポートされる静的ライブラリを使用します。 Objective-Cでのように使用できます。 Xcodeリリースノート
Xcodeは、Swiftコードを含む静的ライブラリターゲットをサポートしています。 Swift静的ライブラリを使用するアプリケーションのデバッグには、元の場所にあるビルドアーティファクトの完全なセットが必要になる場合があります