發表於 程式分享

ionic新增FCM plugin無法build成android版本之處理

1.安裝cordova-plugin-fcm plugin及@ionic-native/fcm

$ ionic cordova plugin add cordova-plugin-fcm
$ npm install --save @ionic-native/fcm

2.執行ionic cordova build android會出現如下錯誤訊息

google-services plugin could not detect any version for com.google.android.gms or com.google.firebase, default version: 9.0.0 will be used

3.爬文許久發現https://firebase.google.com/docs/android/setup應是解答
1) 於platforms\android\build.gradle

buildscript {
    // ...
    dependencies {
        // ...
        classpath 'com.google.gms:google-services:3.1.1' // google-services plugin
    }
}
allprojects {
    // ...
    repositories {
        // ...
        maven {
            url "https://maven.google.com" // Google's Maven repository
        }
    }
}

2) plugins\cordova-plugin-fcm\FCMPlugin.gradle
classpath ‘com.google.gms:google-services:+’調整成classpath ‘com.google.gms:google-services:3.1.1’

buildscript {
    repositories {
            jcenter()
            mavenLocal()
        }
    dependencies {
        classpath 'com.android.tools.build:gradle:+'
        classpath 'com.google.gms:google-services:3.1.1'
    }
}

4.執行ionic cordova build android會出現如下錯誤訊息

* What went wrong:
Execution failed for task ':app:mergeDebugResources'.
Process 'command 'C:\Android\SDK\build-tools\23.0.1\aapt.exe'' finished with exit value 1 (state: FAILED)
...

5.最終參考這兩篇https://forum.ionicframework.com/t/google-services-version-conflict-maps-fcm/93695/9https://stackoverflow.com/questions/35674066/errorexecution-failed-for-task-appprocessdebugresources-java-io-ioexcept調整如下設定
1) plugins\cordova-plugin-fcm\FCMPlugin.gradle
將以下兩行註記為不使用

// classpath 'com.google.gms:google-services:3.0.0'
// apply plugin: com.google.gms.googleservices.GoogleServicesPlugin

2) plugins\cordova-plugin-fcm\plugin.xml
調整以下兩行版本
<framework src="com.google.firebase:firebase-core:11.4.2″ />
<framework src="com.google.firebase:firebase-messaging:11.4.2″ />
3) 移除ionic cordova平台android
ionic cordova platform rm android
4) 再build android
ionic cordova build android
5) 於platforms\android\build.gradle
增加classpath ‘com.google.gms:google-services:3.1.1’

buildscript {
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.0'
    classpath 'com.google.gms:google-services:3.1.1'
    }
}
allprojects {
    // ...
    repositories {
        // ...
        maven {
            url "https://maven.google.com" // Google's Maven repository
        }
    }
}

6) 於platforms\android\build.gradle
最後一行加上
apply plugin: ‘com.google.gms.google-services’
7) 於platforms\android\build.gradle
依android tool目前最大的版本執行

    compileSdkVersion 27
    buildToolsVersion "27.0.0"

註1:原為
compileSdkVersion cdvcompileSdkVersion
buildToolsVersion cdvbuildToolsVersion
註2:android tool版本確認方式如下圖Android SDK Manager
1

發表留言