μ΄ν: https://firebase.google.com/support/releases 3μ 20μΌ
μ€λ₯
AndroidRuntime: java.lang.NoSuchMethodError: μ μ λ©μλ μμ zza(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ν΄λμ€ Lcom/google/android/gms/common/internal/zzbqμμ; λλ μνΌ ν΄λμ€('com.google.android.gms.common.internal.zzbq' μ μΈ
μ΄κ²μ μ€μν λ¬Έμ μ λλ€.
μλ νμΈμ, λμΌν Firebase μ λ°μ΄νΈλ‘ μΈν΄ λ€λ₯Έ μ€λ₯κ° λ°μνμ΅λλ€. λ΄κ° μ λ ₯ν λ:
cordova build android
μ½μμμ λ€μ μΆλ ₯μ μ»μ΅λλ€.
λΉλ μ€ν¨
μ΄ μκ°: 4.529μ΄
FAILURE: μμΈλ‘ μΈν΄ λΉλμ μ€ν¨νμ΅λλ€.
λλ μΉμ ν΅ν΄ λ΅μ μ°Ύκ³ μμμ§λ§ λ΄κ° μ°Ύμ μ루μ ( solution2 , solution3 ) μ΄ μ μκ² μ ν©νμ§ μμ΅λλ€ .
μ€λ₯λ Play μλΉμ€ μ λ°μ΄νΈ λ‘ μΈν κ² κ°μ΅λλ€. μ΄ νλ¬κ·ΈμΈμ μ κ±°ν λκΉμ§ λ΄ Android μ±μ λΉλν μ μμ΅λλ€.
μ΄ μ€μν λ¬Έμ κ° ν΄κ²°λμ΄ νλ¬κ·ΈμΈμ λ€μ μ€μΉν μ μκΈ°λ₯Ό λ°λλλ€.
μ΄μ λν μμ μμ μ¬νμ΄ μμ΅λλ€. μλΉμ€ λ° Firebase λ²μ μ 11.8.0μΌλ‘ κ°μ μ μ©ν©λλ€.
μ΄λ»κ²:
μ΄κ²μ μμ λ£μ΄
<hook src="fixFirebasePlugin.js" type="before_build" />
νλ‘μ νΈ λ£¨νΈμ JS νμΌμ λ§λλλ€.
module.exports = function(context) {
var fs = require('fs');
var path = require('path');
var rootdir = context.opts.projectRoot;
var platformDir = 'platforms/android';
//change the path to your external gradle file
var srcFile = path.join(rootdir, 'src/android/build-extras.gradle');
var destFile = path.join(rootdir, platformDir, 'build-extras.gradle');
console.log("copying "+srcFile+" to "+destFile);
fs.createReadStream(srcFile).pipe(fs.createWriteStream(destFile));
}
src ν΄λ μμ android fodlerλ₯Ό λ§λ€κ³ κ·Έ μμ build-extras.gradleμ΄λΌλ νμΌμ λ€μ λ΄μ©μΌλ‘ λ§λλλ€.
configurations.all {
resolutionStrategy {
force "com.google.android.gms:play-services-ads:11.8.0"
force "com.google.android.gms:play-services-base:11.8.0"
force "com.google.android.gms:play-services-gcm:11.8.0"
force "com.google.android.gms:play-services-analytics:11.8.0"
force "com.google.android.gms:play-services-location:11.8.0"
force "com.google.android.gms:play-services-basement:11.8.0"
force "com.google.android.gms:play-services-tagmanager:11.8.0"
force 'com.google.firebase:firebase-core:11.8.0'
force 'com.google.firebase:firebase-crash:11.8.0'
force 'com.google.firebase:firebase-auth:11.8.0'
force 'com.google.firebase:firebase-common:11.8.0'
force 'com.google.firebase:firebase-config:11.8.0'
force 'com.google.firebase:firebase-messaging:11.8.0'
}
}
νλ«νΌμ μ κ±°νλ€κ° λ€μ μΆκ°νκ³ (6.3.0μμ ν μ€νΈ), Cordova λΉλ Androidλ₯Ό μννλ©΄ ν΄κ²°λ©λλ€.
κ·Έ ν, λΉμ μ΄ μνλ 무μμ΄λ μ€ν/λΉλ --prod.
@tryadelion , μΈκΈν λλ‘ μ ννκ² μ루μ μ μλνμ§λ§ μ½μμμ λμΌν μ€λ₯κ° λ°μνμ΅λλ€.(
νλ«νΌμ μ κ±°νκ³ [email protected]μΌλ‘ μ½κ³ "~: cordova build android", no prod, no run, no ionicμ μννμ΅λκΉ? κ·Έκ²μ΄ λλ₯Ό μν΄ νΈλ¦μ ν κ²μ λλ€!
μ, λͺ¨λ μμ (config.xml, fixFirebasePlugin.js, build-extras.gradle, platform [email protected])μ μννμ§λ§ λ΄κ° μ€ννλ λͺ¨λ μ€ν λλ λΉλ λͺ λ Ήμ λμΌν μΆλ ₯μ μμ±ν©λλ€.
λ΄ νλ‘μ νΈλ μ΄μ¨ νλ‘μ νΈκ° μλλλ€. μ΄κ²μ΄ μ΄ λ¬Έμ μ μ€μν μ μλμ§ λͺ¨λ₯΄κ² μ΅λλ€.
μ΄κ²μ λν μ΄μ "ν«ν½μ€"λ₯Ό μλ νμ΅λκΉ? νλ¬κ·ΈμΈμ XMLμμ μλμΌλ‘ λ²μ μ λ³κ²½νλ κ²κ³Ό κ°μ΅λκΉ? νμΌμ μλ§μΌλ‘ λ§λ€μκΈ° λλ¬Έμ μ κ±°νκ³ μ½μ΄μΌ νμ΅λλ€. μ§κΈκΉμ§ 3κ°μ λ€λ₯Έ νλ‘μ νΈμμ μλνμ§λ§ λͺ¨λ μ΄μ¨νλμμ§λ§ νν¬ μμ€ν μ μ½λ₯΄λλ° μ μμ μ¬μ©νλ κ²κ³Ό λμΌν©λλ€.
κ·Έ μ μλ /platforms/android/project.properties λ° /platforms/android/build.gradleλ§ λ³κ²½νμ§λ§ κ·Έ νμλ νλ¬κ·ΈμΈ(첫 λ²μ§Έ)κ³Ό νλ«νΌ [email protected] μ μ κ±°νλ€κ° λ€μ μΆκ°νμ΅λλ€
μ€ν¨μ μμΈμ΄ 무μμΈμ§ λͺ¨λ₯΄μ§λ§ λ΄ νλ‘μ νΈμ μ¬μ ν λ κ°μ§ λ²μ μ΄ μλ€κ³ μκ°ν©λλ€. μ½μμμ λ€μμ λ³Ό μ μκΈ° λλ¬Έμ λλ€.
12.0.0 λ²μ μ μ΄λμμ μ§μ ν μ μλμ§ λͺ¨λ₯΄κ² μ΅λλ€.
λ Έλ λͺ¨λμ μ κ±°νκ³ , νλ«νΌ/μλλ‘μ΄λλ₯Ό μ κ±°νκ³ , /plugins, NPM iμμ λͺ¨λ μλΉμ€ μ¬μ© νλ¬κ·ΈμΈμ μ κ±°νκ³ , μ κ±°ν λͺ¨λ νλ¬κ·ΈμΈμ μ½κ³ , νλ«νΌ μλλ‘μ΄λλ₯Ό μΆκ°νκ³ , λ€μ μλνμμμ€. κ·Έκ² λ΄κ° ν μΌμ λλ€.
μ’μ, λ΄κ° κ°μ§κ³ μλ λͺ¨λ κ΅¬μ± μμλ₯Ό λ€μ μ€μΉνλ €κ³ ν©λλ€. λΉμ μ λμμ μ£Όμ μ λλ¨ν κ°μ¬ν©λλ€!!
@tryadelion 곡μ ν΄ μ£Όμ μ κ°μ¬ν©λλ€. λλ cordova-plugin-firebase λ° κ°μ λ²μ μ λΆκΈ°νλ €κ³ νμ΅λλ€. μ΄μ¨λ , λλ λΉμ μ μ루μ μ ꡬννμ΅λλ€.
μ°λ¦¬λ λν μλνλ [email protected] κ³Ό ν¨κ» μμ νκ³ μμ΅λλ€.
λ§μ§λ§μΌλ‘ λ€μκ³Ό κ°μ΄ /platforms/android/build.gradle νμΌμ μμ νλ λ¬Έμ λ₯Ό ν΄κ²°ν©λλ€.
allprojects {
repositories {
// Temp fix for com.google.android.gms.license
// Added from here
configurations.all {
resolutionStrategy {
// Put your gms packages here with 11.8.0 attached
force "com.google.android.gms:play-services-analytics:11.8.0"
force "com.google.android.gms:play-services-auth:11.8.0"
force "com.google.android.gms:play-services-gcm:11.8.0"
force "com.google.android.gms:play-services-location:11.8.0"
}
}
// until here
jcenter()
maven {
url "https://maven.google.com"
}
}
}
(https://github.com/facebook/react-native/issues/18479μμ μ½μ μ루μ )
λ€μ ν λ² κ°μ¬ν©λλ€!
Ionic v1.1.0
λ° cordova-plugin-firebase v0.1.25
μ΄ νν¬κ° λ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
//before_build/010_add_gradle_extras.js
#!/usr/bin/env node
var fs = require('fs');
var path = require('path');
var rootdir = process.argv[2];
var platformDir = 'platforms/android';
var srcfile = path.join(rootdir, 'build-extras.gradle');
var destfile = path.join(rootdir, platformDir, 'build-extras.gradle');
var destdir = path.dirname(destfile);
if (fs.existsSync(srcfile) && fs.existsSync(destdir)) {
fs.createReadStream(srcfile).pipe(fs.createWriteStream(destfile));
process.stdout.write('Hook: build-extras.gradle added');
}
//build-extras.gradle
configurations.all {
resolutionStrategy {
force "com.google.android.gms:play-services-ads:11.8.0"
force "com.google.android.gms:play-services-base:11.8.0"
force "com.google.android.gms:play-services-gcm:11.8.0"
force "com.google.android.gms:play-services-analytics:11.8.0"
force "com.google.android.gms:play-services-location:11.8.0"
force "com.google.android.gms:play-services-basement:11.8.0"
force "com.google.android.gms:play-services-tagmanager:11.8.0"
force 'com.google.firebase:firebase-core:11.8.0'
force 'com.google.firebase:firebase-crash:11.8.0'
force 'com.google.firebase:firebase-auth:11.8.0'
force 'com.google.firebase:firebase-common:11.8.0'
force 'com.google.firebase:firebase-config:11.8.0'
force 'com.google.firebase:firebase-messaging:11.8.0'
}
}
μλ‘μ΄ μλλ‘μ΄λ νλ«νΌμ μ κ±°νκ³ μΆκ°νλ κ²λ ν΅μ¬ μμμμ΅λλ€.
@tryadelion , κ·νμ μ κ·Ό λ°©μμ μλν λ μ μ΄ μ€λ₯κ° λ°μνλμ§ μμλκΉ?
A problem occurred configuring root project 'android'.
> Could not resolve all dependencies for configuration ':_debugApkCopy'.
> Could not find com.google.gms:google-services:11.8.0.
Required by:
project :
λλ joteferκ° λ§ν λλ‘ νκ³ λΉλκ° μλν©λλ€. κ·Έλ¬λ μ격 ꡬμ±μ΄ μλμ λ©μ·μ΅λλ€. μ΄λ€ μμ΄λμ΄λΌλ?
κ°μ Έμ€κΈ°κ° μλνμ§ μλ λ¬Έμ μ λν΄ μμΈν μ΄ν΄λ³΄λ κ°μ Έμ€κΈ°λ₯Ό νΈμΆν λ λ°μνλ λ€μ μμΈ λλ¬Έμ΄λΌλ κ²μ μμμ΅λλ€.
μμΈ: java.lang.ClassNotFoundException: DexPathList κ²½λ‘μμ "android.support.v4.util.ArraySet" ν΄λμ€λ₯Ό μ°Ύμ§ λͺ»νμ΅λλ€.
μ΄λ€ μμ΄λμ΄λΌλ?
@remisture λ€λ₯Έ gradle νμΌμ΄ μ¬μ ν 12.Xλ₯Ό μ°Έμ‘°νκ³ μμ λ κ·Έ λ¬Έμ κ° λ°μνμ΅λλ€. λΉλ μ 리λ₯Ό μλν΄ λ³΄μΈμ.
platforms/android/build.gradle
λ₯Ό μ
λ°μ΄νΈνμ¬ ν΄κ²°νμ΅λλ€.
μ μ
allprojects {
repositories {
jcenter()
maven {
url "https://maven.google.com"
}
}
}
νμ:
allprojects {
repositories {
//start here
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.google.android.gms') {
details.useVersion '11.8.0'
}
if (requested.group == 'com.google.firebase') {
details.useVersion '11.8.0'
}
}
}
//end
jcenter()
maven {
url "https://maven.google.com"
}
}
}
[email protected]μμ ν μ€νΈλ¨
μλλ λ΄ μ 체 build.gradleμ λλ€. λν λͺ¨λ νλ‘μ νΈμ μ»΄νμΌ SDKλ₯Ό λ³κ²½νλ λ° μ μ©ν λΉνΈκ° λμ μμ΅λλ€.
buildscript {
repositories {
jcenter()
google()
mavenLocal()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
def requested = details.requested
if (requested.group == 'com.google.android.gms') {
details.useVersion '12.0.1'
}
}
}
mavenLocal()
jcenter()
maven {
url "https://jitpack.io"
}
maven {
url 'https://maven.google.com'
}
maven {
// All of React Native (JS, Obj-C sources, Android binaries) is installed from npm
url "$rootDir/../node_modules/react-native/android"
}
}
}
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 26
buildToolsVersion '26.0.2'
}
}
}
}
μ΄κ²μ cordova-android-play-services-gradle-release λ₯Ό μ€μΉνμ¬ μμ λ κ²μΌλ‘
@soumak77 κ°μ¬ν©λλ€.
κ°μ₯ μ μ©ν λκΈ
platforms/android/build.gradle
λ₯Ό μ λ°μ΄νΈνμ¬ ν΄κ²°νμ΅λλ€.μ μ
νμ:
[email protected]μμ ν μ€νΈλ¨