2013年6月14日金曜日

アプリ申請時にUDIDの件でInvalid Binary となる ... その後解決

先日の記事でアプリにAdMobを組み込んでAppleに申請するとUDID の件で弾かれると書いたかと思います。
http://startup-objc.blogspot.jp/2013/05/udidinvalid-binary.html

これが、AdMobライブラリに非があるのか、Appleの検査モジュールが誤検知したのかわかりませんが、広告を非表示にするという事でアップしました。
(元々広告収入を目的とするアプリでは無かったため。)



今回、アプリを更新する事案がありましたので、再度広告表示に挑戦しました。

一番の疑わしきはAdMob。
ライブラリのページを見てみると。。。
https://developers.google.com/mobile-ads-sdk/download











バージョン上がってるやないかい!
前回は6.4.1だったのが6.4.2、やっぱりこれか・・・


新しいのをダウンロード&展開して、組み込み!
クリーン&アーカイブしてアップ!



























だめか・・・



こういう時はstackoverflowに助けを求める
http://stackoverflow.com/questions/16409966/app-rejected-but-i-dont-use-udid

ibGoogleAnalytics_debug.a が含まれていて、悪さをしているとの事。
罠かよ・・・

ターミナルで以下を実行して、バイナリ内で利用している箇所を探せとあったので、実行してみたところ。
find . | grep -v .svn  | grep "\.a" | grep -v "\.app" | xargs grep uniqueIdentifier


























確かにある。これだな。削除。


再度、クリーン&アーカイブしてアップ!



























だめだな・・・


もしかしてと思いプロジェクトファイルを開く。エディタで。










思った通りや・・・

ライブラリ更新の度にディレクトリ作って追加していったから、
検索パスがその度に増えていました・・・

プロジェクトファイルからの直削除はこわかったので、
xcodeから削除。
















※画像は勢い余って消してしまった後のものです。


再度、クリーン&アーカイブしてアップ!

。。。成功やー!



結局、何が原因かというと、検索パス内に以前のライブラリへのパスが残っていた事が原因。
xcode内で、視覚的にファイルを消したとしても、検索パスには残る。
再度、別のファイルを追加してバージョンアップしている風にはxcode上は見えるんだけど、実際には「検索パスが新たに追加される」ことと「ファイル名単位のファイルパス」が追加されるようです。

そのため、検索パスの最初にあるAdmobの6.2.1の「同名ファイル」が選択されてAppleに弾かれていた模様。。。

もちろん、ibGoogleAnalytics_debug.aのファイルを消した事も影響しているかも知れないけど、検証しなおす余力がありません。

最終的なまとめとしては、検索パスをチェック。


なお、こういう目に遭うのは、ライブラリをバージョン別に分けて管理したがる僕みたいなタイプの人間で、ライブラリを上書き更新かけるタイプの方は、問題ない模様。
(twitterとか見たけど、みんな普通に出来ているしね。。。)


0 件のコメント:

コメントを投稿