iOSアプリで、GameCenterを入れても、自分のスコアしか反映されない

gamecenter アイコン

タイトルの通り、iPhoneアプリでleaderboard等、
ランキング機能を使っていたのですが、いくらやっても、
何故か自分のスコアしか反映されない。

いくら施行錯誤しても、だめでした。

sandboxユーザー でやったり、TestFlightユーザー でやったり、
ユーザーを何度も作り直したり、
debugやreleaseが問題なのかなと思ったたり、

一行に1ユーザーの情報だけしか表示されない、、
何が原因なんだー、、半日まっても駄目。。。

Unity5で、「System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded.」のエラー

Unity5IAP

Unity5.4を久々開いたら、下記エラーで実行できない。


Unhandled Exception: System.Reflection.ReflectionTypeLoadException: The classes in the module cannot be loaded. at (wrapper managed-to-native) System.Reflection.Assembly:GetTypes (bool) at System.Reflection.Assembly.GetTypes () [0x00000] in <filename unknown>:0 at Mono.CSharp.RootNamespace.ComputeNamespaces (System.Reflection.Assembly assembly, System.Type extensionType) [0x00000] in <filename unknown>:0 at Mono.CSharp.RootNamespace.ComputeNamespace (Mono.CSharp.CompilerContext ctx, System.Type extensionType) [0x00000] in <filename unknown>:0 at Mono.CSharp.GlobalRootNamespace.ComputeNamespaces (Mono.CSharp.CompilerContext ctx) [0x00000] in <filename unknown>:0 at Mono.CSharp.Driver.LoadReferences () [0x00000] in <filename unknown>:0 at Mono.CSharp.Driver.Compile () [0x00000] in <filename unknown>:0 at Mono.CSharp.Driver.Main (System.String[] args) [0x00000] in <filename unknown>:0 The following assembly referenced from mygame/Assets/Plugins/UnityPurchasing/Bin/Stores.dll could not be loaded:

色々いじった結果、Unity5のIAP(アプリの課金機能)が影響していたらしく、IAPのをアップデートしたら改善された。。

アップデートは、 Window -> Services に IAP(課金機能)があるので、
それをONに、ImportしなおせばOK!!

Unity5IAP

iOS swiftでQRコード認識時に時々クラッシュする際対策!

iphone swiftでQRコード認識時にクラッシュする事がある。その対策

QRコードリーダーアプリで、下記のようにカメラ内のQRコードを読み取る時に、
クラッシュする事が一定確率であった。

エラー内容


fatal error: unexpectedly found nil while unwrapping an Optional value

クラッシュ対象のコード


qrCodeObject = previewLayer.transformedMetadataObjectForMetadataObject( metadata as! AVMetadataMachineReadableCodeObject) as! AVMetadataMachineReadableCodeObject

この部分で、クラッシュする事がある。。

色々調べたら、AVCaptureVideoPreviewLayer内のメソッドでnilが入る事があるらしい。

超参考:http://ja.stackoverflow.com/questions/14968/%E4%B8%8B%E8%A8%98%E3%83%9A%E3%83%BC%E3%82%B8%E3%82%92%E5%8F%82%E8%80%83%E3%81%AB%EF%BC%92%E6%AC%A1%E5%85%83%E3%83%90%E3%83%BC%E3%82%B3%E3%83%BC%E3%83%89%E8%AA%AD%E3%81%BF%E5%8F%96%E3%82%8A%E3%82%92swift2%E3%81%A7%E6%9B%B8%E3%81%84%E3%81%9F%E3%81%AE%E3%81%A7%E3%81%99%E3%81%8C-%E5%AE%9F%E6%A9%9F%E3%83%87%E3%83%90%E3%83%83%E3%82%AF%E6%99%82%E3%81%AB%E3%82%B3%E3%83%B3%E3%82%BD%E3%83%BC%E3%83%AB%E7%94%BB%E9%9D%A2%E3%81%AE-fatal-error-unexpectedly

ボクが対策したコード


if previewLayer.transformedMetadataObjectForMetadataObject( metadata as! AVMetadataMachineReadableCodeObject) != nil { //nilチェックしてから処理 qrCodeObject = previewLayer.transformedMetadataObjectForMetadataObject( metadata as! AVMetadataMachineReadableCodeObject) as! AVMetadataMachineReadableCodeObject }else { // キャプチャセッション再始動 captureSession.startRunning() }

nilチェックをおこなってら処理する事で解決しました。
また、ただのnilの場合はカメラが動かなくなってしまうので、
キャプチャーセッション等を、再度走らせる事で思い通りの動作になりました。!
参考になれば幸いです!!

android studioで、「Error:Execution failed for task ‘:app:validateSigningRelease’. > Keystore file」というエラーが出たら

android studioで、「Error:Execution failed for task ‘:app:validateSigningRelease’. > Keystore file」と出た時

Android Studio2.2を使っていて、いきなり下記エラーにでくわした。


Error:Execution failed for task ':app:validateSigningRelease'. > Keystore file

既存のプロジェクトをファイルをコピーしてから作ったのがよくなかったのかな、
keystore のファイルも新しく作り直したはずなのに、このエラーが消えない

解決策

  • Make Rebuild」や、「Android Studio」を再起動したらエラーがでなくなりましたわ汗

Unity 指定敵タグ等の合計値を出す

Unityで敵全部のHPをまとめたりする。

Unityで出現中の敵全員のHPを合計で出したりして、進捗を出す事はよくあるケースだと思う。

そんな時のC#スクリプト


int enemyAllHp = 0; GameObject[] targetEnemyObjs; // foreachで検索する、Enemyタグのオブジェクト。 targetEnemyObjs = GameObject.FindGameObjectsWithTag("Enemy"); foreach(GameObject targetEnemyObj in targetEnemyObjs){ // 敵HPの総数。 enemyAllHp += targetEnemyObj.GetComponent<EnemyController>().enemyHp; }

地道にループ

Android Studioで「Error running app: Unknown run configuration type AndroidRunConfigurationType」でビルドできなくなった

Android Studio2.2で、急にビルドができなくなった。

android studio app

Runで実行する「app」がUnknownになって下記エラーになっている。


Error running app: Unknown run configuration type AndroidRunConfigurationType

試行錯誤

1. プロジェクトがおかしくなったのかなと思って、いままで普通に動いていたプロジェクトも実行できなくなっている

2. PC再起動や、AndroidStudioが壊れたかなと思って再インストールして、実行かわらず。JDK周りでエラーがでていたので、次は

3. JDKをインストールしてアップデート

4. 他にもSDK Managerで、プラグイン系を見てみると、Firebase周りで、なんやらエラーが、「Firebase testing」というチェックを外して、[Make Project]をしてみると、、、、

5. 、、、、、!!を、ちゃんとappモジュールがUnkownじゃなくなって、、無事解決!実行できました!!

iOS 画面を(portrait)縦固定にしても、window が横画面サイズになる。

xcode8 general

全部縦固定していたはずなのに、なぜかipadだけランドスケープ(横画面)で起動する。。
ちょっとおかしいと思って色々調べたメモ


環境

  • xcode8
  • Mac OS El Capitan

症状

  • xcodeの設定で General で
    Devices : Universal で、
    Device Orientation: Portrait のみの設定
  • iPadで横画面状態で、アプリを起動

するとUIWindowでサイズを取得すると縦画面のサイズと違うサイズが取得される、
むしろ、縦より横のサイズが大きい!
横画面のサイズになっているっぽい。。

DevicesをiPhoneにし、Portrait のみでも結果同じだった。

画面サイズを取得して、UIViewとか、UIを作っているところが、
予想外の動きにになりまくり。。


対策

設定画面のGeneralの

  • Devices: Universalに。
  • info.plistファイルにて記述されている UISupportedInterfaceOrientations~ipad
    の中を UIInterfaceOrientationPortrait のみにする。

設定画面のDevicesでプルダウン切り替えでipadの内容が保持されているのはあとから知ったw

info.plist

〜
<key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
    </array>
    <key>UISupportedInterfaceOrientations~ipad</key>
    <array>
        <string>UIInterfaceOrientationPortrait</string>
    </array>
</dict>
</plist>
〜
  • General設定画面の Required full screen にチェックを入れる
xcode8 general
xcode8 general

ただ、iPadでは、マルチタスキング機能というものがあって(Slide OverやSplitView)が使えなくなってしまうようなのでご注意を。

参考記事さま http://qiita.com/jollyjoester/items/c8bb1592d01fdef663f9

adbでAndroid端末やエミュレータのファイルを覗く方法

adbで端末やエミュレータのファイルを覗く方法

1. ターミナルを開き、

2. adbでアクセスできるデバイスを確認


$ adb devices

3. adbで端末orエミュレータにアクセスしてファイルチェック

端末にログイン


$ adb -s emulator-5556 shell

対象ファイルがあるかチェック


$ ls -la /data/data/アプリのパッケージ名/files/test.png

※OSバージョンや端末によって使えるlinuxコマンドが限られていそう

端末のファイルをmac等ローカルPCにひっぱってくる


$ adb -s emulator-5556 pull /data/data/アプリのパッケージ名/files/test.png

アプリ内のファイルを確認する。Android Studio2.2でDDMSを開く方法備忘録

DDMSの開く方法

画面上部のメニューから

Tools -> Android -> Android Device Monitor

参考:http://stackoverflow.com/questions/39761453/no-shortcut-for-ddms-in-android-studio-2-2

ありがとうございます!!

Android2.2にアップデートしてから、
DDMSの見方がわからくなってしまってので忘れないようにメモ。。

zxingでQRコードを使っていて、AndroidOS6だけカメラ起動時にエラーがでる点解決方法

zxingでQRコードを読み取るアプリを作っていたのですが、
特定の端末だけカメラ起動時に、

「Androidのカメラに問題が発生しました。デバイスを再起動する必要があります。」

なんじゃこりゃ。。

色々検証してみるとAndroidOS6 (マシュマロ)だけの問題なような、。。

logcatで確認してみると、、


Attempt to invoke virtual method 'android.hardware.Camera$Parameters android.hardware.Camera.getParameters()' on a null object reference

こういうエラーが。。zxingライブラリの中身でエラー履いてて、
どうしようも。。

でズバリ解決方法は、
ライブラリアップデート!!!

build.gradle(app)


dependencies { 〜 compile 'com.journeyapps:zxing-android-embedded:3.3.0' 〜 }

3.2から3.3にしたら解決w

あと、androidOS6からか、、カメラの扱う許可ダイアログが表示された。。

参考サイト:
http://stackoverflow.com/questions/37685141/nullpointerexception-with-zxing-library-for-qr-scanning-android-app
https://github.com/journeyapps/zxing-android-embedded