반응형

구글 클라우드 메세징(GCM) 설정


https://developers.google.com/cloud-messaging/?hl=ko


위의 사이트에서 TRY IT ON ANDROID 를 클릭하면 안드로이드 GCM 설정에 대한 자세한 설며이 나와있다.

( https://developers.google.com/cloud-messaging/android/start?hl=ko )


우선 GCM을 적용할 안드로이드 프로젝트의 이름과 패키지명을 알고있어야 하며,

프로젝트가 없다면 만들고 나서 사이트로 접속을 한다.


아래와 같은 화면에서 GET A CONFIGURATION FILE 버튼을 클릭한다.


아래와 같은 화면이 나오면, 

어플리케이션 프로젝트 명을 적고 패키지명을 적는다.

그 후 Choose and configure services라는 버튼을 클릭하여 API Key를 생성한다.




그러면 아래와 같은 화면이 나오고, API Key가 나오게된다.

다음 화면에 다시 나오기 때문에 우선 API Key는 놔두고,

Generate configuration files를 클릭하여 안드로이드 프로젝트에 넣어야 하는 json 파일을 생성한다.



Download google-services.json 버튼을 클릭하여 

google-services.json 파일을 다운 받는다.


그리고 아래에 적혀있는 Server API Key를 적어 놓는다.

(푸시를 전송할때 사용되는 서버 API 키)




안드로이드 스튜디오로 돌아와서 프로젝트의 app 폴더 아래 경로에 google-services.json파일을 이동시켜준다.




그다음으로 AndroidManifest.xml 파일 app 아래의 build.gradle 파일과 프로젝트(자신의 프로젝트)아래의 build.gradle파일을 수정해야 한다. 

https://developers.google.com/cloud-messaging/android/client?hl=ko )

위의 사이트에 설명이 되어 있으며, 버전이나 변경 사항에대한 확인은 필요하다.


첫 번째로 프로젝트 아래의 build.gradle 파일에 dependencies에 아래의 값을 넣어준다.


classpath 'com.google.gms:google-services:2.0.0-alpha6'


두 번째로 app 아래의 build.gradle 파일의 상단에 아래의 값을 넣어주고,


apply plugin: 'com.google.gms.google-services'


depencies에 아래의 값을 넣어준다.


compile "com.google.android.gms:play-services-gcm:8.3.0"


세 번째로 AndroidManifest.xml 파일에 아래의 내용을 넣고,


<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17"/>

<uses-permission android:name="android.permission.WAKE_LOCK" />

<permission android:name="com.na.hosung.myweather.permission.C2D_MESSAGE"    

android:protectionLevel="signature" />

<uses-permission android:name="com.na.hosung.myweather.permission.C2D_MESSAGE" />


<application></application> 사이에 아래의 내용을 넣는다.

<receiver
android:name="com.google.android.gms.gcm.GcmReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.example.gcm" />
</intent-filter>
</receiver>
<service
android:name="com.na.hosung.myweather.MyGcmListenerService"
android:exported="false" >
<intent-filter>
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
</intent-filter>
</service>
<service
android:name="com.na.hosung.myweather.MyInstanceIDListenerService"
android:exported="false">
<intent-filter>
<action android:name="com.google.android.gms.iid.InstanceID" />
</intent-filter>
</service>
<service
android:name="com.na.hosung.myweather.RegistrationIntentService"
android:exported="false"></service>

입력을 하고난 AndroidManifest.xml 파일의 모습은 아래와 같을 것이다.


빌드를 다시 하면 에러가 사라질 것이며,

MyGcmListenerService , MyInstanceIDListenerService , RegistrationIntentService

에서 에러가 나는 것은 파일이 없기 때문이다.


에러가 나는 파일들은

https://github.com/googlesamples/google-services/tree/master/android/gcm

위의 github에서 받을 수 있으며, 아래의 파일들을 넣어주면 에러가 사라지는 것을 알 수 있다.


위의 클래스들은 GCM 클라이언트 instance id를 얻는 클래스이며, 

클래스 각가에 대한 설명은 생략한다.


위의 과정을 마치면, GCM을 전송 받기 위한 과정이 끝난다.


(GCM instance id를 알아내는 것과, 테스트해보는 방법은 다음에....)



반응형
반응형

1. AndroidManifest.xml에 아래 내용 추가

<!--splash-->
<activity android:name=".SplashActivity"
android:screenOrientation="portrait"
android:configChanges="orientation|keyboardHidden"
android:theme="@android:style/Theme.NoTitleBar"/>
<!--splash-->

2. splash화면 splash.xml 파일 생성(splash 화면은 해당 이미지 사용)


3. SplashActivity.java 파일 생성

public class SplashActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.splash);

Handler handler = new Handler();
handler.postDelayed(new Runnable() {

@Override
public void run() {
finish();
}
}, 3000);// 3 초
}
}

4.MainActivity에 아래 내용 추가

startActivity(new Intent(this, SplashActivity.class));

실행을 하면 첫 화면이 나오기전에 splash화면이 나오는 것을 볼 수 있다.

반응형
반응형

 안드로이드스튜디오 에뮬레이터 오류

에뮬레이터로 실행했을때 이러한 오류가 발생하며, 에뮬레이터 실행이 안된다.

emulator: ERROR: x86 emulation currently requires hardware acceleration!
Please ensure Intel HAXM is properly installed and usable.
CPU acceleration status: HAX kernel module is not installed!

 

방법은 SDK Manager에서 Intel x86 Emulator Accelerator설치 한다.

Tools - Android - SDK Manager - Extras - Intel x86 Emulator Accelerator(HAXM Installed) 설치

설치후에도 같은 에러가 나온다면, 아래의 사이트로 접속하여,

https://software.intel.com/en-us/android/articles/intel-hardware-accelerated-execution-manager

haxm-windows_r05.zip 파일을 다운 받은 후 intelhaxm-android.exe 실행 하여주면된다.

 

*본인은 intelhaxm-android.exe설치 후에 정상적으로 실행

반응형
반응형

안드로이드 스튜디오를 정상적으로 설치하고 실행을 시켜보니

java.lang.RuntimeException: java.lang.IllegalArgumentException: Argument for @NotNull parameter 'name' of com/android/tools/idea/welcome/Platform.<init> must not be null

아래와 같은 문구의 여러줄의 경고창이 뜨며 종료되는 에러가 발생하였다.

이러한 경우에는 pc의 네트워크 연결을 끊은 후에 실행시켜보고,

정상적으로 안드로이드스튜디오가 실행되면, 그때 다시 네트워크 연결을 해주면된다.

*발생하는 이유는 모르겠음....

반응형
반응형

안드로이드 스튜디오(android studio)를 설치한 후 실행시키면 나타나는 오류

 

 

The enviroment variable JAVA_HOME does not point to a valid JVM installation

 환경변수에서 JAVA_HOME 변수 설정에 문제가 있어서 나타나는 부분이다.

기존에 JAVA_HOME 변수를 아래와 같이 설정했는데,  ; 때문에 위와 같은 에러가 발생한다.

C:\Program Files (x86)\Java\jdk1.7.0_67;

;을 없애고 아래와 같이 설정한 후에 실행하면 정상적으로 실행이 되는 것을 확인 할 수 있다.

간혹 JAVA_HOME에서 C:\Program Files (x86)\Java\jdk1.7.0_67\bin 까지 설정을해서 에러가 발생하는 경우도 있으니 bin폴더의 상위경로까지만 변수로 설정해주는 것이 좋다.

반응형

+ Recent posts