이 블로그 검색

2017년 12월 12일 화요일

전역 변수를 사용했을시 직면할 수 있는 버그
 => 데이터가 리프레쉬가 안되는 현상.
 변수의 데이터가 계속 쌓이면서 초기화가 안되는 문제가 있을때 자신이 전역변수를 사용하고 있지 않는지 체크해 볼 필요가 있다.

2017년 12월 1일 금요일

JSON Doc 에서 Array나 Object를 못 가져올 때 (Unable to get access Array or Object from JSON in Javascript)

답은 JSON.stringfy() 로 doc을 읽어 들인 후 ==> JSON.parse()로 다시 바꿔줘야 한다.
Express 등에서 디비에서 떨궈서 받은 Json 데이터 안에 Array나 객체에 접근 못하는 경우가 종종 있다. 콘솔이나 로그에는 명확히 찍히기 때문에 매우 당황 스럽다.
 이는 JavaScript 의 JSON 이 우리가 흔히 말하는 JSON 포맷과 다르기 때문에 발생한다. 즉 자바스크립 버젼의 JSON을 JSON 인터페이스 포맷으로 바꿔야 한다. 그 후 다시 JSON.parse()로 바꿔 줌.
방법은
let originalJson = JSON.stringfy(javaScriptJson)
let parsedJson = JSON.parse(originalJson);

2017년 11월 28일 화요일

ionic2 Android build and Release

우선 프로젝트 루트 폴더의 config.xml 파일에서 widget id와 버전(version)을 체크하고 변경해 준다. (이게 같으면 나중에 다 해놓구 플레이 스토어에 안올라감... ;;)
그리고 해당 프로젝트 루트 폴더에서 CLI로 다음과 같이 입력
$ ionic cordova build --release android
그러면 android-relase-unsigned.apk 가 나온다.
(이 apk 파일은 프로젝트폴더\platforms\android\build\outputs\apk\ 에 생성되니 헤메지 말자)
이 녀석을 Sign해 줘야한다.
따라서 Keytool 이라는 명령어(JDK)를 이용해서 사인을 할 key를 만들어줘야 한다. (이미 key가 있으면 이 과정은 생략하고 jarsigner를 이용해 sign을 하면 된다.)
keytool은 JDK 명령어 이므로, Java path(C:\Program Files\Java\jdk1.8.0_152\bin)를 시스템 환경 변수에 잡아 줘야 정신건강에 이롭다.
keytool -genkey -v -keystore my-release-key.keystore -alias alias_name -keyalg RSA -keysize 2048 -validity 10000
위의 명령어를 이용해서 사인키를 만들었으면, my-release-key.keystore 라는 파일이 현재의 폴더에 생성될거임
그럼 역시 JDK 명령어인 jarsigner를 이용해서 다음과 같이 사인해줌.(즉 키가 이미 있음위의 keytool 과정은 생략해도 됨)
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore my-release-key.keystore android-release-unsigned.apk alias_name
당연히 alias_name에 바꾸고 싶은 이름을 넣어야 함. 근데 주의할건 이 alias_name 이 keytool 명령어에서 사용했던 alias_name 이랑 일치해야 함. 
(이때 가끔 아래와 같이 암호를 제대로 넣었는데오 저런 재수없는 에러가 나올수 있는데, 이건 해당 폴더에 쓰기 권한 설정이 없어서 그런거임. (회사컴등으로 작업할때 나올 수 있음) 폴더에 권한을 주면 됨.
Enter Passphrase for keystore:
jarsigner: unable to create: android-release-unsigned.apk.sig)

그러면 그냥 똑같은 파일이름으로 android-release-unsigned.apk 가 생성되는데 사실 이건 unsigned 가 아니고 sign 된 거임. 이걸 zipalign 이라는 Android SDK 빌드툴로 압축해줘야 함. (당연히 안드로이드도 환경 변수로 잡아야 정신건강에 이로움 - 안드로이드 빌드 툴은 보통 ~Users\AppData\Local\Android\Sdk\build-tools\ 이라는 깊고 깊은 곳에 있음.)
zipalign -v 4 android-release-unsigned.apk HelloWorld.apk
이렇게 해주면 최종 Signed Release apk 가 생성됨
(참고: 위의 과정을 c:\signing 와 같은 정해진 폴더에 android-release-unsigned.apk, my-release-key.keystore 같은 파일들을 때려넣고, 자바와 안드로이드 패쓰를 잡고 해당 폴더에서 작업을 하는게 편함)
플레이스토어에서 올리는 법