8

私はこの質問が以前に尋ねられたことを知っています、しかし私は私が見つけることができるすべてを試みました、そしてそれのどれもうまくいきませんでした。

完全に機能するiOSアプリがあり、AdMobネットワークメディエーションと統合したいと考えています。AdMobだけで正常に動作しましたが、メディエーターではリンカー「-all_load」と「-ObjC」を設定する必要があります(他のリンカーフラグで)。案の定、それらなしでビルドした場合、広告は表示されず、ログには広告を設定する必要があると表示されます。

問題は、all_loadまたはObjCのいずれかを設定してアプリを正常にビルドできないことです。iOSアプリにはObjCは必要ないことを読みましたが、それがなくてもall_loadに問題があります。問題は、このエラーが発生することです。

ld:アーキテクチャarmv7のシンボル[ここにいくつかのコマンド][いくつかの静的ライブラリ]と[同じコマンドへのパス]が重複しています:エラー:リンカーコマンドが終了コード1で失敗しました(呼び出しを確認するには-vを使用してください)

問題のある静的ライブラリを削除して再構築すると、エラーは単に次の静的ライブラリに移動します。広告メディエーターをインストールしようとしているので、私のアプリでは、さまざまな広告ネットワークからのいくつかの静的ライブラリを配置する必要があります。

これが私が試したが失敗したいくつかの解決策です:

  • armv7ではなくarmv6用にコンパイルします(両方が必要なので、とにかく理想的な修正ではありません)
  • all_loadをforce_load[ライブラリへのパス]に置き換え、実際のiOSデバイスでテストすると、このメソッドはシミュレーターでは機能しないようです(これは何もしないようです。同じパスを使用すると、まったく同じ問題が発生します。とにかくエラーで見つかりました)
  • all_loadを削除します(ビルドしますが、私が言ったように、AdMobメディエーションはそれを必要とします)
  • 問題のあるライブラリを削除する(必要な静的ライブラリのすべてについてエラーが発生するため、明らかに機能しません)

この問題を解決するために助けをいただければ幸いです。

編集:私の問題の解決策

結局のところ、私が試しなかったのは、実際のデバイスで-ObjCを使用することだけでした。これは、私にとってはうまくいくようです。

EDIT2:ネバーマインド、まだ問題を抱えている

どの静的ライブラリが問題を引き起こしているのかを尋ねられたら、以下に私のコメントを引用します。

「all_loadを除外し、ObjCを含めるだけで、AdMobメディエーションが機能するようになりました。これは、最初のネットワークであるAdfonicを追加するまでは正常に機能していましたが、現在MobileAppTrackingと競合しています。次のようになります。ld:重複シンボル_OBJC_IVAR _ $ _ Reachabilityアーキテクチャarmv6clangの[path]/AdfonicSDK / libAdfonic.a(Reachability.o)​​および[path] /Objects-normal/armv6/Reachability.oの.reachabilityRef:エラー:リンカーコマンドが終了コード1で失敗しました(-vを使用)呼び出しを確認する)」

Admob Mediatorの骨組みは、他のすべてのアドネットワークライブラリを削除することで機能していましたが、最初のサードパーティネットワーク統合では、それと実装したトラッキングライブラリであるMobileAppTrackingとの間に別の競合が発生しています。「重複するシンボル」を解決するための解決策をまだ探しています。

編集3

AdMob Mediatorで試したすべての広告ネットワーク(AdMob自体を除く)がコンパイルに失敗することを確認できます。ほとんどの場合、シンボルの重複エラーが原因です。Admobのメディエーションサービスを使用しているのは私だけではないと確信しているため、これがどのように行われるのかわかりません。

編集4

以下に私のコメントを引用します:

「実際には、ほとんどの広告ネットワークとライブラリを機能させることができました。[ソースのコンパイル]でかなりの数の参照を削除する必要がありましたが、それでも、-ObjCと-all_loadを使用してコンパイルできました!」

4

6 に答える 6

2

SKDフォルダ内のadd-oneフォルダを削除してください

于 2012-08-03T14:54:50.810 に答える
2

-all_loadの代わりに-force_load"path/ to / your / libGoogleAdMobAds.a"を使用できます 。これにより、libGoogleAdMobAdsのみがロードされます。

于 2012-04-27T09:37:29.307 に答える
1

この記事に示されているように、「EXCLUDED_SOURCE_FILE_NAMES」という名前のユーザー定義のビルド設定を追加するか、この記事示されているように.aファイルを変更します。

于 2012-05-22T11:29:04.890 に答える
1

その問題を修正する方法を見つけましたか?

-all_loadパラメータを削除するだけで、アプリはデバイスで正常に動作します。しかし、私はこのトリックについてはよくわかりません。

于 2013-07-24T10:56:13.607 に答える
0

「メディエーション」フォルダを除く「アドオン」フォルダ内のすべてのフォルダを削除します。

わたしにはできる。

于 2013-02-07T17:36:29.897 に答える
0

私も同じ問題を抱えていました。他のリンカーに-ObjCを追加した後、コンパイルできませんでした(シンボルの重複と到達可能性について不平を言っていました)。削除するとコンパイルできますが、AdMobがアプリをクラッシュさせていました。

多くのテストと多くのパラメーターで遊んだ後、私は次のことを行い、現在は機能しています:[ターゲット]->[AppName]->[ビルドフェーズ]->[ソースのコンパイル]に移動し、Reachability.mを削除しました。正常にコンパイルされ、AdModもクラッシュすることなく機能していました。

于 2012-12-27T11:57:47.870 に答える