http://helloworld.naver.com/helloworld/textyle/8794

참고






일단 NDK 빌드환경을 만들어 보도록 하겠습니다.


1. 설치전 준비사항

  • Java의 필수 설치 필요함. 환경변수 설정도 완료 필요함
  • sdk설치. 나중에 머 어쩌고 뜨는거 보기 싫다면

2. NDK 다운로드


3. 압축을 풀고 싶은곳에 풀도록 합니다. 나중에 세팅때문에 패스가 좀 짧으면 좋기는 합니다만


4. Cygwin설치

  • 윈도우 환경에서 리눅스처럼 사용하도록 만들어진 녀석인데, 편하기도 하고 안 편하기도 함.
  • Site : http://www.cygwin.com

5. Cygwin설치 상세
  • Install from Internet선택
  • 드라이브 바로 아래가 편함... / All Users
  • 미러사이트를 선택해야하는데... 아무거나 해도 되지만. http://ftp.daum.net/cygwin/ 이걸로 한다.
  • 다운로드할 패키지를 선택함
    - devel/gcc-core: GNU Compiler Collection (C, OpenMP)
    - devel/gcc-g++: GNU Compiler Collection(C++)
    - devel/make: The GNU version of the 'make' utility


6. Cygwin bashrc수정

  • 설치된 경로 : C:\cygwin\home\[계정명]\.bashrc
* 저는 C:\cygwin에 설치하였습니다. 파일이 존재하지 않으면 cygwin을 한번 실행한후에 다시 들어가면 나옵니다.
  • 추가해야 할 내용. (제일 아래에 추가하시면 됩니다.)
PATH=$PATH:.:/cygdrive/c/cygwin/bin:/cygdrive/c/[NDK설치경로]:/cygdrive/c/[SDK설치경로]/tools:/cygdrive/c/[SDK설치경로]/platform-tools
export PATH

NDK_PROJECT_PATH=.
export NDK_PROJECT_PATH


7. 확인

  • exit하여서 나오고 다시 shell을 실행하고, adb를 쳤을때 당황스럽지 않으면 완료 된것임

출처 - http://mrgamza.tistory.com/42


이전에 인터넷에서 나와 있는 녀석들은 이클립스를 이용하여 개발된 버전들이 아니라서, 그냥 cygwin에서 쳐서 해결을 하였던 부분들이 많았음.

그래도 이제 좀 편해졌으니 다행이긴 하지만...

NDK 다운로드 등에 대한 부분은 저는 설명을 따로 하지는 않겠음.

1. Java Class File 만들기

다들 아시겠지만... C파일과 Interface 역활을 하여줄 Class 파일이 존재하여야 한다.

그렇게 어렵지는 않으니 하나 하나 하다보면 빌드완성을 보게 될것임.

다음과 같이 작성하도록 함.

1
2
3
4
5
6
7
8
9
10
11
public class NativeCall
{
    static
    {
        // {project-path}/libs/armeabi/libhellojni_lib.so 파일을 읽어들입니다.
        System.loadLibrary("hellojni_lib");
    }
     
    public native String getJNIMessage(); // String형식으로 데이터를 가져옴
    public native int add(int a, int b); // 메소드 이름처럼 두숫자를 더해서 리턴
}


2. Java Class File로 jni Header File(.h) 만들기

위에서 Java Class파일을 만들었기 때문에, 빌드를 한번 해주게 된다면 {project-path}/bin/classes/ 폴더 아래에 자신이 만든 package name 아래에 .class파일들이 슬며시 들어가 있습니다. 이번 작업이 안된다면, 꼭 Clean이나 Build를 한번 해주길 바람. 또한 javah 관련하여서, 물어보지 말길 바람. 안드로이드 개발 작업하면서 path를 지정안해둔것은 개발 안하겠다는 소리와 같으므로...


C:{project-path}/bin>javah -classpath ./classes/ -jni com.example.hellojni.NativeCall


다르게는 이렇게 하셔도 됩니다.


C:{project-path}/bin/classes>javah -jni com.example.hellojni.NativeCall


위와 같이 저는 package name이 com.example.hellojni입니다. 물론 기본 패키지명 아래에 Java Class를 만들었고요.


다른점은 .h파일이 생성되는 위치라고 생각하시면 됩니다. 자신이 작업한 폴더에 파일이 생성되겠죠?


이 생성된 파일을 다음의 위치로 옮깁니다.


{project-path}/jni/


몰론 처음에는 존재하지 않는 폴더입니다.

탐색기에서 작업을 하셔서 옮기시면 손쉽게 옮기시리라 믿습니다.


이렇게 옮겼는데, 이클립스에서 파일이 존재하지 않는다고 생각되시면, 프로젝트를 클릭하시고, F5를 눌러주시기 바랍니다. 새로고침.


3. .c 파일 만들기

jni가 C로 만든 녀석들을 호출하는것은 당연히 알고 있으시리라고 믿습니다. 그래서 빌드를 할수 있도로 C파일을 작업하여 줍니다. 기본적으로 현재 {project-path}/jni/에 존재하는 h파일에 대해서, 작성을 하여 주면 되는데요.


/jni/위에 마우스 오른쪽 클릭 > NewFile > 만들 파일명

위에 저희는 hellojni_lib로 사용을 하기로 하였죠? 통일성을 위해서, hellojni_lib.c로 지정하여 줍니다.


그리고 다음을 추가하여 줍니다.


1
2
3
4
5
6
7
8
9
10
11
#include "com_example_hellojni_NativeCall.h"
 
JNIEXPORT jstring JNICALL Java_com_example_hellojni_NativeCall_getJNIMessage(JNIEnv *env, jobject obj)
{
    return (*env)->NewStringUTF(env, "Hello JNI!");
}
 
JNIEXPORT jint JNICALL Java_com_example_hellojni_NativeCall_add(JNIEnv *env, jobject obj, jint a, jint b)
{
    return a + b;
}
분명히 위와 같이 하면 안된다고 말씀하시는 분들이 있으실것 같아서, 설명을 드리자면...
저희가 저위에서 Java Class를 만들고, 그 아래에서 .h파일을 만들었습니다. 그 header 파일 안에 함수원형이 존재하게 되는데요. 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class com_example_hellojni_NativeCall */
 
#ifndef _Included_com_example_hellojni_NativeCall
#define _Included_com_example_hellojni_NativeCall
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     com_example_hellojni_NativeCall
 * Method:    printFromJNI
 * Signature: ()Ljava/lang/String;
 */
JNIEXPORT jstring JNICALL Java_com_example_hellojni_NativeCall_getJNIMessage
  (JNIEnv *, jobject);
 
/*
 * Class:     com_example_hellojni_NativeCall
 * Method:    Add
 * Signature: (II)I
 */
JNIEXPORT jint JNICALL Java_com_example_hellojni_NativeCall_add
  (JNIEnv *, jobject, jint, jint);
 
#ifdef __cplusplus
}
#endif
#endif
자... 위에서 저는 생성된 원형을 가져와서 파라메터의 이름만 정의를 하여 주었습니다. JNI에 대한 심도 깊은 부분은 저도 공부를 하고 있는지라... 함수는 잘 모릅니다. 질문하셔도 잘 모릅니다. 아무래도 저 위에 부분이 기본적인듯. 문자 만들기와 머 그런정도... 나머지 문법은 C++을 따르기 때문에 그냥 하시면 됩니다.

4. Android.mk 파일 생성
/jni/에 파일을 하나 더 생성하도록 합니다.
Android.mk 파일입니다. 다음과 같이 타이핑하여 줍니다.

1
2
3
4
5
6
7
8
LOCAL_PATH := $(call my-dir)
 
include $(CLEAR_VARS)
 
LOCAL_MODULE := hellojni_lib
LOCAL_SRC_FILES := hellojni_lib.c
 
include $(BUILD_SHARED_LIBRARY)
일단 이렇게 까지 합니다. 다른 분들은 cygwin에서 ndk-build를 하면 된다고 하는데, 저랑 안맞나 봅니다. 정말 잘 안되서... (사실적으로 폴더 변경등을 하여서 적용하면 될것 같은데...) 이것보다 더 쉬운 방법을 찾아 나섰습니다.


5. Eclipse NDK 설정

프로젝트명에 마우스 올리시고, 프로젝트 설정으로 이동을 합니다. 단축키 Alt + Enter

탭에서 Builders를 선택하고, New를 선택하여 주세요.

그렇게 되면, type을 물어보는데. Program을 선택하여 주도록 합니다.

그리고 다음과 같이 설정하여 주도록 합니다.


첫번째 탭



두번째 탭




세번째 탭





이렇게 하시고, 실행을 하시거나, Clean을 누르게 되면, ndk-build.cmd가 자동으로 실행이 되며, 빌드가 자동으로 됩니다.

터미널에 저런식이 아니고, 빨갛게 나오게 된다면, 잘못하신겁니다.



끝.


출처 http://mrgamza.tistory.com/48



일단은 자바 1.7로 맞추고, 안드로이드 버전을 4.4가 아닌 상태로 만들게 되면,

다음과 같은 메세지가 나오게 된다.


Using 1.7 requires compiling with Android 4.4 (KitKat); currently using API 10


이게 무슨 소리인지는 짧은 영어이므로, 설명은 안해주어도 상관이 없을듯 싶지만.

1.7을 사용하려면 4.4로 컴파일 하란 소리다.


그러므로 아직까지 저런 버전으로 빌드를 하게 되면 생기는 문제점들을 없애기 위해서,

안드로이드 1.6으로 사용하도록 한다.


1.5는 어노테이션 관련한 문제들이 발생하므로, 1.6을 사용하도록 한다.

Android SDK Content Loader이거에서 0%에서 더 이상 진척이 없는 상태가 되었다.

일단 그래서 방법을 찾아보았다.


해결방안

1. 이클립스를 어떤 방식으로든 종료하도록 한다.

2. %USERPROFILE% (즉, 자신의 폴더로 이동하도록한다. 사용자 > 자기꺼)

3. .android 폴더에 진입

4. cache 폴더를 삭제

5. ddms.cfg 파일을 삭제

6. 이클립스 재시작


이래도 안된다면...


6. /workspace/.metadata/.plugins/org.eclipse.e4.workbench/workbench.xml 파일 삭제

7. 이클립스 재시작


정확하게 이런게 왜 발생하는지는 모르겠다.

단통법 참고


http://www.ppomppu.co.kr/zboard/view.php?id=phone&no=3010316




내용 요약

 


프리미엄패스 1,2 

프리미엄패스1,2 개념이야 홈피에도 나오는거니 설명은 간략하게만 하고 넘어가고 
헷갈릴만한 사항들을 조금 더 적어보겠습니다
(kt 의 심플코스, lg 의 식스플랜도 전체적인 내용은 프패와 거의 동일합니다)

프리미엄패스 1은 69계열 요금제 이상(KT는 요금제 자유) 가입 고객이 "T지원금약정" 가입일(D)로부터
180일 이상(정지일 제외) 요금제를 유지(또는 상위요금제로 변경) 시
이후 변경에 따른 차액정산금(공시지원금의 할인반환금)이 면제되는 제도입니다.
(단, 상향 변경시에도 추가지원금을 지급하지 않음)

프리미엄패스 2는 69계열 요금제 이상 가입 고객이 "T지원금약정금" 가입일
기준 12개월 이상(정지일 제외) 요금제를 유지(또는 상위요금제로 변경)시 이후
기변시 발생하는 해지 위약금이 면제되는 제도입니다.


대충 프패의 개념은 요렇고 밑엔 추가사항들입니다

* 프리미엄패스2 로 개통하더라도 유통망 추가지원금에 대한 위약금이 
면제되는 것은 아닙니다. 즉 공시지원금만 면제된다는 소리죠

* 프리미엄패스 1 가입하여 180일(정지일제외) 이후 → 프리미엄 패스 해지 → 요금제
상향조정 하여도 추가 지원금은 없습니다

* 프리미엄패스 1 가입하여 180일(정지일제외) 이후 표준요금제로 변경 시에는
요금제 변경에 따른 T지원금 약정 보조금 차액정산이 면제됩니다

* 2014년 10월 1일이후 T지원금 약정과 요금약정할인제도를 중복으로 가입하여 이용하다가
반환금 면제 적용된 2014년 12월 1일 이후 약정할인제도 해지 시 T지원금약정과 요금약정할인제도
중복 가입된 기간은 반환금 미산정되므로 해지 시 별도로 할인반환금이 부과되지 않습니다.
아울러, 해지 시점 기준, T지원금약정이 있는 경우, 요금약정 할인제도의
할인 반환금 면제됩니다.

* LGT 의 경우 2014년 12월 1일 이후 개통분부터 할인반환금이 면제됩니다
즉, 10월 1일에서 11월 30일 사이에 가입하신 분들은.... 눈물이....

* KT 의 경우 순요금제 사용시에만 할인반환금이 발생하지 않을뿐
lte 요금제로 사용시에는 반환금 적립됩니다
순요금제로 개통했다가 lte 요금제로 변경하는 경우에도 마찬가지입니다

* 확정기변의 경우 T지원금약정 유지가능하며, 요금약정할인제도 또한 할인 대상 요금제
유지가능하다면 유지하여 이용되므로 약정 해지 발생하지 않게됩니다
만약, 할인 대상 요금제 유지가 불가하여 요금약정할인제도 해지하는 경우에는
상단의 반환금면제 조건인 경우에 면제 혜택 적용됩니다.
(이 부분은 뭔소린지 저도 헷갈리는데 그냥 확정기변시 할인반환금이랑 위4 안나온다는 소리같습니다)


SKT 고객센터 답변 기준으로 적었는데 먼가 같은말을 길게 써놓은거 같네요 -_-;'

핵심사항 요약해보면 
sk 는 위3,4 동시 발생시 위3 면제
kt 는 순요금제 쓰면 위3 없음
lgt 는 2014년 12월 1일 이후 가입부터 위3 없음 
입니다


- 좀 예민한 부분이라 틀린곳이 있을수 있으니 잘못된 부분 있으면 수정요청 부탁드립니다
- 언제나 강조하지만 위약금 관련부분은 참고만 하시고 약정변동시 114에 한번 더 확인하시는걸 권장합니다










프리미엄패스2(무료)

프리미엄패스1 란?69요금제 이상 가입고객이 6개월 동안 요금제를 유지(혹은 상향조절)하면 이후 변경에 따른 할인반환금이 면제되는 제도프리미엄패스2 란?69요금제 이상 가입고객중 프리미엄패스1에 가입한 고객이 12개월 동안 요금제를 유지(혹은 상향조절)하면 이후 변경에 따른 할인반환금 및 해지위약금이 면제되는 제도
  • ※ 가입동의 시 프리미엄패스1, 프리미엄패스2가 동시에 가입됩니다.
  • ※ 가입기간 중 요금제를 상향조정하더라도 추가지원금 혜택을 받으실 수 없습니다.
  • ※ 프리미엄패스 가입 후 6개월 경과 시 요금제 하향조정 및 약정해약을 하시는 경우 하향에 따른 차액정산금은 면제되지만 해지위약금은 부과됩니다.
  • ※ 가입 후 12개월 경과 시부터 차액정산금과 해지위약금이 모두 면제됩니다.

 



Check Point

  • 선택약정할인 적용 가능 (단, SONY Z3등 일부 OMD 단말은 적용 불가)
    - 단말지원금 없이 서비스 가입 시, 약정기간(12/24개월) 동안 추가 요금할인 혜택 제공
    - 가입방법 : 신청서(T-gate) 작성 시 메모란에 '선택약정할인 요청' 기재하거나 고객센터로 문의
    - 고객센터 : 010-1534-7979(무료/SK텔레콤 휴대폰), 1599-0224(유료/유선 및 타사고객) / 평일 09:30 ~ 18:30, 토요일 10:00 ~ 15:00
  • 할부원금은 요금제 선택에 따라 변동될 수 있습니다.
  • 정지, 명의변경, 확정기변, 중고기변 : 개통일로부터 60일 이후 가능
  • 유심기변 : 제한 없음
  • 단말기 할부금 완납처리 : 익월말 이후 가능
  • 약정 기간 내 회선 해지 시 위약금이 부과됩니다.
  • 010 신규의 경우 개통 처리 후 발송 진행됩니다. (찾아가는 개통 서비스도 동일 적용)
  • 요금제 변경 시 지원금이 조정될수 있으며, 요금제에 따라 (+), (-)금액으로 청구 조정됩니다.
  • T gate 신청서 작성 완료 시점의 가격 기준으로 정책이 적용됩니다. 단, 단말 개통 시점에 공시 가격이 변동될 경우, 할부원금은 공시가격 기준으로 개통되며 차액만큼 익월 이동전화요금의 기본료에서 감면 처리됩니다.
  • 보상기변의 경우 기존 사용 단말기는 미반납입니다.
  • 스마트폰 보험은 실물 확인을 위해 개통 후 30일 이내에 가까운 지점이나 대리점에 방문하시면 가입 가능합니다.
  • 음성무제한 망내지정 1회선으로 기재된 법정대리인 번호가 등록됩니다. 
    (단, SKT 회선이 아닌 경우, 신청서 메모란에 지정할 SKT회선을 기재해 주십시오.)
  • 요금제 관련 상세는 T world 홈페이지를 참고하세요.
  • T Kids Gift Box는 T world 다이렉트 고객센터를 통해 신청 가능하며, 주문시점에 신청하시면 단말기 배송 시 동봉발송 됩니다.





















kt 지원금 제공 방식 안내

kt에서는 2014년 10월1일 단통법 시행 이후 개통시 일시 할인을 제공하는 지원금 2가지 코스(심플코스, 베이직코스)를 운영 중에 있으며, 매월 가입하신 요금제에 따른 요금할인(지원금) 방식도 운영하고 있습니다.

 심플코스
  • 개통시점에 단말기 출고가에서 일시 할인 제공하는 방식
  • 180일(6개월) 이후에는 요금제 변경에 따른 차액정산금 없음
    (180일 이내에 요금제 하향시 차액정산금 청구, 요금제 상향시 차액정산금 지급 없음)
  • 약정기간 내 해지시 위약금 발생
 베이직코스
  • 개통시점에 단말기 출고가에서 일시 할인 제공하는 방식
  • 약정기간 내에 요금제 상/하향에 따른 차액정산금 청구 또는 지급
  • 약정기간 내 해지시 위약금 발생
 요금할인(지원금)
  • 매월 이용중인 요금제에 따른 추가 요금할인 제공
  • 약정기간 내 해지시 할인반환금 발생
  • 약정기간 내 유심이동 기변 불가하며, 대상 외 단말로 변경 시 할인 중단

*차액정산금이란? 약정기간 도중 요금제를 변경할 경우 지급/청구되는 단말기 지원금 차액입니다.

심플코스, 베이직코스 안내

지원금을 받는 새로운 방법
요금제 바꿔도 지원금 다 받는 ‘심플코스’, 합리적인 ‘베이직코스’

복잡한건 딱 싫다!
24개월 요금제 유지부담을 6개월로 줄인
kt만의 파격 할인 코스
초기 가입 요금제를 6개월만 유지하시면, 
그 이후로 요금제를 변경하셔도 
처음 받으신 지원금 혜택이 계속 유지됩니다.
  요금약정 기간 : 6개월(180일)

요금약정기간 6개월 이후 요금제를 낮추어도 차액정산금 면제!

vs

요금에 맞게, 합리적으로!
약정기간 중 요금제 변경에 따라 지원금 혜택이 변경되는 할인 코스
약정 만료 전 요금제를 변경하실 경우, 
지원금 차이에 따른 차액정산금이 지급되거나 청구됩니다.
  요금약정 기간 : 24개월(730일)

요금약정기간 24개월 동안 요금제 변경마다 차액정산금 지급/청구

* 올레샵에서는 심플코스로 가입을 도와드리고 있으며, 베이직코스는 서비스 준비중에 있습니다.

6개월 후에는 묻지도, 따지지도 않는 kt만의 파격 할인 코스

가입 시 선택하신 요금제를 6개월만 유지하시면, 그 이후로 요금제를 변경하셔도 처음 받으신 지원금 혜택이 계속 유지됩니다.
  • 유의사항
    • 심플코스로 가입하신 경우 6개월 내 요금제를 하향 변경하시면, 지원금 차액과 잔여기간에 따라 ‘차액정산금’(*)이 청구됩니다. 단, 6개월이 경과된 후에는 요금제를 바꾸셔도 차액정산금이 청구되지 않습니다.
    • 더 높은 요금제로 변경하셔도 차액정산금은 지급되지 않습니다.
    • 약정기간 만료 전에 해지하시면, 남은 기간에 대한 위약금이 부과됩니다.

    *차액정산금이란? 약정기간 도중 요금제를 변경할 경우 지급/청구되는 단말기 지원금 차액입니다.

약정기간(24개월) 동안 요금제 변경에 따라 지원금 혜택이 변경되는 할인 코스

약정 만료 전 요금제를 변경하실 경우, 지원금 차이에 따른 차액정산금이 지급/청구됩니다. 초기 가입 요금제보다 높은 요금제로 변경하실 경우 추가 지원금이 지급되며, 낮은 요금제로 변경하실 경우 차액금이 정산되어 청구됩니다.
  • 유의사항
    • 베이직코스로 가입하신 경우, 약정기간(24개월) 내 요금제 변경 시 차액정산금이 청구/지급됩니다.
    • 약정기간 만료 전에 해지하시면, 남은 기간에 대한 위약금이 부과됩니다.

 높은 요금제로 변경 시, 할인 낮은 요금제로 변경 시, 청구

  • 차액정산금 산식
    • 가입(개통) 후 180일(6개월) 이내 요금제 변경 시 : (변경 전 요금제의 공시지원금 – 변경 후 요금제의 공시지원금) 전액
    • 가입(개통) 후 180일(6개월) 이후 요금제 변경 시 : (변경 전 요금제의 공시지원금 – 변경 후 요금제의 공시지원금) x {사용기간 약정 잔여기간 / (730일 – 180일)}

    ※ 심플코스의 경우, 요금 약정기간 내에만 차액정산하며, 요금제 상향 시 차액정산금 지급되지 않음

  • 해지 위약금 산식
    • 가입(개통) 후 180일(6개월) 이내 해지 시 : 약정지원금 전액
    • 가입(개통) 후 180일(6개월) 이후 해지 시 : 약정지원금 x {사용기간 약정 잔여기간 / (730일 – 180일)}

    ※ 심플코스의 경우 요금 약정기간 내 사용한 최저요금제, 베이직코스의 경우 해지 시점에 사용 중인 요금제의 약정지원금을 기준으로 산정


'IT' 카테고리의 다른 글

단통법 정리  (0) 2015.04.13
sk 요금제에 따른 할인, 해지시 위약금..  (0) 2015.04.13
이클립스 린트에러 무시하자!  (0) 2015.03.24
[정보] 저가 빔프로젝터 UC30  (0) 2015.01.12
[정보] 알리익스프레스 필수 정보  (0) 2015.01.12







+ Recent posts