마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

푸시 질문드립니다.(fcm)

0 추천

fcm푸시 를  공부하는 중입니다.

안드로이드 테스트앱하나 만들어서 테스트까지 잘 마쳤습니다.

 

그리고 jar파일안에 넣어서 fcm푸쉬는 개발하려는데 문제가 발생하였습니다.

안드로이드앱에서 잘 동작하던 fcm푸시가 jar만들후 해당 클래스를 못찾는다고 나오고있습니다.

 

사용코드는

MyFirebaseInstanceIDService service = new MyFirebaseInstanceIDService(); 

service.onTokenRefresh();

 

jar파일을 열어서 확인해보니 MyFirebaseInstanceIDService파일의 존재를 확인하였고...

여러가지 테스트해본결과

 

그림처럼 extends FirebseInstanceIdService를 상속받는 것이 문제였습니다.

저 extends를 빼버리면 잘동작하는데 넣으면 죽는걸보면 아마 FirebseInstanceIdService를 읽어오지 못하는게

아닌가하는 생각이드는데...그럼 어떻게 해야 FirebseInstanceIdService를 읽어올수있게 하는지가 문제인데...

테스트앱에서 잘 동작하는 것은 단지jar파일로 만든후 동작시키면 안움직이는 걸로바서는 앱과는

다른 셋팅이 필요하지 않나 생각이됩니다.

혹시 해당관련부분에 대해 지식이 있으신분은 조언좀 부탁드리겠습니다.

 

 

시니여 (160 포인트) 님이 2017년 2월 14일 질문
시니여님이 2017년 2월 14일 수정

3개의 답변

0 추천
앱에서 firebase-messagin, firebase-auth를 dependencies에 추가해주세요
prague (26,200 포인트) 님이 2017년 2월 14일 답변
기존에 사용하던 번들입니다.
firebase-auth는 문서에 안보였는데...한번 넣어보겠습니다.
답변 감사드립니다.


apply plugin: 'com.android.library'


android {
    compileSdkVersion 25
    buildToolsVersion "25.0.1"
    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 25
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:25.0.1'
    compile files('libs/classes.jar')
    compile 'com.google.firebase:firebase-appindexing:10.0.1'
    compile 'com.google.firebase:firebase-messaging:10.0.1'

}

//task to delete the old jar
task deleteOldJar(type: Delete) {
    delete 'release/AndroidPlugin.jar'
}

//task to export contents as jar
task exportJar(type: Copy) {
    from('build/intermediates/bundles/release/')
    into('release/')
    include('classes.jar')
    ///Rename the jar
    rename('classes.jar', 'AndroidPlugin.jar')
}


exportJar.dependsOn(deleteOldJar, build)

apply plugin:'com.google.gms.google-services'
이건 jar에 대한 gradle build이고요... 그 jar를 import하는 앱의 dependencies에서 compile 'com.google.firebase:firebase-messaging:10.0.1' 를 추가해주셨나요?
unity에 들어갈 jar이라서요...
lib를 따로 넣어줘야할까요? 그러고보니 이클립스에서도해당 lib파일 따로 넣어줬던걸로 기억납니다...아 messing lib를 안넣어서 그럴수도 있겠군요...
근데 jar에 같이 포함되는 옵션이 있었던것같은데...어디더라...
0 추천
지금 라이브러리 만드시는거 같은데

 jar로 만드시면 안될거같고 프로젝트 SDK 형태로 만드셔야 될것 같습니다.
갸아악 (21,260 포인트) 님이 2017년 2월 14일 답변
갸아악님이 2017년 2월 14일 수정
프로젝트sdk요?
제가 이클립스에서 jar로만 사용하다 넘어와서..모르는게 많습니다.
혹시 관련키워드로 검색하려고하는데 어떤 키워드로 검색해야 나올지요?
샘플이나 관련 내용을 보면 좀 이해가 빠를것같습니다.
답변 감사드립니다.
0 추천
google-service.json 파일 추가 하셨나요?

fcm 뿐 아니라 구글 서비스 연동을 하려면 필요합니다.

jar 파일을 어느경로를 통해 얻으셨는지 모르겠으나 firebase 공식 사이트에 레퍼런스가 한글로 잘 번역이 되어 있으니 그것을 참조하는것이 제일 좋습니다.

FCM 가이드 : https://firebase.google.com/docs/cloud-messaging/?hl=ko
Development Guy (70,570 포인트) 님이 2017년 2월 14일 답변
넵 google-service.json 파일은 잘들어가있습니다.
관심가져주셔서 감사합니다.
firebase 콘솔에 앱 디버그서명 해시 등록 하셨나요? 위에 에러 로그 보니 fingerprint 관련 에러도 보이는거 같은데
네... 테스트앱에서는 푸시까지 모두 정상적으로 받아집니다.
jar만들어서 unity에 넣어서 테스트중인데....거기서 에러가나네요...
...