대부분 windows xp 환경에서 설명되어 있는데
windows7도 크게 다르지 않지만 경로등이 조금 다르다.
JAVA버전에 따라 keytool 명령어도 옵션을 추가해 주어야 한다.
먼저 keytool로 debug.keystore에서 키값을 받아야 하는데...
debug.keysotre위치 -> c:\user\user-name\.android\ 아래 있음(windows7)
keytool은 JDk설치 폴더 아래 bin아래
c:\user\user-name\.android\keytool -list -v -keystore debug.keystore
위 처럼 실행하면 전체 키 값을 볼 수 있다.
실행하면 비번을 입력하라고 나오는데 개발용 암호는 android로 고정되어 있다.
실행 결과는 아래와 같다.
키 저장소 비밀번호 입력:
키 저장소 유형: JKS
키 저장소 제공자: SUN
키 저장소에 1개의 항목이 포함되어 있습니다.
별칭 이름: androiddebugkey
생성 날짜: 2012. 11. 12
항목 유형: PrivateKeyEntry
인증서 체인 길이: 1
인증서[1]:
소유자: CN=Android Debug, O=Android, C=US
발행자: CN=Android Debug, O=Android, C=US
일련 번호: 1826273a
적합한 시작 날짜: Mon Nov 12 14:23:21 KST 2012, 종료 날짜: Wed Nov 05 14:23:21 K
ST 2042
인증서 지문:
MD5: 5C:14:C7:FB:0A:72:CF:EE:40:8E:AA:CB:0F:16:B5:39
SHA1: F2:3E:AE:0E:DD:ED:02:73:8F:C1:59:D0:8C:C8:88:D4:5D:D8:12:A6
SHA256: 39:92:D4:56:A0:93:87:EF:44:88:E7:D0:88:E2:0D:98:99:AD:3A:B9:F0:
EE:06:29:82:0F:77:53:32:E0:C9:5A
서명 알고리즘 이름: SHA256withRSA
버전: 3
확장:
#1: ObjectId: 2.5.29.14 Criticality=false
SubjectKeyIdentifier [
KeyIdentifier [
0000: 59 67 6F 63 F6 DE EF 40 54 5C 7D D8 F8 13 15 30 Ygoc...@T\.....0
0010: 5D 6D 66 09 ]mf.
]
]
여기까지 실행후 아래 사이트로 가서 저 실행 결과 값의 MD5값을 입력하고 키 발급받기 클릭!
https://developers.google.com/maps/documentation/android/maps-api-signup
그러면 사용자 키와 더불어 친절하게 xml예제도 짧게 보여준다.
그런데 이거 언제부터 한글로 나왔었지...전엔 영문밖에 없었던듯 한데...
2012년 11월 14일 수요일
2012년 11월 2일 금요일
Microsoft BizSpark
MS에서 신생 IT기업을 지원하는 프로그램이다.
설립 3년미만, 연매출 100만달러 미만인 업체는 누구나 지원가능 하다.
지원받게 되면 MS에서 판매하는 대부분의 소프트웨어를
3년간 무상으로 이용가능한 프로그램이다.
자세한건 링크가서 확인
http://www.microsoft.com/bizspark/Default.aspx
이번에 사업자 내면서 신청해서 윈7 정품으로 설치!
설립 3년미만, 연매출 100만달러 미만인 업체는 누구나 지원가능 하다.
지원받게 되면 MS에서 판매하는 대부분의 소프트웨어를
3년간 무상으로 이용가능한 프로그램이다.
자세한건 링크가서 확인
http://www.microsoft.com/bizspark/Default.aspx
이번에 사업자 내면서 신청해서 윈7 정품으로 설치!
2012년 8월 20일 월요일
2012.08.20 잡설~
지원사업 통과되어 진행 해야 하고
그 덕분에 없던 인력이 추가될 예정이라
사무실 확장과 앞으로 애들 월급 걱정
지원사업 받아서 하는 프로젝트 진행에
먹고 살기 위해 외주 영업도 해야하고
역시 일은 한번에 몰려 오나보다 ㅎ
그 덕분에 없던 인력이 추가될 예정이라
사무실 확장과 앞으로 애들 월급 걱정
지원사업 받아서 하는 프로젝트 진행에
먹고 살기 위해 외주 영업도 해야하고
역시 일은 한번에 몰려 오나보다 ㅎ
2012년 8월 1일 수요일
2012년 8월 첫날 주저리
오랜만에 블로그 관리좀 하려고 들어 왔더니
내 블로그 우측 광고가 삼숭 겔3이다.
난 개인적으로 삼성을 좋아 하지 않는다.
정확히 말하면 싫어 한다.
특히나 내가 소프트워어 개발자이다보니
그네들의 방식을 더더욱 싫어 한다.
하드웨어 제조 능력은 인정한다.
하지만 하드웨어서 발생한 문제는 하드웨어로 해결 해야지
그걸 소프트웨어로 커버하고 눈가리고 아옹해서는 안된다고 생각한다.
그런 의미에서 그냥 하드웨어 제조나 하시고
소프트웨어는 제발 손 안댓으면 좋겠다.
그나저나...내 블로그에 저 광고 내 맘대로 변경하는 방법좀...ㅠㅠ
내 블로그 우측 광고가 삼숭 겔3이다.
난 개인적으로 삼성을 좋아 하지 않는다.
정확히 말하면 싫어 한다.
특히나 내가 소프트워어 개발자이다보니
그네들의 방식을 더더욱 싫어 한다.
하드웨어 제조 능력은 인정한다.
하지만 하드웨어서 발생한 문제는 하드웨어로 해결 해야지
그걸 소프트웨어로 커버하고 눈가리고 아옹해서는 안된다고 생각한다.
그런 의미에서 그냥 하드웨어 제조나 하시고
소프트웨어는 제발 손 안댓으면 좋겠다.
그나저나...내 블로그에 저 광고 내 맘대로 변경하는 방법좀...ㅠㅠ
2012년 6월 11일 월요일
APK 디컴파일 방법.
오늘은 Android 최종 package 형태인 apk 파일에 대해서 Decompile 하는 방법을 소개 하겠습니다.
최종 APK 파일이 나오기 까지는 아래 그림처럼 많은 단계를 거칩니다.
대충 간단하게 정리해보면 리소스 파일들과 java 컴파일된 dex 파일 그리고 signature 정보가 들어가게 됩니다.
여튼 자세한 정보는 여기를 참고 하시고… http://developer.android.com/guide/developing/building/index.html
우리가 열심히 개발한 소스는 classes.dex 라는 파일 안에 들어가게 되는데.. 이 dex 파일을 풀면 class 파일들이 나옵니다.
이 class 파일을.. decompile 하면 소스 코드가 보이는 것이죠..
이런 코드가
이렇게까지 디컴파일 됩니다.
그럼 자세한 decompile 순서를 알아보겠습니다.
- Apk 파일을 압축을 풉니다.
알집을 사용해도 되고.. 간단하게 jar xf hello.apk 하면 apk 파일이 풀립니다.
위 그림처럼 android manifest파일과 사용한 resource들 그리고 classes.dex 파일과 META-INF의 signature 정보들이 보입니다.
- Dex를 jar로 변환합니다.
Classes.dex 파일은 android의 dalvik 에서 사용하기 위한 일종의 jar 패키지 형태인데.. 이를 다시 jar로 변환이 가능합니다.
여기에서 간단히 쓸 수 있는 변환툴을 다운로드 할 수 있다.
실행해보면
Jarfile이 하나 생긴 것을 알 수 있다.
- Jar를 class로 압축을 풀어줍니다.
다시 jar xf classed_dex2jar.jar 하면 압축이 풀리면서.. class 파일들이 나온다.
Class 파일은 아시다시피 중간 바이너리 형태라 디컴파일이 가능하다.
- Class 파일을 디컴파일 하여 보는 툴을 사용하여 소스를 본다.
소스를 보기위해.. jd 라는 툴을 사용하면 된다.
http://java.decompiler.free.fr/?q=jdgui 여기서 다운 받을수 있다.
다운받아 간단히 실행하여 class 파일을 열어보면 소스가 나온다..
정말 무서운 세상이다…
NDK addr2line 사용방법
FFmpeg프로젝트 중에 계속해서 build fingerprint 라는 알수없는 로그가 발생하면서
실행중인 앱이 죽어 버리는 증상이 발생하고 있다.
뭔가 알아 볼수 없는 주소값인건 알겠는데 어찌 읽어야 하나 방법을 찾다가 발견했다.
아래와 같이 로그가 발생 했다면
06-11 13:27:17.275: I/DEBUG(1435): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-11 13:27:17.275: I/DEBUG(1435): Build fingerprint: 'generic/broadcom_cmp/cmp/:2.2/FRF91/132:jp/release'
06-11 13:27:17.275: I/DEBUG(1435): pid: 9504, tid: 9504 >>> net.jbong.FFmpegBasic <<<
06-11 13:27:17.275: I/DEBUG(1435): signal 11 (SIGSEGV), fault addr 00000008
06-11 13:27:17.275: I/DEBUG(1435): r0 00000000 r1 bef68370 r2 00000000 r3 00000001
06-11 13:27:17.275: I/DEBUG(1435): r4 00000000 r5 bef68370 r6 00000c60 r7 81a50e20
06-11 13:27:17.275: I/DEBUG(1435): r8 00000680 r9 4410eac8 10 4410eab4 fp 452090f4
06-11 13:27:17.275: I/DEBUG(1435): ip 00000003 sp bef68370 lr 810b6624 pc 810b65dc cpsr 60000010
06-11 13:27:17.425: I/DEBUG(1435): #00 pc 000b65dc /data/data/net.jbong.FFmpegBasic/lib/libbasicplayer.so
이하 생략
arm-linux-androideabi-addr2line.exe -f -e libbasicplayer.so 000b65dc
위와 같이 실행하면
다음과 같은 결과를 출력한다.
av_interleave_packet
D:\workspace2\FFmpegBasic/jni/ffmpeg/libavformat/utils.c:3239
실행중인 앱이 죽어 버리는 증상이 발생하고 있다.
뭔가 알아 볼수 없는 주소값인건 알겠는데 어찌 읽어야 하나 방법을 찾다가 발견했다.
아래와 같이 로그가 발생 했다면
06-11 13:27:17.275: I/DEBUG(1435): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
06-11 13:27:17.275: I/DEBUG(1435): Build fingerprint: 'generic/broadcom_cmp/cmp/:2.2/FRF91/132:jp/release'
06-11 13:27:17.275: I/DEBUG(1435): pid: 9504, tid: 9504 >>> net.jbong.FFmpegBasic <<<
06-11 13:27:17.275: I/DEBUG(1435): signal 11 (SIGSEGV), fault addr 00000008
06-11 13:27:17.275: I/DEBUG(1435): r0 00000000 r1 bef68370 r2 00000000 r3 00000001
06-11 13:27:17.275: I/DEBUG(1435): r4 00000000 r5 bef68370 r6 00000c60 r7 81a50e20
06-11 13:27:17.275: I/DEBUG(1435): r8 00000680 r9 4410eac8 10 4410eab4 fp 452090f4
06-11 13:27:17.275: I/DEBUG(1435): ip 00000003 sp bef68370 lr 810b6624 pc 810b65dc cpsr 60000010
06-11 13:27:17.425: I/DEBUG(1435): #00 pc 000b65dc /data/data/net.jbong.FFmpegBasic/lib/libbasicplayer.so
이하 생략
arm-linux-androideabi-addr2line.exe -f -e libbasicplayer.so 000b65dc
위와 같이 실행하면
다음과 같은 결과를 출력한다.
av_interleave_packet
D:\workspace2\FFmpegBasic/jni/ffmpeg/libavformat/utils.c:3239
위처럼 실행할때 so파일은 libs폴더가 아니고 obj/local/armeabi 아래 있는 파일을 사용해야 한다.
이제 어디가 문제인지 찾았으니 수정을 해야겠다.
2012년 6월 1일 금요일
Android - ndk-gdb
AndroidManifest.xml
<application
android:icon="@drawable/showplay_launcher"
android:label="@string/app_name" android:debuggable="true">
...
debuggable 확인
하지만 현재 작업중인 ffmpeg에서는 뭔가가 때문에 저렇게 하고 ndk-build하면
에러 나면서 정상진행 되지 않는다.
뭐가 문제 일까...
<application
android:icon="@drawable/showplay_launcher"
android:label="@string/app_name" android:debuggable="true">
...
debuggable 확인
하지만 현재 작업중인 ffmpeg에서는 뭔가가 때문에 저렇게 하고 ndk-build하면
에러 나면서 정상진행 되지 않는다.
뭐가 문제 일까...
피드 구독하기:
글 (Atom)
-
프로젝트 진행중에 필요하여 찾아보았더니 역시나 잘 구현된것들이 있었다. 간편하게 사용할 수 있도록 일부 수정 하였다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 2...
-
이번 프로젝트를 진행 하면서 서버와 통신시에 전송할 데이터를 암호화 하여 전송하기로 결정하였다. 그에 따라서 기존 자바 소스로 구현되어 있는 암호화를 코틀린으로 구현 하였다. 아래가 그 코드이다. import android.util.Base6...
-
LS산전의 PLC장비와 RS232통신을 하여 데이터를 읽어 와야 하는 프로젝트를 진행 중이다. 현장에서 실제 통신할 장비는 라즈베리파이인데 일단 윈도우에서 테스트를 진행 하였다. 어차피 파이썬으로 코딩도 해야 하고... 초반에 PLC와 통신에서...
2024년 여섯번째 도서 리뷰 [무엇이 1등 팀을 만드는가]
한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. 올해의 마지막 서평이다. 무엇이 1등 팀을 만드는가.... 시작하기에 앞서 제목이 과하지 않은가 하는 생각이 든다. 1등 팀이라....예전 어느 개그 프로에서 ...