[기본 셋팅]


1. 자바 SDK // 2. Node.js // 3. 안드로이드 SDK - http://developer.android.com // 4. GIT(옵션) - 플러그인 설치할 때 필요

 

Node.js 에서 진행

("Node.js command prompt" 프로그램을 실행해서 진행)


- 폰갭 설치
  >npm install -g phonegap

- 코르도바 설치
  >npm install -g cordova



 

1. 프로젝트 생성(폴더 디렉토리 생성)

  (1) 기본으로 생성

    >cordova create (프로젝트명)

    >cordova create helloWorld

  (2) 패키지명과 앱이름까지 생성할 경우

    >cordova create (프로젝트명) (패키지명) (어플이름)  

    >cordova create helloWorld kr.co.dothome.pjs movie  


2. 프로젝트로 이동

  >cd helloWorld


3. 프로젝트 위치를 열고 미리 작성해 놓은 웹페이지(css, img, js, lib, html 등)를 복사 붙여넣기를 한다.

  (helloWorld 폴더를 찾아가보면 www 라는 폴더가 있는데 거기를 열어보면 된다.)


4. 안드로이드 플랫폼을 추가 (모바일 OS 별로 추가 할 수 있다.)

  >cordova platform add android

  (helloWorld 폴더 내에 android 폴더(네이티브앱과 비슷한 구조)와 platforms.json 파일이 생성된다.)


5. 안드로이드 프로젝트 빌드

  (1) 빌드

    >cordova build android

  (2) 빌드 + 설치(폰과 케이블 연결 필요)

    >cordova run android


6. ...\projects\helloWorld\platforms\android\build\outputs\apk 안에 [android-debug.apk] 파일이 생성된다.


7. 폰에 넣어서 .apk 설치하고 실행한다.



** 빌드가 안될 경우 **

안드로이드 스튜디오 다운로드 페이지(https://developer.android.com/studio/index.html)에서 

아래쪽 [명령줄 도구만 다운로드]로 이동하여 해당하는 OS의 .zip 파일을 다운 받는다. (아래 이미지 참고)






** 개발단계와 배포단계의 keystore가 다르다는 점을 유의해야한다. **


- 개발단계에서의 빌드 명령어 (배포로 사용 불가)

  >cordova build android

    : ...\projects\helloWorld\platforms\android\build\outputs\apk 안에 [android-debug.apk] 파일 생성됨.


- 배포단계에서의 명령어

  >cordova build android --release

    : ...\projects\helloWorld\platforms\android\build\outputs\apk 안에 [android-release-unsigned.apk] 파일 생성됨.


 (1) release용 keystore 만든다.

    (keytool 명령어는 jdk(bin폴더)에 포함 되어있다. 환경변수 -> 사용자변수 부분에 jdk\bin 폴더 위치를 등록한다.)

      >keytool -genkey -v -keystore release.keystore -alias myMovie -keyalg RSA -keysize 2048 -validity 10000


  -genkey : key 생성

  -v : 생성과정출력

  -keystore : keystore 파일명

  -alias : 별명

  -keyalg : key생성 알고리즘

  -keysize : key 크기

  -validity : 유효기간(일단위)


  (2) .apk에 .keystore를 sign한다.

    >jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore release.keystore android-release-unsigned.apk myMovie


  (3) 정렬 (최적화)

    (zipalign명령어는 C:\Users\(사용자명)\AppData\Local\Android\sdk\build-tools\(최근버전) 에 있다. 이 위치를 위와 같이 사용자 정의 변수에 추가해준다.)

    >zipalign -v (바이트수) (빌드 후 생성 되는 파일 명) (최종파일명)

    >zipalign -v 4 android-release-unsigned.apk movie2.apk


  위 단계를 마친 후 배포한다.(market에 올린다.)



Method Flow : 서비스 중지 -> 캐시 삭제 -> 중지한 서비스 시작 -> update 설치

 


[ 제어판 - 시스템 및 보안 - 관리도구 - 서비스 ]

 

또는

 

[ 작업관리자 - 서비스탭 - (우측하단) 서비스 ]

 

를 눌러서 서비스를 띄웁니다.

 

B를 눌러서 Background Intelligent Transfer Service

C를 눌러서 Cryptographic Services

W를 눌러서 Windows Update


 

중지 시키고 나서 아래를 진행합니다.

 

Windows 폴더로 가서 Update관련 Cache 관련 폴더 2개를 삭제해야 합니다. (아래 캡처 참고)

 

C:\Windows\SoftwareDistribution

C:\Windows\System32\catroot2

 

 

 

 

앞서 중단했던 서비스들을 다시 살려야 합니다.

 


[ 제어판 - 시스템 및 보안 - 관리도구 - 서비스 ]

 

또는

 

[ 작업관리자 - 서비스탭 - (우측하단) 서비스 ]

 

를 눌러서 서비스를 띄웁니다.

 

B를 눌러서 Background Intelligent Transfer Service

C를 눌러서 Cryptographic Services

W를 눌러서 Windows Update


 

각각의 서비스들을 시작합니다.

 

그리고 롤업 업데이트를 수동 설치합니다.

본인의 운영체제에 맞는 파일(KB3020369, KB3172605)을 아래의 링크로 타고 들어가서 각각 다운로드 후 설치합니다.

(설치가 안되면 위에 했던 작업을 다시 한번 더 진행합니다.)

KB3020369

32bit : https://www.microsoft.com/ko-kr/download/details.aspx?id=46827


KB3172605

32bit : https://www.microsoft.com/ko-kr/download/details.aspx?id=53335

64bit : https://www.microsoft.com/ko-kr/download/details.aspx?id=53332

 

 

 

재부팅 하고 나면 윈도우업데이트가 정상적으로 되는것을 확인할수 있습니다. 

 

- 끝 -



1. CREATE 명령 ( 생성하기 )

   (1) 테이블 복사(특정컬럼만)

      [EX] CREATE TABLE [원하는 TABLE명]

            AS

               SELECT ... 

               FROM [복사할 TABLE명]

               WHERE ... ;



   (2) 테이블 복사(구조만)

      [EX] CREATE TABLE [원하는 TABLE명]

            AS

               SELECT * FROM [복사할 TABLE명] WHERE 1=2;



   (3) 가상 컬럼 테이블 생성(11g, 12c 가능)

      : 임의로 연산된 값이 들어갈 수 있도록 설정 가능 ( 유지보수 하기 힘들듯.. 그래서 딱히 쓰일지는 모르겠다. )


      [EX] CREATE TABLE [원하는 TABLE명]

            (

               NO1 NUMBER NOT NULL

              ,NO2 NUMBER NOT NULL

              ,NO3 NUMBER GENERATED ALWAYS AS (NO1 + NO2) VIRTUAL

            );

                                                                                            - VIRTUAL은 생략 가능!

      [조회방법]

         INSERT INTO [생성된 TABLE명] (NO1, NO2) VALUES (10, 20);

   SELECT * FROM [생성된 TABLE명];




2. ALTER 명령 ( 수정하기 )

   (1) 컬럼 추가

      [EX] ALTER TABLE [생성된 TABLE명]

            ADD ( [원하는 COLUMN명] VARCHAR(20) );


   (2) 컬럼명 변경

      [EX] ALTER TABLE [생성된 TABLE명] RENAME COLUMN [바꾸기 전 COLUMN명] TO [바꾼 후 COLUMN명];


   (3) 컬럼 삭제

      [EX] ALTER TABLE [생성된 TABLE명] DROP COLUMN [생성된 COLUMN명];


   (4) 읽기 전용 & 읽기/쓰기 전용으로 셋팅 : 변경이 잘 없는 코드성 자료에 쓰기 적합

      ALTER TABLE [생성된 TABLE명] READ WRITE;

      ALTER TABLE [생성된 TABLE명] READ ONLY;


     -> ui 단(변경이 잘 없는 부분)에서 풀고 쓰기를 활용해서 값 저장하고 읽기 전용으로 다시 묶는 방식으로 쓰면 괜찮을듯




3. TRUNCATE 명령

   : TABLE 남기고, DATA, MEMORY, INDEX 모두 삭제

   * 주의할점 : ROLLBACK 불가능, 무조건 전체 삭제, TABLE 처음 상태로 초기화

    (DELETE 보다 빠르게 처리함, 대용량 DATA처리에 유리)


   [EX] TRUNCATE TABLE [삭제할 TABLE명];




4. DROP 명령

   : TABLE을 포함해서 전부 다 삭제

   [EX] DROP TABLE [삭제할 TABLE명];

+ Recent posts