1

iOS フレームワークの場合、フレームワークとフレームワークを使用するアプリケーションに同じサードパーティ ライブラリの異なるバージョンが含まれている場合の衝突を防ぐために、シンボルを内部に非表示にできるようにしたいと考えています。

今まで-unexported_symbols_listはオプションで指定することで可能でした。

ただし、Xcode 7 Beta 5 では、次のエラー メッセージが...

-unexported_symbols_list and -bitcode_bundle (Xcode 
setting ENABLE_BITCODE=YES) cannot be used together

... フレームワークの BitCode バージョンをコンパイルしようとすると発生します。

そこで、3 つの質問があります。

1) BitCode をコンパイルするときにシンボルを非表示にする簡単な方法はありますか?

2) そうでない場合、フレームワークのサードパーティ ライブラリが同じライブラリであるがバージョンが異なる場合に、アプリケーションのサードパーティ ライブラリと衝突しないようにするために他にできることはありますか?

3)一緒に使用できないのはなぜですか?-unexported_symbols_list-bitcode_bundle

4

1 に答える 1

0

部分的な回答(完全な回答も探しているため)

-exported_symbols_listオプションでまたはを使用-unexported_symbols_listすると、さまざまな関数シンボルがローカル シンボルに変換されます。

何らかの理由で、リンカはローカル シンボルでビットコード オプションを使用できません。

したがって、この 2 つを一緒に使用することはできません。

また、stripシンボルの非表示に使用されるキーワードはグローバル シンボルを非表示にできますが、ライブラリは動的でなければならないことに注意してください。これは、まだ完全には検討していないオプションです。動的ライブラリが機能する場合は、それを検討する必要があります。

これが、この問題を解決する方法について誰かが別の見方をするのに役立つなら、それは素晴らしいことです.

于 2015-09-30T04:40:50.217 に答える