2016年5月23日月曜日

実機インストールのトラブル

App installation failed
This application's application-identifier entitlement does not match that of the installed application. These values must match for an upgrade to be allowed.

経緯)
MBAとiMacの2台で開発しているが、最近iMacで実機インストールができなくなり、certificateをどーにかしろ…と言ってくる(汗)
これまでも



こちらの画面のFix issueを押すと…証明書を破棄して再設定…となっていました。
2台にまたがり作業をしていると、Macを行き来しているうちに過去に入れたテストアプリが起動しなくなります。
その時は原因がわかりませんでした。

本日気付いたこと。
キーチェーンに複数証明書が出きていましたが、期限が有効なので、触らぬ神に祟りなしではないけれど放置していました。しかし1つ1つ選択してみると有効、無効と表示されることが判明。これが上図のFix issueで新規に作っては死んでいった証明書の死骸だった訳です。MBAとiMacの証明書がどこかで異なるものになっていたことからこのような現象は起こっていたと1年経った今、わかりました。
そこで不要と思われる証明書…MBAにはなくて、iMacにあるものを削除。
15個くらいあったものを下図の3つに…。ちなみにMBAには下の2つはないのですが、これまで動いていたものが動作しなくなるのも嫌なので…下の2つは残し、上のiPhone Developer: 名前(ID?)を同じものにするための作業に移ります。

2台目の開発機を設定する方法



iMacの方に問題があるので、iMacの証明書 iPhone Developerを削除します。
MBA(正常動作する元の証明書)をMacにコピーする作業をはじめます。

元Mac(MBA)のキーチェーンで上図のように選択をして、右クリック(もしくは
controlを押して再選択)すると右側に選択肢が表示されるので「(選択証明書の名前)を書き出す」を選択します。


こんな画面が表示されるので保存を押す。



パスワードを入力。私は面倒なので何もいれずにOKを押します。
(自己責任でお願いします)



次にまたパスワード入力が出ますが、こちらは自分のMacに設定されているものです。
ソフトの更新などに聞かれてくる本体のパスワード。

これをコピー先のMac(今回はiMac)に送って、ダブルクリックすると2代目も開発機として無事登録されます。



そして無事、ビルドはできるようになりましたが、実機に入る寸前に

Your account already has a valid iOS Development certificate
You have a valid iOS Development
certificate in the Member Center, but it is
not installed locally. If your signing identity
is installed on another Mac, you can
export a developer profile on that Mac and
import it on this Mac. You can also reset
your current certificate.

また難癖を付けられています。
証明書をインストール、削除をするとMacを再起動すると問題が解決するといった方法をよく見かけますが、それでは解決しませんでした。
そこで今回は
上部のメニューから、
(1) window > devieces
(2) 左側のタブからiPhone実機を選択
(3) 右下のリストからトラブル中のアプリを選択して削除
(4) 実機からも削除されていました
(5)再度インストール

原因はよくわかりませんが、今回は何とか2台のMacで実機インストールができるよう状態に戻りました。
元々のCertificateをリセットするか…と確認画面が表示されますが、さすがにそれをするとリリース中のアプリにも影響が出てまた面倒な作業をしないといけなくなるのは回避できたと思います。
半年間新規でアプリを申請していないので、またDistribution用のCertificatで面倒なことになりそうですが近々、リハビリのために1本リリースしたいと思います。

2016年2月6日土曜日

スマホサイト表示チェック

iPhoneも機種により解像度が異なり、既にAndroid状態…。
iPhone6と6Pシリーズは、老眼用の拡大表示モードがあるので同じ機種でも解像度が異なる。
Xcodeに付属するiPhoneシュミレーターはXcodeからしか機種変できない?ようで…スマホサイトの表示確認に便利なサイトを発見。
URLを入れると各デバイスでの縦、横表示してくれるのが便利!

http://www.responsinator.com/

2016年2月5日金曜日

iPhone シュミレーターを直接起動する

Xcodeがバージョンアップする度に場所が変わる…

/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app


アプリケーションフォルダのXcodeを右クリックしてパッケージの内容を表示を選択するとあとは上記のパスのとおりに…。



ドックに追加して使えば便利です。
WEBサイトの確認にも便利です。
実機は不要。
端末の切替はXcode経由になるのかもしれません。
メニューには存在しませんでした。

2016年1月6日水曜日

【PHPエラー】headers already sent…

警告メッセージは、スクリプトの途中でheader関数を実行したときなどに表示されるらしい。つまり、header関数より前では何も出力しないようにということです。
何も出力していないのにこのメッセージが表示されるときは、スクリプトファイルの先頭に無駄な空白行がないか調べてみることらしい。

ロリポップサーバー(月250円)では出なかったエラーが、月500円のサーバーだと表示されるようになったが…空白行とかを削除するとエラーが消えた。

参考)http://php1st.com/69/

2016年1月5日火曜日

PHP テキストファイルのX行目を読み込む

よくあるPHPコード
fopenを使って1行目だけ抜き取る場合はこれで良い。
1$fpfopen("text.xml""r");
2$lines fgets($fp);
3fclose($fp);
ただ処理的に重そうだし、変数に格納していろいろ使いたい…。
そこでこれ、これでX行目だけ抜き出せる。
1$hoge = file("text.xml");
2print "$hoge[ X ]"