【Unity】3.5など古いバージョンでのAndroidビルド時のエラー

どうしても古いバージョンでビルドする必要があり、iOSは問題無かった物の、Android側でビルド時にエラーが起きていたので調査した。

 

起こったエラー:「Building DEX Failed」

http://blog.be-style.jpn.com/article/53229893.html
コメント欄にある、「【対処】暫定的な対処ですが android-sdk/build-tools/17.0.0/ の中のものを全て android-sdk/platform-tools/ へ複製する」でokだった。

 

mac環境の場合は、上記まででokだったものの、
windowsでやった見た時は、さらに、上記を行っても、「Error building Player: Win32Exception: ApplicationName='/xxxxx/android_sdk/tools/apkbuilder'...」
というエラーも出てしまった。

 

こちらは、https://github.com/ACSOP/android_sdk/blob/master/apkbuilder/etc/apkbuilderにある物をコピーして、 android_SDK/tools/ 以下に持ってくればokだった。

【unity】スレッドでudp通信受信時、アプリを終了する時に固まる?

unity(c#)でudp通信を受信する処理をスレッドに書いていたが、
OnApplicationQuitにthread.Abort();を入れても、
そこで止まっているのか、アプリがフリーズしてしまっていた。
(unity editorの状態ですら落ちていた)

Thread周りが問題なのかな…と思っていたが、
client = new UdpClient(port);して作成していた、
UdpClientをクローズしていなかった事が問題の模様。
(Tread関係なく、ここで止まっていた)
client.Close();をAbortの後に入れることで、落ちなくはなった。

google maps httpsから表示されない?

https内のページに置いた場合、
単純に、httpsの時の場合の指定をしなければいけないだけだった。


表示されなかったケース:
<script src="http://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></scrip

t>

表示されたケース:
<script src="https://maps.google.com/maps/api/js?sensor=false" type="text/javascript"></scrip

t>

読み込みページに依存する、以下の方法でも表示された。
<script src="//maps.google.com/maps/api/js?sensor=false" type="text/javascript"></scrip

t>

【iOS】phpからAESの文字列を受け取り、それをDecryptしたい

例えば…
共通の鍵:dylug94fp31lsift があり、それを使って、
342075b10a0bbf52d09b5bad92cbed66
というphpから渡された文字列をDecryptしたいとする。

その場合、一旦、バイト配列に変換する必要があった。

http://iphoneappcode.blogspot.jp/2012/04/aes-encryption-and-decryption.html
(↑サイトの、dataFromHexStringという関数を参考にした)

XmlPullParserException: PI must not start with xml .. でパースできない(BOM付きxmlの扱い)

utf-8xml、bom付きのファイルを解析する必要があったが、
そのままPullParserに入れると落ちてしまった。

ファイルそのものの保存形式を変えたいと真っ先に思ったが、
諸々の都合でそれは出来ず…

調べると、やはりbomを何とかしないといけないようで、
HttpGetで取得したbyte array(下記の変数result)の値を、

String xmlStr = "";

if(result[0] == (byte)0xEF && result[1] == (byte)0xBB && result[2] == (byte)0xBF){

 //UTF-8 BOM付きであれば頭削除

 xmlStr = new String(result, 3, result.length - 3 , "UTF-8");

}else{

 xmlStr =  new String(result, "UTF-8");

}

というように、頭にbomがあればトリムして文字列化した物を
PullParserに渡すようにしたら、無事エラーは起きなくなった。

参考:http://www.geekality.net/2011/05/23/java-how-to-deal-with-the-bom-in-a-unicode-inputstream/

iOS SDK5で、iOS3.1.3向けに書き出す場合

libSystem.B.dylibをOptionalに設定する必要がある。


※もし無ければ、自分で追加して設定する必要がある模様です。