スポンサーサイト

--/--/--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
comment (-) @ スポンサー広告

[iOS9 swift2.0 SpriteKit] メモリリーク?について

2015/09/27
ここ数日、アップデートのためにビルドをアップロード&申請しては、
バグを見つけて直して、再び申請・・・というのを繰り返していました。

バグといっても、全てiOS9とswift2.0への変更によって生まれた不具合なわけですが、
自分に責任がないものに時間をとられるほど辛いものはありません。

しかし、Swift2.0とiOS9、様子がおかしい所がザクザクでてきます。
今回新たに見つけたのものの中の1つは、メモリ関連です。

シミュレーター上で、メモリがどんどん膨れ上がる現象を発見し、
その原因究明に翻弄されたのですが、
ついぞ原因は分からず。
もちろん、そんなものはiOS8やSwift1.2まではなかったものです。

instrumentalで調査すると、
普通にSpriteKitの、SKNodeを以下のように宣言する部分で、メモリリークが僅かずつ発生していると表示されます。

 var i = SKNode()

中身がまだ未定なインスタンスを生成しているだけなのですが、
これでリークとか言われてもちょっと……。

Swiftの仕様変更に対し、SpriteKit側が対応し切れていないのでしょうか?

しかしSpriteKitの現場で実際に使っている人の記事さえ皆無に近いのに、
その上iOS9、Swift2.0で、という条件が重なると、
少なくとも日本で同じことを悩む人は0人なんじゃ・・・と本気で思えてきて怖いです。

やはり、とっととcocos2d-xへ移行した方がよいのかもしれません。

スポンサーサイト
comment (1) @ 未分類

[アップデート2回目] XCODE7で、iOS8のデバッグをする方法。SpriteKit、iOS8.4→iOS9にすると画面が崩れる

2015/09/25
今日、ゲーム「おっさんと川」のアップデートで審査が通り、AppStoreに並んだのだが・・・
iOS9のせいで、いろいろ手間取ったアップデートだったこのver
必死にiOS9に対応させ、ようやく審査も通ったというのに、
この段階に至って、
iOS8.4以下で、表示がおかしくなっていることに気づいた。

こんどはそっちかあああ

ていうか、XCODEを7にし、iOSを9にした時点で、
下位verとの連携が重要になってくるんだから、
verup直後は、その辺を慎重にみられるようなお膳立てをAPPLEはどうしてやってくれないのか。
たとえば、XCODE7には、iOS8.4以前のシミュレーターをデフォルトでインストールさせていて、
しばらくは、iOS9との比較シミュレートを自然とデベロッパーが意識できるようにするとか。

下位となったiOS8.4のシミュレーターをあとからダウンロードしてインストールして、
シミュレートできる、などということを、私は今日知って、なんだかやるせ無い気持ちになった泣。

そういうわけで、
XCODE7で、iOS8のデバッグをする場合は、

XCODEのシミュレーターを選択するリストにある、
「more simurater」を選択し、
そこから、以前のverのシミュレーターをダウンロード&インストールすると、
可能になる。


シミュレーター選択リストが多くなってきたなくなるけど、当面は仕方がない。


というか、なぜiOS9は、いろいろと画面が崩れているのだろう。
いろいろネットで見てみると、Float周りが変更になったとか、Viewの初期値が変更になったとか、
多分そのあたりのせいだと思うのだが、よくは分からない。

とにもかくにも、その辺をもう一度見直して、すぐさま修正版をつくり、今日アップロードした。
すると、前回、iTUNES Connectの、ビルドが2時間も表示されず、ものすごく苦労したことがあったが、
おそらくそのあたりの苦情が多かったのだろう、早速、ビルド表示に関して変更が加えられていた。
ビルドをアップロードすると、反映されるまでに処理中という表記がされるようになったようだ。


というわけで、いろいろあったが再申請した。
comment (0) @ 申請

[XCODE 7 & iOS9] iOS9でのリジェクトと、XCODE7&iOS9対応

2015/09/17
9/16
まだiOS9が公開されてもいないのに、
「iOS9で動かないから」という理由で、
アップデート申請中だったゲームがリジェクトされた。
ひどい話だ・・・。

しかしAPPLEとはそういう会社だと割り切って、
仕方なくiOS9と、XCODE7をいれる。

以前のプロジェクトを開くと、
Swiftコードを修正しますか、と聞かれるのでOKとすると、
10分くらい修正されるが、
ようやく終わってコンパイルしてみると、
修正とやらが全く無意味だったのではと思うくらいエラーと警告が吐き出される。

とりあえずXCODE7のswift2.0で大きく変わったのは、
個人的には、

1、Varによる宣言が厳しく取り締まられるようになったこと。
 変更のない変数宣言はLetにしろと怒られる。

2、optionalの仕様が少しかわったらしいこと。
 さらに面倒になった

ことが嫌だ。

他にも、
一部のメソッドが使用不可になっていたり、型が変わっていたりと、
もうたくさんありすぎて、おぼえていないが、とにかく一個一個地道に修正していく。

あとXCODE7になって、スナップショットが消えたのが
個人的には一番つらい。


そしてようやくコンパイルが通り、実機で動かせるようになると、
今度は画面がけっこう崩れていることに気づく。


どうも、SpriteKitのzPositionの初期値や、SKLabelNodeのVertical初期値などが若干変わっているようだ。
なんでそんなところを変えてくるのか意味不明だが、仕方ないので修正する。

HTTPSに関してはすでにネット上で色々いわれているので、Plistに例外を指定。

Info.plist
 > NSAppTransportSecurity(Dictionary型)
  > NSExceptionDomains(Dictionary型)
   > test.com (Dictionary型) ← ドメイン
    > NSTemporaryExceptionAllowsInsecureHTTPLoads (Boolean型) → YES


これでHTTPでもアクセス可能になる。


ようやくひと段落ついたかなと思った頃に、
なにやらずっとLogに吐き出されている文字にようやく意識がむく。
気づいてはいたが、見て見ぬふりをしていたんだけど、そろそろ見てみる。

_BSMachError
とか
CAMetaLayerうんたら
とか、
warning
とか
かつてはなかったようなログが大量に吐き出されている。

どうも実機で動かした時だけ吐き出されるログのようだ。

ネットで検索しても、英語圏の記事が5件ほどしか出てこない

この世にXode7やSwift2.0を実戦的に使っている人間はほとんどいないんじゃないかと不安になるレベル。

その5件の記事を翻訳しながら読んでみても、
どうも解決できないと外人さんも言っているようなので、
私もあきらめて放置することにした。

そしていよいよアーカイブ化しようとした時、
ちょっと気になってStoryBoardを見てみると、
StoryBoardを開いた途端、
警告が50個くらい出現する。


なにやらAutoLayoutが微妙にくずれている。

なんで・・・???

全く意味不明だが、仕方ないので、全部手作業で修正。

しかし、iAdのad bunnar のサイズだけが
Frame for "iad main" will be different at run time.
と出て、消えない。

中を展開すると、
Height will be 32 at run time but is 66 in the canvas.

何度見ても、ボード上のサイズも指定も32なんだが・・・
当然、レイアウトを配置しなおしても消えない。
というかiADのバナーのサイズは2種類限定のはずで、
なぜ66などという数字が出てくるのか意味不明。

もういやになって、これも放置してやった
シミュレーターで見る限りは見た目に問題はない。


そして、いよいよ
アーカイブ化。

ところが、

The resulting API analysis file is too large. We were unable to validate your API usage prior to delivery. This is just an informational message

という警告が
アーカイブ時に出現。

初めて見た。

どうもアーカイブのサイズがでか過ぎるらしい。

色々調べてみると、
たしかにアーカイブのサイズが160MBを超えている。
なんでや!!!!
元来は51MBくらいのサイズのはず・・・。

XCODE6アップデートの際もにたようなことがあった、という記事を発見。

警告を無視してそのままsubmitしたら、App Storeでは正常なサイズになっていた、と書かれていた。

不安ながらも、きっと無視して大丈夫・・・と信じつつアップロード。

はい、ビルドに表示されません。


今日は早朝から夜の11時までずっと奮闘していたので、
そろそろ精神的にも限界。

しかしそれでももう少しねばって、
プロジェクトやフォルダの中を調べたり、無駄なフォルダを削除してみたり、
色々消してみたり、
それでもやっぱり何度やってもアーカイブのサイズは161MBのまま。
へんな警告は残り続けてるし・・・。

Snap shotがないせいで、元に戻るのが難しいし・・・。

もういやじゃぁあああああああ

ちなみに、同じverでアーカイブ化したものをアップロードすると、
すでにアップロードされています、とエラーが出る。

すなわち、警告はでているものの、アップロードは成功しているということになる。
しかし、ビルドにはなぜか表示されない。

これはもはやAPPLEのいじめに違いない。


そして3、4回目くらいのアーカイブアップロードの時、
iTunes connectのビルドに、
1番最初にアップロードしたアーカイブが表示される。

・・・・・・


要するに、すごいラグがあるということなのだろうか。
ちなみに、そのアップロードからはすでに2時間くらいが経過している。

ネットには、5分くらい待たないとビルドに表示されないことがあるから注意してね♪
とはあったが、
2時間などという数字はどこにも書かれていない。

しかし実際、2時間待ってようやく表示されている始末。


ということは、最後にアーカイブ化してアップロードしたものは、いまから
2時間くらい経過すれば、表示されるのかもしれない。

あるいは、このXCODEのver跨ぎによって発生するアーカイブのサイズの巨大化は、
巨大化したアーカイブをアップロード後にitunes connect側で何か、適正なサイズに作成しなおしているのかもしれない。
そのせいで、ビルドへの更新がこれほどに遅れているのでは。

だとすると、XCODEからitunes connectまで含めてお粗末な構成だとしか言いようがない。
というか全てを振り返ってみて、
なんとも稚拙で乱暴なアップデートである。

ネット上の過去の記事などをみれば、こうしたアップデートが今までに何度も行われていることかわかる。
そのたびに、デベロッパー達はくるしんできたようだ。

Micrsoftならこれくらいでも当たり前という感じはするが、
これがクールさを売りにするAPPLEの実態とはなんとも哀れな感がある。

しかし
今回のことで、
android開発にも触手を伸ばすモチベーションが大いに高まったので良しとする。


追記

このブログを書いていると、
最後にアップしたアーカイブがビルドに表示された。
アップしてから1時間くらいだろうか。
そして、無事、ようやく審査待ちに。

しかし、今後もこんなしょうもないことに付き合わされなければならないと思うと、iPhoneアプリ開発は本当に割りに合わない。
もっといい加減に向き合った方がいいのかもしれない。
comment (0) @ エラー

[初めてのアップデート] 英語へのローカライズ

2015/09/05
先月公開したばかりの私の第二作目のiPhoneゲーム
「おっさんと川」を、今回アップデートすることにした。

iPhoneアプリをアップデート申請するのは今回が初めてだ。

今回のアップデートの主な内容は、
英語へのローライズ。

ゲーム部分に対しては修正や若干の追加等はあるが、概ねマイナーチェンジとなっている。

英語へのローカライズ方法はいろいろとネットで紹介されているが、
私の場合、ほぼ意味をなさなかった。
なぜなら、UIKitをほとんど使っていないからだ。

そして、私にとって鬼門となっている
アプリ名のローカライズが何故かうまく機能しない呪い
は、今回もやはり私を苦しめた挙句に、結局アプリ名をローカライズできずに終わらせた。

ほんと、iPhone開発においては、私の場合、
ネットの情報が比較的、あてにならない・・・。

で、実際にはどのようにローカライズしたかというと、
アプリ名の方はどうせ変わらないので、
infoPlistの方は、直接日本語で「おっさんと川」と記入し、
一応、ネット情報通り、
Plist.stringファイルを作成して、CFBundle Display Name で
英語と日本語とそれぞれの名前を書いて入れておいた。
入れても全く機能していないんだけど・・・、もしかしたら公開されたら機能されてるんじゃ・・・というわずかな可能性に望みを託して・・・
まあ、そんな運頼みは当てにしてないので、
このままだと多分、英語版でも、日本語でしっかりと「おっさんと川」と表記されたアプリ名になると予想している。
日本語カッケー的な人に気に入ってくれたらいいや、くらいに思っている。

そして、ゲーム内においては、

func language() -> String {

var s:String? = NSLocale.preferredLanguages().first as? String
if s == nil { s="" }
return s!

}


使用時は・・・

if language() == "ja" {
日本語
} else {
 英語
}

という感じで、手作業でローライズした。
手作業とはいっても、一人で作ってるから、これで十分である。
グーグル翻訳とにらめっこしながら、病み上がりだったが二日で全て英語化した。

時間はかかったが、大した作業でもない。
英語になることによるデザインなどの微調整も同時にやった。

アプリ内課金部分は、もともとEnglishローカライズの設定を付与させていたが、
こちらはデバッグの度に言語がフラフラしていた。どうやら、App storeの言語圏に依存するらしい。
これはしょうがない。公開時には上手くいっているだろう。

そんな感じでローカライズを済まして、
英語用の説明やキーワード、スクリーンショットなんかも準備して、
アップデート申請完了。


私のこのゲームは、
公開から2週間弱でダウンロード件数がやっと400ほどだ。
これだけでは到底やっていけない数字である。

英語圏へのローカライズにより、どれくらい状況が変わるのか、今後の展開を
みておきたい。

というわけで、ローカライズ申請、上手くいきますように。

ossan_icon2.jpg
comment (0) @ 申請
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。