홍보 동영상
보통 안드로이드 프로그래밍시 게임 저장 / 게임 로드를 구현할 때에 다음과 같은 코드를 이용하여 입출력 하게 된다.
FileOutputStream fos;
fos = mContext.openFileOutput("option.and",Context.MODE_PRIVATE);
하지만 우리의 베가 형제들은 이것을 그냥 보고 있지 않았으니...
배터리 탈/부착 시 파일이 사라지는 경우가 있다
이에 따른 해결 방안으로 SharedPrefrences 를 사용하여 코딩한다.
SharedPreferences자체에는 Byte 배열로 입출력하는게 존재 하지 않으므로...
나는 String 으로 해결하기로 결론을 내렸다
하지만, byte 배열에서 String 로 변환하는 동안 한가지 문제가 발생하였다
중간에 '0' 의 값을 가지면 String 가 생성이 덜되는 문제이다
해당 문제는 Base64 로 인코딩을 해 버렸다..!
실제 게임 저장에 쓰인 플로우는 다음과 같다
1. Data 를 byte 배열로 변환
2. Base64 Encoding
3. Base64 Encoding 를 기반으로 hashkey 구함
4. SharedPrefrences 를 아용하여 저장
기본적인 SharedPreferences구현법 이다.
코드 하이라이트가 줄바꿈이 안되네요... 혹시 아시는분 있으시면 팁을 ㅠ.ㅠ...
기본적인 SharedPreferences구현법 이다.
SharedPreferences pref = gActivity.getSharedPreferences("SaveData",Context.MODE_PRIVATE);
Editor e = pref.edit();
e.putString("data","This is the SaveData!");
e.commit();
코드 하이라이트가 줄바꿈이 안되네요... 혹시 아시는분 있으시면 팁을 ㅠ.ㅠ...
상당히 길지만... 요런 희한한 에러를 내면서 뻗어버린다..
원인은 TStore ARM Library 에 있는듯하다.
수정은 TStore 에서 해줘야 할것같고..
01-19 15:21:21.692 I/DEBUG (23644): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
01-19 15:21:21.692 I/DEBUG (23644): Build fingerprint: 'samsung/yakjukr/maguro:4.0.1/ITL41F/M420KREK24:user/release-keys'
01-19 15:21:21.692 I/DEBUG (23644): pid: 24030, tid: 24032 >>> -- <<<
01-19 15:21:21.692 I/DEBUG (23644): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000020
01-19 15:21:21.692 I/DEBUG (23644): r0 00000000 r1 000106f8 r2 000106f8 r3 40a2d1e8
01-19 15:21:21.692 I/DEBUG (23644): r4 40b6d028 r5 4089bc58 r6 024c457f r7 000106f8
01-19 15:21:21.692 I/DEBUG (23644): r8 40b6d000 r9 000106f8 10 40b6d100 fp 408275c4
01-19 15:21:21.692 I/DEBUG (23644): ip 00000005 sp 100ffdd0 lr 40817124 pc 408271dc cpsr 80000010
01-19 15:21:21.692 I/DEBUG (23644): d0 0000000000000000 d1 0000000000000000
01-19 15:21:21.692 I/DEBUG (23644): d2 0000000000000000 d3 0000000000000000
01-19 15:21:21.700 I/DEBUG (23644): d4 0000000000000000 d5 0000000000000000
01-19 15:21:21.700 I/DEBUG (23644): d6 0000000000000000 d7 0000000000000000
01-19 15:21:21.700 I/DEBUG (23644): d8 0000000000000000 d9 0000000000000000
01-19 15:21:21.700 I/DEBUG (23644): d10 0000000000000000 d11 0000000000000000
01-19 15:21:21.700 I/DEBUG (23644): d12 0000000000000000 d13 0000000000000000
01-19 15:21:21.700 I/DEBUG (23644): d14 0000000000000000 d15 0000000000000000
01-19 15:21:21.700 I/DEBUG (23644): d16 0000000000000001 d17 3ff0000000000000
01-19 15:21:21.700 I/DEBUG (23644): d18 0707070703030303 d19 0000000000000000
01-19 15:21:21.700 I/DEBUG (23644): d20 0100010001000100 d21 0100010001000100
01-19 15:21:21.700 I/DEBUG (23644): d22 0000000000000000 d23 0000000000000000
01-19 15:21:21.700 I/DEBUG (23644): d24 0000000000000000 d25 0000000000000000
01-19 15:21:21.700 I/DEBUG (23644): d26 0100010001000100 d27 0100010001000100
01-19 15:21:21.700 I/DEBUG (23644): d28 0100010001000100 d29 0100010001000100
01-19 15:21:21.700 I/DEBUG (23644): d30 0001000000010000 d31 0001000000010000
01-19 15:21:21.700 I/DEBUG (23644): scr 80000012
01-19 15:21:21.700 I/DEBUG (23644):
01-19 15:21:21.833 I/DEBUG (23644): #00 pc 000431dc /system/lib/libdvm.so
01-19 15:21:21.833 I/DEBUG (23644): #01 pc 00033120 /system/lib/libdvm.so (_Z21dvmHeapBitmapScanWalkP10HeapBitmapPFvP6ObjectPvS3_ES3_)
01-19 15:21:21.833 I/DEBUG (23644): #02 pc 000435f4 /system/lib/libdvm.so (_Z24dvmHeapScanMarkedObjectsv)
01-19 15:21:21.833 I/DEBUG (23644): #03 pc 000337f0 /system/lib/libdvm.so (_Z25dvmCollectGarbageInternalPK6GcSpec)
01-19 15:21:21.833 I/DEBUG (23644): #04 pc 0007bf40 /system/lib/libdvm.so
01-19 15:21:21.833 I/DEBUG (23644): #05 pc 0005fafa /system/lib/libdvm.so
01-19 15:21:21.833 I/DEBUG (23644): #06 pc 00012c1c /system/lib/libc.so (__thread_entry)
01-19 15:21:21.841 I/DEBUG (23644): #07 pc 00012770 /system/lib/libc.so (pthread_create)
01-19 15:21:21.841 I/DEBUG (23644):
01-19 15:21:21.841 I/DEBUG (23644): code around pc:
01-19 15:21:21.841 I/DEBUG (23644): 408271bc e1a04000 e59f01e0 e1a07001 e79f5000
01-19 15:21:21.841 I/DEBUG (23644): 408271cc e5940000 e59530b0 e1500003 0a00003a
01-19 15:21:21.841 I/DEBUG (23644): 408271dc e590c020 e31c0101 0a000011 ebfffeb9
01-19 15:21:21.841 I/DEBUG (23644): 408271ec e5940000 e5903020 e3130202 08bd81f0
01-19 15:21:21.841 I/DEBUG (23644): 408271fc e594e008 e2846010 e35e0000 08bd81f0
01-19 15:21:21.841 I/DEBUG (23644):
01-19 15:21:21.841 I/DEBUG (23644): code around lr:
01-19 15:21:21.841 I/DEBUG (23644): 40817104 e0888404 e16fcf16 e58d3004 e1a0100a
01-19 15:21:21.841 I/DEBUG (23644): 40817114 e1a02009 e1c66c33 e088018c e12fff3b
01-19 15:21:21.841 I/DEBUG (23644): 40817124 e3560000 e59d3004 1afffff5 e5971010
01-19 15:21:21.841 I/DEBUG (23644): 40817134 e597800c e068e001 e1a0142e e2844001
01-19 15:21:21.841 I/DEBUG (23644): 40817144 e2855c01 e1510004 2affffe7 e28dd00c
01-19 15:21:21.841 I/DEBUG (23644):
01-19 15:21:21.841 I/DEBUG (23644): stack:
01-19 15:21:21.841 I/DEBUG (23644): 100ffd90 00000000
01-19 15:21:21.841 I/DEBUG (23644): 100ffd94 00243466
01-19 15:21:21.841 I/DEBUG (23644): 100ffd98 000000e0
01-19 15:21:21.841 I/DEBUG (23644): 100ffd9c 000000e0
01-19 15:21:21.841 I/DEBUG (23644): 100ffda0 000106f8
01-19 15:21:21.841 I/DEBUG (23644): 100ffda4 41e07e98
01-19 15:21:21.841 I/DEBUG (23644): 100ffda8 00000000
01-19 15:21:21.841 I/DEBUG (23644): 100ffdac 80000000
01-19 15:21:21.841 I/DEBUG (23644): 100ffdb0 40a2e0b8
01-19 15:21:21.841 I/DEBUG (23644): 100ffdb4 40827158 /system/lib/libdvm.so
01-19 15:21:21.841 I/DEBUG (23644): 100ffdb8 40b6d008
01-19 15:21:21.841 I/DEBUG (23644): 100ffdbc 4089bc58
01-19 15:21:21.841 I/DEBUG (23644): 100ffdc0 064c457f
01-19 15:21:21.841 I/DEBUG (23644): 100ffdc4 000106f8
01-19 15:21:21.841 I/DEBUG (23644): 100ffdc8 df0027ad
01-19 15:21:21.841 I/DEBUG (23644): 100ffdcc 00000000
01-19 15:21:21.841 I/DEBUG (23644): #00 100ffdd0 00001400
01-19 15:21:21.841 I/DEBUG (23644): 100ffdd4 00140100
01-19 15:21:21.841 I/DEBUG (23644): 100ffdd8 024c457f
01-19 15:21:21.841 I/DEBUG (23644): 100ffddc 000107b4
01-19 15:21:21.841 I/DEBUG (23644): 100ffde0 40b6d000
01-19 15:21:21.841 I/DEBUG (23644): 100ffde4 40817124 /system/lib/libdvm.so
01-19 15:21:21.841 I/DEBUG (23644): #01 100ffde8 4089bc58
01-19 15:21:21.841 I/DEBUG (23644): 100ffdec 80000000
01-19 15:21:21.841 I/DEBUG (23644): 100ffdf0 ffffffff
01-19 15:21:21.841 I/DEBUG (23644): 100ffdf4 000106e0
01-19 15:21:21.841 I/DEBUG (23644): 100ffdf8 000106f8
01-19 15:21:21.841 I/DEBUG (23644): 100ffdfc 40896f90
01-19 15:21:21.841 I/DEBUG (23644): 100ffe00 fffffe4c
01-19 15:21:21.841 I/DEBUG (23644): 100ffe04 7fffffff
01-19 15:21:21.841 I/DEBUG (23644): 100ffe08 00000000
01-19 15:21:21.841 I/DEBUG (23644): 100ffe0c 087d51d6
01-19 15:21:21.841 I/DEBUG (23644): 100ffe10 4089bc58
01-19 15:21:21.841 I/DEBUG (23644): 100ffe14 408275f8 /system/lib/libdvm.so
01-19 15:21:22.341 W/dalvikvm(24030): threadid=4: spin on suspend #1 threadid=2 (pcf=0)
01-19 15:21:23.091 W/dalvikvm(24030): threadid=4: spin on suspend #2 threadid=2 (pcf=0)
01-19 15:21:23.091 I/dalvikvm(24030): "Compiler" daemon prio=5 tid=4 VMWAIT
01-19 15:21:23.091 I/dalvikvm(24030): | group="system" sCount=0 dsCount=0 obj=0x417f0de8 self=0x1d7960
01-19 15:21:23.091 I/dalvikvm(24030): | sysTid=24034 nice=0 sched=0/0 cgrp=default handle=1268592
01-19 15:21:23.091 I/dalvikvm(24030): | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
01-19 15:21:23.091 I/dalvikvm(24030): at dalvik.system.NativeStart.run(Native Method)
01-19 15:21:23.091 I/dalvikvm(24030):
01-19 15:21:23.091 I/dalvikvm(24030): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 15:21:23.091 I/dalvikvm(24030): | group="system" sCount=1 dsCount=0 obj=0x417ee5a0 self=0x1e3688
01-19 15:21:23.091 I/dalvikvm(24030): | sysTid=24032 nice=0 sched=0/0 cgrp=default handle=1656784
01-19 15:21:23.091 I/dalvikvm(24030): | schedstat=( 0 0 0 ) utm=2 stm=1 core=0
01-19 15:21:23.091 I/dalvikvm(24030): at dalvik.system.NativeStart.run(Native Method)
01-19 15:21:23.091 I/dalvikvm(24030):
01-19 15:21:23.294 D/dalvikvm( 178): GC_EXPLICIT freed 66K, 33% free 23548K/34631K, paused 2ms+5ms
01-19 15:21:23.841 W/dalvikvm(24030): threadid=4: spin on suspend #3 threadid=2 (pcf=0)
01-19 15:21:23.848 I/dalvikvm(24030): "Compiler" daemon prio=5 tid=4 VMWAIT
01-19 15:21:23.848 I/dalvikvm(24030): | group="system" sCount=0 dsCount=0 obj=0x417f0de8 self=0x1d7960
01-19 15:21:23.848 I/dalvikvm(24030): | sysTid=24034 nice=0 sched=0/0 cgrp=default handle=1268592
01-19 15:21:23.848 I/dalvikvm(24030): | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
01-19 15:21:23.848 I/dalvikvm(24030): at dalvik.system.NativeStart.run(Native Method)
01-19 15:21:23.848 I/dalvikvm(24030):
01-19 15:21:23.848 I/dalvikvm(24030): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 15:21:23.848 I/dalvikvm(24030): | group="system" sCount=1 dsCount=0 obj=0x417ee5a0 self=0x1e3688
01-19 15:21:23.848 I/dalvikvm(24030): | sysTid=24032 nice=0 sched=0/0 cgrp=default handle=1656784
01-19 15:21:23.848 I/dalvikvm(24030): | schedstat=( 0 0 0 ) utm=2 stm=1 core=0
01-19 15:21:23.848 I/dalvikvm(24030): at dalvik.system.NativeStart.run(Native Method)
01-19 15:21:23.848 I/dalvikvm(24030):
01-19 15:21:24.598 W/dalvikvm(24030): threadid=4: spin on suspend #4 threadid=2 (pcf=0)
01-19 15:21:24.598 I/dalvikvm(24030): "Compiler" daemon prio=5 tid=4 VMWAIT
01-19 15:21:24.598 I/dalvikvm(24030): | group="system" sCount=0 dsCount=0 obj=0x417f0de8 self=0x1d7960
01-19 15:21:24.598 I/dalvikvm(24030): | sysTid=24034 nice=0 sched=0/0 cgrp=default handle=1268592
01-19 15:21:24.598 I/dalvikvm(24030): | schedstat=( 0 0 0 ) utm=0 stm=0 core=0
01-19 15:21:24.598 I/dalvikvm(24030): at dalvik.system.NativeStart.run(Native Method)
01-19 15:21:24.598 I/dalvikvm(24030):
01-19 15:21:24.598 I/dalvikvm(24030): "GC" daemon prio=5 tid=2 RUNNABLE
01-19 15:21:24.598 I/dalvikvm(24030): | group="system" sCount=1 dsCount=0 obj=0x417ee5a0 self=0x1e3688
01-19 15:21:24.598 I/dalvikvm(24030): | sysTid=24032 nice=0 sched=0/0 cgrp=default handle=1656784
01-19 15:21:24.598 I/dalvikvm(24030): | schedstat=( 0 0 0 ) utm=2 stm=1 core=0
01-19 15:21:24.598 I/dalvikvm(24030): at dalvik.system.NativeStart.run(Native Method)
01-19 15:21:24.598 I/dalvikvm(24030):
01-19 15:21:24.700 I/BootReceiver( 178): Copying /data/tombstones/tombstone_07 to DropBox (SYSTEM_TOMBSTONE)
01-19 15:21:24.716 I/ActivityManager( 178): Process - (pid 24030) has died.
01-19 15:21:24.716 W/ActivityManager( 178): Force removing ActivityRecord{41b200a0 -/.SamDefenseIIActivity}: app died, no saved state
01-19 15:21:24.716 I/WindowManager( 178): WIN DEATH: Window{41edad40 -.SamDefenseIIActivity paused=false}
01-19 15:21:24.716 W/WindowManager( 178): Force-removing child win Window{41ee0850 SurfaceView paused=false} from container Window{41edad40 -.SamDefenseIIActivity paused=false}

