Cordova-plugin-firebase: ๋” ์ด์ƒ ์•ˆ๋“œ๋กœ์ด๋“œ์— ๊ตฌ์ถ•ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค

์— ๋งŒ๋“  2019๋…„ 06์›” 18์ผ  ยท  59์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: arnesson/cordova-plugin-firebase

๋‚˜๋Š” ์ •์ƒ์ ์œผ๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ์žˆ์—ˆ๋‹ค. ์˜ค๋Š˜ ์„ฑ๊ณต์ ์œผ๋กœ 10๋ฒˆ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ๋‹ค์‹œ ์ปดํŒŒ์ผ๋˜์—ˆ๊ณ  ์ด์ œ Firebase ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ํ”„๋กœ์ ํŠธ์— ์žˆ์„ ๋•Œ ๋” ์ด์ƒ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ œ๊ฑฐํ•˜๋ฉด ํ”„๋กœ์ ํŠธ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

[email protected]๋ฅผ ์‚ฌ์šฉ ์ค‘์ž…๋‹ˆ๋‹ค(8.0.0์œผ๋กœ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Œ).

๋‹ค์Œ ๋นŒ๋“œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

:app:processDebugResources/home/sandro/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.1.0.aar/c9104c96e21bf9c9613f4661f4e5d49e/res/values/values.xml:246:5-69: AAPT: error: resource android:attr/fontVariationSettings not found.

/home/sandro/.gradle/caches/transforms-1/files-1.1/appcompat-v7-26.1.0.aar/c9104c96e21bf9c9613f4661f4e5d49e/res/values/values.xml:246:5-69: AAPT: error: resource android:attr/ttcIndex not found.

/home/user/my_cordova_project/platforms/android/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:244: error: resource android:attr/fontVariationSettings not found.
/home/user/my_cordova_project/platforms/android/app/build/intermediates/incremental/mergeDebugResources/merged.dir/values/values.xml:244: error: resource android:attr/ttcIndex not found.
error: failed linking references.

Failed to execute aapt
com.android.ide.common.process.ProcessException: Failed to execute aapt
    at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:796)
    at com.android.build.gradle.tasks.ProcessAndroidResources.invokeAaptForSplit(ProcessAndroidResources.java:551)
    at com.android.build.gradle.tasks.ProcessAndroidResources.doFullTaskAction(ProcessAndroidResources.java:285)
    at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:109)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:73)
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$IncrementalTaskAction.doExecute(DefaultTaskClassInfoStore.java:173)
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:134)
    at org.gradle.api.internal.project.taskfactory.DefaultTaskClassInfoStore$StandardTaskAction.execute(DefaultTaskClassInfoStore.java:121)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter$1.run(ExecuteActionsTaskExecuter.java:122)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:111)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:92)
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:70)
    at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:63)
    at org.gradle.api.internal.tasks.execution.ResolveTaskOutputCachingStateExecuter.execute(ResolveTaskOutputCachingStateExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
    at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:88)
    at org.gradle.api.internal.tasks.execution.ResolveTaskArtifactStateTaskExecuter.execute(ResolveTaskArtifactStateTaskExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
    at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:54)
    at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
    at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:34)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker$1.run(DefaultTaskGraphExecuter.java:248)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:336)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor$RunnableBuildOperationWorker.execute(DefaultBuildOperationExecutor.java:328)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.execute(DefaultBuildOperationExecutor.java:197)
    at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:107)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:241)
    at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:230)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.processTask(DefaultTaskPlanExecutor.java:124)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.access$200(DefaultTaskPlanExecutor.java:80)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:105)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker$1.execute(DefaultTaskPlanExecutor.java:99)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.execute(DefaultTaskExecutionPlan.java:625)
    at org.gradle.execution.taskgraph.DefaultTaskExecutionPlan.executeWithTask(DefaultTaskExecutionPlan.java:580)
    at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor$TaskExecutorWorker.run(DefaultTaskPlanExecutor.java:99)
    at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63)
    at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
    at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
    at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:482)
    at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
    at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:794)
    ... 48 more
Caused by: java.util.concurrent.ExecutionException: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
    at com.google.common.util.concurrent.AbstractFuture.getDoneValue(AbstractFuture.java:503)
    at com.google.common.util.concurrent.AbstractFuture.get(AbstractFuture.java:462)
    at com.google.common.util.concurrent.AbstractFuture$TrustedFuture.get(AbstractFuture.java:79)
    at com.android.builder.internal.aapt.v2.QueueableAapt2.lambda$makeValidatedPackage$1(QueueableAapt2.java:179)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    ... 1 more
Caused by: com.android.tools.aapt2.Aapt2Exception: AAPT2 error: check logs for details
    at com.android.builder.png.AaptProcess$NotifierProcessOutput.handleOutput(AaptProcess.java:463)
    at com.android.builder.png.AaptProcess$NotifierProcessOutput.err(AaptProcess.java:415)
    at com.android.builder.png.AaptProcess$ProcessOutputFacade.err(AaptProcess.java:332)
    at com.android.utils.GrabProcessOutput$1.run(GrabProcessOutput.java:104)

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDebugResources'.

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”.

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ์˜๊ฒฌ์—์„œ ๊ฐ€์ ธ์˜จ ์†”๋ฃจ์…˜ https://github.com/arnesson/cordova-plugin-firebase/issues/1081#issuecomment -503041641

  1. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— build-extras.gradle ๋ฅผ ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
def dependencyMap = [
        "com.google.firebase:firebase-core": "16.0.8",
        "com.google.firebase:firebase-iid": "17.1.1",
        "com.google.firebase:firebase-messaging": "17.5.0",
        "com.google.firebase:firebase-config": "16.4.0",
        "com.google.firebase:firebase-perf": "16.2.4",
        "com.google.android.gms:play-services-tagmanager": "16.0.8",
        "com.google.firebase:firebase-auth": "16.2.0"
]

allprojects {
    repositories {
            google()
            jcenter()
            mavenLocal()
    }

    configurations.all {

        resolutionStrategy {

            eachDependency { DependencyResolveDetails details ->
                def group = details.requested.group
                def name = details.requested.name
                def fullName =  group + ":" + name
                print fullName
                if (dependencyMap.containsKey(fullName)) {
                    details.useVersion dependencyMap[fullName]
                }
            }
        }
    }

}
  1. ์ด ํ›„ํฌ ์ฝ”๋“œ๋ฅผ scripts/copy_build_extra.js์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
#!/usr/bin/env node

const fs = require('fs')
fs.copyFileSync("./build-extras.gradle", "./platforms/android/build-extras.gradle");
  1. Android ํ”Œ๋žซํผ ๋‚ด๋ถ€์˜ config.xml์—์„œ ํ›„ํฌ ๊ตฌ์„ฑ
<platform name="android">
  <hook src="scripts/copy_build_extra.js" type="after_prepare" />
</platform>
  1. ํ›„ํฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋žซํผ์„ ๋‹ค์‹œ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.
cordova platform rm android
cordova platform add android

๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ๊ณ  ํฌ๋ง๋„ ๋‹น์‹ ์„ ์œ„ํ•ด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค

๋ชจ๋“  59 ๋Œ“๊ธ€

์ด๋ฏธ 3์ผ ๋™์•ˆ ๊ฐ™์€ ๋ฌธ์ œ์™€ ์”จ๋ฆ„ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค

์•ˆ๋…•ํ•˜์„ธ์š” @SandroMoretti ,

๋‚˜๋Š” ๊ทธ ๋ฌธ์ œ๋กœ ํ•˜๋ฃจ ์ข…์ผ ์‹ธ์›Œ ์™”์Šต๋‹ˆ๋‹ค ... ๋‚ด ํ”„๋กœ์ ํŠธ๋„ Cordova 8๋กœ ์—…๋ฐ์ดํŠธ ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ Ionic 4๋กœ ์ด์‹ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค (Ionic 3์—์„œ ์™„๋ฃŒ). ๊ทธ๋ž˜์„œ ์ฝ”๋ฅด๋„๋ฐ” 8๊ณผ ์•„์ด์˜ค๋‹‰ 4์—์„œ ๋งŽ์€ ์˜ค๋ฅ˜ ๋์— ๊ฐ™์€ ์ง€์ ์— ๋„๋‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค... ๋‹˜์ด ์˜ฌ๋ฆฌ์‹  ์˜ค๋ฅ˜๋Š” ์•ˆ๋“œ๋กœ์ด๋“œ 28๊ณผ ๊ด€๋ จ์ด ์žˆ๋Š”๋ฐ ๊ทธ ์ด์œ ๋Š” ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ 'com.google. firebase:firebase-X :+'๋ฅผ ์ข…์†์„ฑ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์–ด์ œ Firebase๋Š” Android 28์„ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•˜๋Š” FB 6์›” 17์ผ ์†๋ณด๋ฅผ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค... ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ํ™•์ธํ–ˆ์ง€๋งŒ ํ•ญ์ƒ ๋‹ค๋ฅธ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. .

๋„์›€์„ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค!

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋ฐฉ๊ธˆ ์—…๋ฐ์ดํŠธํ•œ com.google.firebase:firebase-auth:+ ์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

https://developers.google.com/android/guides/releases

API <28์— ๋Œ€ํ•œ ์ง€์› ์ค‘๋‹จ

๊ฐ™์€ ๋ฌธ์ œ๋„! ๋” ์ด์ƒ ์•ˆ๋“œ๋กœ์ด๋“œ์— ๋นŒ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์ด์ œ ์•ฑ์„ ์ปดํŒŒ์ผํ•  ์ˆ˜ ์—†๊ณ  ๋‹ค์Œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

:app:processDebugResources
C:\Users\mmzep\.gradle\caches\transforms-1\files-1.1\core-1.0.0.aar\73b4a83ab5e76f20c84a66b1c8444d08\res\values\values.xml:133:5-70: AAPT: error: resource android:attr/fontVariationSettings not found.

C:\Users\mmzep\.gradle\caches\transforms-1\files-1.1\core-1.0.0.aar\73b4a83ab5e76f20c84a66b1c8444d08\res\values\values.xml:133:5-70: AAPT: error: resource android:attr/ttcIndex not found.

C:\Users\mmzep\Desktop\mario\Seven\SevenPassengerApp\platforms\android\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:95: error: resource android:attr/fontVariationSettings not found.
C:\Users\mmzep\Desktop\mario\Seven\SevenPassengerApp\platforms\android\app\build\intermediates\incremental\mergeDebugResources\merged.dir\values\values.xml:95: error: resource android:attr/ttcIndex not found.
error: failed linking references.

Failed to execute aapt

com.android.ide.common.process.ProcessException: Failed to execute aapt

        at com.android.builder.core.AndroidBuilder.processResources(AndroidBuilder.java:796)
        at com.android.build.gradle.tasks.ProcessAndroidResources.invokeAaptForSplit(ProcessAndroidResources.java:551)
        at com.android.build.gradle.tasks.ProcessAndroidResources.doFullTaskAction(ProcessAndroidResources.java:285)
        at com.android.build.gradle.internal.tasks.IncrementalTask.taskAction(IncrementalTask.java:109)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

๋‚˜๋Š” ์ •๋ง ์ด‰๋ฐ•ํ•œ ๋งˆ๊ฐ์ผ์— ์žˆ๊ณ  ์ด๊ฒƒ์€ ์ „์ ์œผ๋กœ Firebase์— ์˜์กดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‚ด ํ”„๋กœ์ ํŠธ๋ฅผ ์ค‘๋‹จ์‹œํ‚ต๋‹ˆ๋‹ค.

์ด ์กฐ๋ฆฌ๋ฒ•์ด ๋„์›€์ด ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://github.com/arnesson/cordova-plugin-firebase/issues/1081#issuecomment -503041641

๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. https://firebase.google.com/support/release-notes/android#20180523 ๋ฐ cordova android์—์„œ 8.0.0์œผ๋กœ ๋ชจ๋“  ์ข…์†์„ฑ์„ ์—…๋ฐ์ดํŠธํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. cordova-plugin-firebase๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์–ป๋Š” ์˜ค๋ฅ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Dependency failing: com.google.android.gms:play-services-tagmanager-api:15.0.2 -> com.google.android.gms:play-services-m
  easurement-base@[15.0.2], but play-services-measurement-base version was 15.0.4.

  The following dependencies are project dependencies that are direct or have transitive dependencies that lead to the art
  ifact with the issue.
  -- Project 'app' depends onto com.google.android.gms:[email protected]
  -- Project 'app' depends onto com.google.firebase:[email protected]
  -- Project 'app' depends onto com.google.android.gms:[email protected]
  -- Project 'app' depends onto com.google.android.gms:[email protected]
  -- Project 'app' depends onto com.google.android.gms:[email protected]
  -- Project 'app' depends onto com.google.android.gms:[email protected]

๋”ฐ๋ผ์„œ Firebase๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜ ์•„์นจ์— ๋‚˜๋Š” gradle์ด ์ƒˆ๋กœ์šด maven ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜๋Š” ๊ฒƒ์„ ๋ณด์•˜์„ ๋•Œ ์ด๋ฏธ ๋•€์„ ํ˜๋ฆฌ๊ณ  ์žˆ์—ˆ๊ณ  ๋‚ด ์˜ˆ์ƒ๋Œ€๋กœ ๋ชจ๋“  ๊ฒƒ์ด ๋ถ์„ ์ผ์œผ์ผฐ์Šต๋‹ˆ๋‹ค!

์—ฌ๊ธฐ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์–ด๋–ค ํ•ด๊ฒฐ์ฑ…์„ ์ฃผ์„ธ์š”

์ด ์˜๊ฒฌ์—์„œ ๊ฐ€์ ธ์˜จ ์†”๋ฃจ์…˜ https://github.com/arnesson/cordova-plugin-firebase/issues/1081#issuecomment -503041641

  1. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— build-extras.gradle ๋ฅผ ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
def dependencyMap = [
        "com.google.firebase:firebase-core": "16.0.8",
        "com.google.firebase:firebase-iid": "17.1.1",
        "com.google.firebase:firebase-messaging": "17.5.0",
        "com.google.firebase:firebase-config": "16.4.0",
        "com.google.firebase:firebase-perf": "16.2.4",
        "com.google.android.gms:play-services-tagmanager": "16.0.8",
        "com.google.firebase:firebase-auth": "16.2.0"
]

allprojects {
    repositories {
            google()
            jcenter()
            mavenLocal()
    }

    configurations.all {

        resolutionStrategy {

            eachDependency { DependencyResolveDetails details ->
                def group = details.requested.group
                def name = details.requested.name
                def fullName =  group + ":" + name
                print fullName
                if (dependencyMap.containsKey(fullName)) {
                    details.useVersion dependencyMap[fullName]
                }
            }
        }
    }

}
  1. ์ด ํ›„ํฌ ์ฝ”๋“œ๋ฅผ scripts/copy_build_extra.js์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
#!/usr/bin/env node

const fs = require('fs')
fs.copyFileSync("./build-extras.gradle", "./platforms/android/build-extras.gradle");
  1. Android ํ”Œ๋žซํผ ๋‚ด๋ถ€์˜ config.xml์—์„œ ํ›„ํฌ ๊ตฌ์„ฑ
<platform name="android">
  <hook src="scripts/copy_build_extra.js" type="after_prepare" />
</platform>
  1. ํ›„ํฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋žซํผ์„ ๋‹ค์‹œ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.
cordova platform rm android
cordova platform add android

๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ๊ณ  ํฌ๋ง๋„ ๋‹น์‹ ์„ ์œ„ํ•ด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค

์ด๊ฒƒ์€ ์ˆ˜ํ–‰ํ•  "ํ•ดํ‚น"์ด ์ ์€ ์ตœ๊ณ ์˜ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค. https://github.com/arnesson/cordova-plugin-firebase/issues/1081#issuecomment -503135862(cordova-android@8 ํ•„์š”)

@igorkurochka ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์‹œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

์ถ”์‹ : ์ €๋Š” cordova 6.5 ๋ฐ Android 7.1.4๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ dann์ด ๋งํ•œ ๊ฒƒ์ฒ˜๋Ÿผ Android 8๋กœ ์—…๋ฐ์ดํŠธํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

@SandroMoretti ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ํ•˜์„ธ์š”. 4์›”์— ํ”Œ๋Ÿฌ๊ทธ์ธ ํฌํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋” ๋งŽ์€ ๊ณจ์นซ๊ฑฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Š” cordova-android@7 ์„ ์‚ฌ์šฉ ํ•˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ข…์†์„ฑ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋” ์ด์ƒ API < 28์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ API 28์„ ์‚ฌ์šฉํ•˜๋Š” cordova-android@8 ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค...

@dann95 ์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค . ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด์œ ๋Š” ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ ์ฝ”๋ฅด๋„๋ฐ”๋ฅผ ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

Npm์€ ์—ฌ๊ธฐ์— ์ฝ”๋ฅด๋„๋ฐ” 6.5๋ฅผ ์„ค์น˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์•„๋งˆ๋„ ์ œ ๊ตฌ์‹ ์‹œ์Šคํ…œ(์šฐ๋ถ„ํˆฌ 14)์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.
์–ธ์  ๊ฐ€๋Š” OS๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•˜๊ธฐ ์œ„ํ•ด ํ•˜๋ฃจ๋ฅผ ์˜ˆ์•ฝํ•œ ๋‹ค์Œ ์ฝ”๋ฅด๋„๋ฐ”์™€ ์•ˆ๋“œ๋กœ์ด๋“œ ํ”Œ๋žซํผ์„ ์—…๋ฐ์ดํŠธํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Cordova cli๊ฐ€ ์ „์—ญ์ ์œผ๋กœ ์„ค์น˜๋˜์–ด ์žˆ์œผ๋ฉด ์ „์—ญ์ ์œผ๋กœ ์ œ๊ฑฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. "-g" xD

@SandroMoretti ์—…๋ฐ์ดํŠธํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”. ํ•˜์„ธ์š”. 4์›”์— ํ”Œ๋Ÿฌ๊ทธ์ธ ํฌํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋นŒ๋“œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋” ๋งŽ์€ ๊ณจ์นซ๊ฑฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•  ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ €๋Š” cordova-android@7 ์„ ์‚ฌ์šฉ ํ•˜๊ณ  ์žˆ์—ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ข…์†์„ฑ์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ๋” ์ด์ƒ API < 28์„ ์ง€์›ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ API 28์„ ์‚ฌ์šฉํ•˜๋Š” cordova-android@8 ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค...

cordova-plugin-firebase ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ด์ „์—๋Š” 93,9MB์˜€์œผ๋‚˜ ์ง€๊ธˆ์€ 1,30MB์ž…๋‹ˆ๋‹ค.
cordova-plugin-cocoapod-support ์ด์ „์—๋Š” ์„ค์น˜๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๊นŒ?

@pegasx
cocoapod-support๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@pegasx
cocoapod-support๊ฐ€ ์„ค์น˜๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค. dpa99c์˜ ์†”๋ฃจ์…˜์„ ์„ค์น˜ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์งˆ๋ฌธ์€ @dann95์ž…๋‹ˆ๋‹ค.

cordova-plugin-firebase ๋””๋ ‰ํ† ๋ฆฌ๊ฐ€ ์ด์ „์—๋Š” 93,9MB์˜€์œผ๋‚˜ ์ง€๊ธˆ์€ 1,30MB์ž…๋‹ˆ๋‹ค.
cordova-plugin-cocoapod-support ์ด์ „์—๋Š” ์„ค์น˜๋˜์ง€ ์•Š์•˜์ง€๋งŒ ์ง€๊ธˆ์€ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๊นŒ?

image

cocoapod๋Š” "swift"์šฉ์ด์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด Linux์—๋„ ์„ค์น˜๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์œ ๋ฅผ ์กฐ์‚ฌํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

ํฌ๊ธฐ์— ๋Œ€ํ•ด, ์ด์ „์— ํฌ๊ธฐ๊ฐ€ ์–ด๋• ๋Š”์ง€ ํ™•์ธํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด ์†”๋ฃจ์…˜ ์€ ์ €์—๊ฒŒ ํšจ๊ณผ์ ์ด์—ˆ์ง€๋งŒ ๋งํฌ์˜ ๋‹จ๊ณ„๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ์กด ์ €์žฅ์†Œ์—์„œ ๋” ๋งŽ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ƒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค๊ณ  ๋ชจ๋“  ํŒŒ์ผ์„ ์ƒˆ ํ”„๋กœ์ ํŠธ์— ๋ณต์‚ฌํ•ด์•ผ ํ–ˆ์Šต๋‹ˆ๋‹ค.

@igorkurochka , ๋‹ค์‹œ ์ผํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@igorkurochka
์ˆ˜์ •ํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์ชฝ์—์„œ๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์ดํ•ด๋Š” ์•„๋ž˜ ๋ชฉ๋ก์ด firbase ํ”Œ๋Ÿฌ๊ทธ์ธ์˜ ์ข…์†์„ฑ์ด๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ๋“ค์€ ํ”Œ๋Ÿฌ๊ทธ์ธ ์ž์ฒด์— ์˜ํ•ด ์ •์˜๋˜์–ด์•ผ ํ•˜์ง€ ์•Š์Šต๋‹ˆ๊นŒ? ์™ธ๋ถ€ ์ฝ”๋ฅด๋„๋ฐ” ํ›„ํฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ Android ํ”„๋กœ์ ํŠธ์— ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ ์†”๋ฃจ์…˜์€ ์•„๋‹™๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ ๋ฆฌํฌ์ง€ํ† ๋ฆฌ์— ์ •์˜๋œ ์ข…์†์„ฑ์˜ ์ •ํ™•ํ•œ ๋ฒ„์ „์„ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ํ’€ ์š”์ฒญ์„ ์ƒ์„ฑํ•  ๊ธฐํšŒ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ? ๊ฐ์‚ฌ ํ•ด์š”.

```
def ์˜์กด์„ฑ ๋งต = [
"com.google. firebase:firebase -core ": "16.0.8",
"com.google. firebase:firebase-iid ": "17.1.1",
"com.google. firebase:firebase -messaging ": "17.5.0",
"com.google. firebase:firebase -config ": "16.4.0",
"com.google. firebase:firebase-perf ": "16.2.4",
"com.google.android.gms :play-services-tagmanager ": "16.0.8",
"com.google. firebase:firebase -auth ": "16.2.0"
]

@์‚ฐ๋“œ๋กœ๋ชจ๋ ˆํ‹ฐ
@igorkurochka ๊ฐ€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๊ฒƒ์€ ์‚ฌ์‹ค์ด์ง€๋งŒ ์ด๊ฒƒ์€ ํ•ด๊ฒฐ์ฑ…์ด ์•„๋‹ˆ๋ผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์—

์ด ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ์—ฌ๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

์ด ๋Œ“๊ธ€์—์„œ ๊ฐ€์ ธ์˜จ ์†”๋ฃจ์…˜ #1081(๋Œ“๊ธ€)

  1. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— build-extras.gradle ๋ฅผ ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
def dependencyMap = [
        "com.google.firebase:firebase-core": "16.0.8",
        "com.google.firebase:firebase-iid": "17.1.1",
        "com.google.firebase:firebase-messaging": "17.5.0",
        "com.google.firebase:firebase-config": "16.4.0",
        "com.google.firebase:firebase-perf": "16.2.4",
        "com.google.android.gms:play-services-tagmanager": "16.0.8",
        "com.google.firebase:firebase-auth": "16.2.0"
]

allprojects {
    repositories {
            google()
            jcenter()
            mavenLocal()
    }

    configurations.all {

        resolutionStrategy {

            eachDependency { DependencyResolveDetails details ->
                def group = details.requested.group
                def name = details.requested.name
                def fullName =  group + ":" + name
                print fullName
                if (dependencyMap.containsKey(fullName)) {
                    details.useVersion dependencyMap[fullName]
                }
            }
        }
    }

}
  1. ์ด ํ›„ํฌ ์ฝ”๋“œ๋ฅผ scripts/copy_build_extra.js์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
#!/usr/bin/env node

const fs = require('fs')
fs.copyFileSync("./build-extras.gradle", "./platforms/android/build-extras.gradle");
  1. Android ํ”Œ๋žซํผ ๋‚ด๋ถ€์˜ config.xml์—์„œ ํ›„ํฌ ๊ตฌ์„ฑ
<platform name="android">
  <hook src="scripts/copy_build_extra.js" type="after_prepare" />
</platform>
  1. ํ›„ํฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋žซํผ์„ ๋‹ค์‹œ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.
cordova platform rm android
cordova platform add android

๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ๊ณ  ํฌ๋ง๋„ ๋‹น์‹ ์„ ์œ„ํ•ด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค

์•ˆ๋…•ํ•˜์„ธ์š” @igorkurochka , ์ €๋Š” ์—ฌ์ „ํžˆ ์ด๋Ÿฌํ•œ ์œ ํ˜•์˜ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๋ฌธ์ œ์— ๋Œ€ํ•ด ์ €๋ฅผ ๋„์™€์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
ํ”Œ๋žซํผ/์•ˆ๋“œ๋กœ์ด๋“œ/์•ฑ/src/main/java/org/apache/cordova/firebase/FirebasePlugin. java:9 : ์˜ค๋ฅ˜: ๊ธฐํ˜ธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
import android.support.v4.app.NotificationManagerCompat;

@pankajPizone gradle ์บ์‹œ๋ฅผ ์‚ญ์ œ ํ–ˆ์Šต๋‹ˆ๊นŒ?

rm -rf ~/.gradle/

@dann95 ์•ˆ๋“œ๋กœ์ด๋“œ ํด๋”?

"~"๋Š” ์ง‘์„ ์˜๋ฏธํ•˜๋ฏ€๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ง€์›Œ์ง‘๋‹ˆ๋‹ค.

/home/myusername/.gradle/

์ข‹์•„ @ dann95 ์‹œ๋„ ์ค‘

@dann95 ์—ฌ์ „ํžˆ ๋˜‘๊ฐ™๋‹ค

๊ดœ์ฐฎ์•„.
๋‹ค์‹œ ์—ฝ๋‹ˆ๋‹ค.
@uifox ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

Dan, ๋‚ด cordova cli์— ๋Œ€ํ•ด ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ์ œ๊ฑฐ๋˜์—ˆ์œผ๋ฉฐ ์ „ ์„ธ๊ณ„์ ์œผ๋กœ ๋‹ค์‹œ ์„ค์น˜๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
๋‚ด๊ฐ€ ๋งํ–ˆ๋“ฏ์ด ์žฌ์„ค์น˜ ํ›„ 6.5๋ฅผ ์œ ์ง€ํ•˜์‹ญ์‹œ์˜ค.

๊ฐ์‚ฌ ํ•ด์š”.

@SandroMoretti ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์•˜์Šต๋‹ˆ๊นŒ?
๋‚˜๋Š”์ด ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ ์žˆ๋‹ค
Firebase/FirebasePluginMessagingService. java:11 : ์˜ค๋ฅ˜: ๊ธฐํ˜ธ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
import android.support.v4.app.NotificationCompat;

@SandroMoretti๊ฐ€ ๋…ธ๋“œ ๋ฒ„์ „์„ ์—…๊ทธ๋ ˆ์ด๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ๋…ธ๋“œ ๋ฒ„์ „ ๊ฐ„์— ์‰ฝ๊ฒŒ ์ „ํ™˜ํ•  ์ˆ˜ ์žˆ๋„๋ก nvm์„ ์‚ฌ์šฉํ•ด ๋ณด์‹ญ์‹œ์˜ค.

@pankajPizone ๋ชจ๋“  ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ•จ๊ป˜ config.xml์„ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ?

@ dann95 ๋Š” config.xml์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์ž…๋‹ˆ๋‹ค.

<plugin name="cordova-plugin-statusbar" spec="^2.4.2" />
    <plugin name="cordova-plugin-splashscreen" spec="^5.0.2" />
    <plugin name="cordova-plugin-ionic-webview" spec="^2.4.0">
        <variable name="ANDROID_SUPPORT_ANNOTATIONS_VERSION" value="27.+" />
    </plugin>
    <plugin name="cordova-plugin-ionic-keyboard" spec="^2.1.3" />
    <plugin name="cordova-plugin-firebase" spec="^2.0.5" />
    <plugin name="cordova-plugin-facebook4" spec="^4.2.1">
        <variable name="APP_ID" value="xxxxxx" />
        <variable name="APP_NAME" value="x x" />
        <variable name="FACEBOOK_ANDROID_SDK_VERSION" value="4.38.1" />
        <variable name="FACEBOOK_HYBRID_APP_EVENTS" value="false" />
    </plugin>
    <plugin name="cordova-plugin-nativegeocoder" spec="^3.2.0" />
    <plugin name="cordova-plugin-geolocation" spec="^4.0.1">
        <variable name="GEOLOCATION_USAGE_DESCRIPTION" value="To locate you" />
    </plugin>
    <plugin name="cordova-plugin-appavailability" spec="^0.4.2" />
    <plugin name="cordova-plugin-media" spec="^5.0.2" />
    <plugin name="cordova-plugin-music-controls" spec="^2.2.0" />
    <plugin name="cordova-plugin-contacts" spec="^3.0.1" />
    <plugin name="cordova-plugin-applemusic" spec="^1.3.3" />
    <plugin name="cordova-plugin-apple-music" spec="^0.2.5" />
    <plugin name="cordova-plugin-whitelist" spec="^1.3.3" />
    <plugin name="com.telerik.plugins.nativepagetransitions" spec="^0.6.5" />
    <plugin name="cordova-plugin-applemusic" spec="^1.3.3" />
    <plugin name="cordova-plugin-apple-music" spec="^0.2.5" />
    <plugin name="cordova-plugin-add-swift-support" spec="1.7.2" />
    <allow-navigation href="http://192.168.1.120:8100" sessionid="8e9a7c7b" />
    <plugin name="com.telerik.plugins.nativepagetransitions" spec="0.6.5" />
  <plugin name="cordova-plugin-googleplus" spec="7.0.0">
        <variable name="REVERSED_CLIENT_ID" value="com.googleusercontent.apps.xxxxxxx" />
        <variable name="WEB_APPLICATION_CLIENT_ID" value="xxxxx-xxxxxxx.apps.googleusercontent.com" />
        <variable name="PLAY_SERVICES_VERSION" value="11.8.0" />
    </plugin>
    <plugin name="cordova-plugin-device" spec="../../cordova-plugin-device" />
    <plugin name="uk.co.workingedge.phonegap.plugin.launchnavigator" spec="5.0.4">
        <variable name="GOOGLE_API_KEY_FOR_ANDROID" value="xxxxx" />
        <variable name="OKHTTP_VERSION" value="3.12.0" />
    </plugin>
    <plugin name="cordova-plugin-customurlscheme" spec="4.3.0">
        <variable name="URL_SCHEME" value="spotifyapp" />
        <variable name="ANDROID_SCHEME" value=" " />
        <variable name="ANDROID_HOST" value=" " />
        <variable name="ANDROID_PATHPREFIX" value="/" />
    </plugin>
    <plugin name="cordova-spotify-oauth" spec="0.1.11" />
    <plugin name="cordova-spotify" spec="0.5.8" />
    <plugin name="cordova-plugin-geofence" spec="0.7.0" />
    <engine name="ios" spec="4.5.5" />
    <engine name="android" spec="8.0.0" />

@dann95 ๋ฌธ์ œ๋ฅผ ์ฐพ๋Š” ๋ฐ ๋„์›€์ด ๋˜๋‚˜์š”?

@pankajPizone ์ด์œ ๋ฅผ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ์„ ์ œ๊ฑฐํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ–ˆ์Šต๋‹ˆ๊นŒ?

@ dann95 ์—ฌ๋Ÿฌ ๋ฒˆ ์‹œ๋„ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๊ฐœ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

ionic cordova plugin add cordova-plugin-androidx
ionic cordova plugin add cordova-plugin-androidx-adapter

@pankajPizone ์ด ๋‘ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์‚ฌ์šฉํ•˜์ง€๋งŒ Cordova ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š”...

์ด ์—…๋ฐ์ดํŠธ์— ์—ฌ์ „ํžˆ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€:
    ์ž‘์—… ': app:compileDebugJavaWithJavac '์˜ ์ข…์†์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    ๊ตฌ์„ฑ ': app:debugCompileClasspath '์— ๋Œ€ํ•œ ๋ชจ๋“  ์ž‘์—… ์ข…์†์„ฑ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    androidx์™€ ์ผ์น˜ํ•˜๋Š” ๋ฒ„์ „์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ:legacy-support-v4 :27.+.
    ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ฒ„์ „:

    • 1.0.0
    • 1.0.0-rc02
    • 1.0.0-rc01
    • 1.0.0-๋ฒ ํƒ€01
    • 1.0.0-์•ŒํŒŒ3

      • 1๊ฐœ ๋”

        ์š”๊ตฌ:

        ํ”„๋กœ์ ํŠธ : ์•ฑ

  • ๋…ธ๋ ฅํ•˜๋‹ค:
    --stacktrace ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์‹คํ–‰ํ•˜์—ฌ ์Šคํƒ ์ถ”์ ์„ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ๋กœ๊ทธ ์ถœ๋ ฅ์„ ์–ป์œผ๋ ค๋ฉด --info ๋˜๋Š” --debug ์˜ต์…˜๊ณผ ํ•จ๊ป˜ ์‹คํ–‰ํ•˜์‹ญ์‹œ์˜ค. --scan์œผ๋กœ ์‹คํ–‰ํ•˜์—ฌ ์ „์ฒด ํ†ต์ฐฐ๋ ฅ์„ ์–ป์œผ์‹ญ์‹œ์˜ค.

  • https://help.gradle.org ์—์„œ ๋” ๋งŽ์€ ๋„์›€์„ ๋ฐ›์œผ์„ธ์š”.

58์ดˆ์— ๊ตฌ์ถ• ์‹คํŒจ
C:UsersAdminDesktopOMNICARomnicarplatformsandroidgradlew: ์ข…๋ฃŒ ์ฝ”๋“œ 1 ์˜ค๋ฅ˜ ์ถœ๋ ฅ์œผ๋กœ ๋ช…๋ น ์‹คํŒจ:
FAILURE: ์˜ˆ์™ธ๋กœ ์ธํ•ด ๋นŒ๋“œ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฌด์—‡์ด ์ž˜๋ชป๋˜์—ˆ๋Š”์ง€:
    ':app:compileDebugJavaWithJavac' ์ž‘์—…์˜ ์ข…์†์„ฑ์„ ํ™•์ธํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    > ':app:debugCompileClasspath' ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ž‘์—… ์ข…์†์„ฑ์„ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    > androidx์™€ ์ผ์น˜ํ•˜๋Š” ๋ฒ„์ „์„ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋ ˆ๊ฑฐ์‹œ:legacy-support-v4 :27.+.
    ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ๋ฒ„์ „:

    • 1.0.0

    • 1.0.0-rc02

    • 1.0.0-rc01

    • 1.0.0-๋ฒ ํƒ€01

    • 1.0.0-์•ŒํŒŒ3



      • 1๊ฐœ ๋”


        ์š”๊ตฌ:


        ํ”„๋กœ์ ํŠธ : ์•ฑ



build.gradle์— ํ”Œ๋žซํผ ์ข…์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋งž๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ด์ง€๋งŒ "cordova compile"์„ ์‹คํ–‰ํ•˜๋ฉด ์ข…์†์„ฑ์ด ๋‹ค์‹œ ์ž˜๋ชป๋œ ๊ฒƒ์œผ๋กœ ๋ฐ”๋€๋‹ˆ๋‹ค.

์ฝ”๋ฅด๋„๋ฐ” ํ”Œ๋Ÿฌ๊ทธ์ธ ls
์ฝ”๋ฅด๋„๋ฐ” ํŒจ๋ธŒ๋ฆญ ํ”Œ๋Ÿฌ๊ทธ์ธ 1.1.14-dev "์ฝ”๋ฅด๋„๋ฐ” ํŒจ๋ธŒ๋ฆญ ํ”Œ๋Ÿฌ๊ทธ์ธ"
cordova-plugin-android-permissions 1.0.0 "๊ถŒํ•œ"
์ฝ”๋ฅด๋„๋ฐ”-ํ”Œ๋Ÿฌ๊ทธ์ธ-์•ˆ๋“œ๋กœ์ด๋“œx 1.0.2 "์ฝ”๋ฅด๋„๋ฐ”-ํ”Œ๋Ÿฌ๊ทธ์ธ-์•ˆ๋“œ๋กœ์ด๋“œx"
์ฝ”๋ฅด๋„๋ฐ”-ํ”Œ๋Ÿฌ๊ทธ์ธ-์•ˆ๋“œ๋กœ์ด๋“œx-์–ด๋Œ‘ํ„ฐ 1.0.2 "์ฝ”๋ฅด๋„๋ฐ”-ํ”Œ๋Ÿฌ๊ทธ์ธ-์•ˆ๋“œ๋กœ์ด๋“œx-์–ด๋Œ‘ํ„ฐ"
cordova-plugin-camera 4.0.3 "์นด๋ฉ”๋ผ"
cordova-plugin-cocoapod-supportx 1.6.1 "Cordova CocoaPods ์ข…์†์„ฑ ์ง€์›"
cordova-plugin-crop 0.3.1 "CropPlugin"
cordova-plugin-device 1.1.7 "์žฅ์น˜"
์ฝ”๋ฅด๋„๋ฐ” ํ”Œ๋Ÿฌ๊ทธ์ธ ํŒŒ์ผ 6.0.1 "ํŒŒ์ผ"
cordova-plugin-filechooser 1.2.0 "ํŒŒ์ผ ์„ ํƒ๊ธฐ"
์ฝ”๋ฅด๋„๋ฐ”-ํ”Œ๋Ÿฌ๊ทธ์ธ-ํŒŒ์ผ๊ฒฝ๋กœ 1.5.5 "์ฝ”๋ฅด๋„๋ฐ”-ํ”Œ๋Ÿฌ๊ทธ์ธ-ํŒŒ์ผ๊ฒฝ๋กœ"
cordova-plugin-firebasex 2.0.6 "Google Firebase ํ”Œ๋Ÿฌ๊ทธ์ธ"
cordova-plugin-geolocation 4.0.1 "์ง€๋ฆฌ์  ์œ„์น˜"
cordova-plugin-googlemaps 2.6.3-20190614-1928 "cordova-plugin-googlemaps"
์ฝ”๋ฅด๋„๋ฐ”-ํ”Œ๋Ÿฌ๊ทธ์ธ-์ด์˜จ-ํ‚ค๋ณด๋“œ 2.1.3 "์ฝ”๋ฅด๋„๋ฐ”-ํ”Œ๋Ÿฌ๊ทธ์ธ-์ด์˜จ-ํ‚ค๋ณด๋“œ"
cordova-plugin-ionic-webview 2.5.0 "cordova-plugin-ionic-webview"
cordova-plugin-screen-orientation 3.0.1 "ํ™”๋ฉด ๋ฐฉํ–ฅ"
cordova-plugin-splashscreen 5.0.2 "์Šคํ”Œ๋ž˜์‹œ ํ™”๋ฉด"
์ฝ”๋ฅด๋„๋ฐ” ํ”Œ๋Ÿฌ๊ทธ์ธ ์ƒํƒœ ํ‘œ์‹œ์ค„ 2.4.2 "์ƒํƒœ ํ‘œ์‹œ์ค„"
cordova-plugin-whitelist 1.3.3 "ํ™”์ดํŠธ๋ฆฌ์ŠคํŠธ"
cordova-sqlite-storage 3.2.0 "Cordova sqlite ์Šคํ† ๋ฆฌ์ง€ ํ”Œ๋Ÿฌ๊ทธ์ธ - cordova-sqlite-storage ํ”Œ๋Ÿฌ๊ทธ์ธ ๋ฒ„์ „"
es6-promise-plugin 4.2.2 "์•ฝ์†"
info.protonet.imageresizer 0.1.1 "์ด๋ฏธ์ง€ ํฌ๊ธฐ ์กฐ์ •๊ธฐ"
onesignal-cordova-plugin 2.4.7 "OneSignal ํ‘ธ์‹œ ์•Œ๋ฆผ"

error: cannot find symbol class NotificationManagerCompat ์—๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด PR์„ ๋ณด๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ํ˜„์žฌ wizpanda ํฌํฌ์—์„œ ๋ถ„๋ฆฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋‘ ๊ฐœ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

ionic cordova plugin add cordova-plugin-androidx
ionic cordova plugin add cordova-plugin-androidx-adapter

๊ด‘์‚ฐ์€ ์ด ์†”๋ฃจ์…˜์œผ๋กœ๋„ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์ง€๋งŒ ๋‚ด ์•ฑ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ์ผ์ข…์˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ํ”Œ๋Ÿฌ๊ทธ์ธ์— ์•ก์„ธ์Šคํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์™€ ๊ฐ™์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ๋กœ adb logcat์€ ๋‹ค์Œ์„ ๋˜์ง‘๋‹ˆ๋‹ค.
AndroidProtocolHandler: Unable to open asset URL: file:///android_asset/www/cordova_plugins.js
ํ•˜์ง€๋งŒ ํ”„๋กœ์ ํŠธ๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ƒ์„ฑํ–ˆ๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค. ์™„์ „ํžˆ ์žƒ์—ˆ๋‹ค.

@AurumLinux ์ด ์ฃผ์„ ์˜ ๋ช…๋ น์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ๋‹จ๊ณ„๋ณ„๋กœ ์•ฑ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ์กด์˜ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ ์œ„์— ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋‹จ์ˆœํžˆ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” ๋‚ด๊ฐ€ cordova-plugin-admobpro ๋Œ€์‹  cordova-plugin-admobpro-firebase ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด์ œ ์ •์ƒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

cordova-plugin-firebase -> src -> android -> build.gradle ๋ณ€๊ฒฝ ์ค„ 20๋ฒˆ com.google. firebase:firebase-auth :+ com.google. firebase:firebase-auth :16.2.1

๊ทธ๊ฒƒ์€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค :

ionic cordova ํ”Œ๋Ÿฌ๊ทธ์ธ์€ cordova-plugin-androidx๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
ionic cordova ํ”Œ๋Ÿฌ๊ทธ์ธ์€ cordova-plugin-androidx-adapter๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๊ฒƒ์€ ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค :

ionic cordova ํ”Œ๋Ÿฌ๊ทธ์ธ์€ cordova-plugin-androidx๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
ionic cordova ํ”Œ๋Ÿฌ๊ทธ์ธ์€ cordova-plugin-androidx-adapter๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

@fvadouko ์–ด๋–ค ์•ˆ๋“œ๋กœ์ด๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? 7.1 ๋˜๋Š” 8.0? ๋‹ค๋ฅธ ํ˜ธํ™˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋˜๋Š” ์ˆ˜์ • ์‚ฌํ•ญ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@AurumLinux ์ด ์ฃผ์„ ์˜ ๋ช…๋ น์œผ๋กœ ์‹œ์ž‘ํ•˜์—ฌ ๋‹จ๊ณ„๋ณ„๋กœ ์•ฑ์„ ๋‹ค์‹œ ๋นŒ๋“œํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
๊ธฐ์กด์˜ ๊ธฐ์กด ํ”„๋กœ์ ํŠธ ์œ„์— ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋‹จ์ˆœํžˆ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ•  ๋•Œ๋„ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ๋ฉฐ์น  ๋™์•ˆ์ด ๋ฒ„๊ทธ๋กœ ๊ณ ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์—ฐ๊ฒฐ๋œ ์ฃผ์„์—์„œ ํฌํฌ๋กœ ์ „ํ™˜ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋Œ“๊ธ€์—์„œ ๊ฐ€์ ธ์˜จ ์†”๋ฃจ์…˜ #1081(๋Œ“๊ธ€)

  1. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— build-extras.gradle ๋ฅผ ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
def dependencyMap = [
        "com.google.firebase:firebase-core": "16.0.8",
        "com.google.firebase:firebase-iid": "17.1.1",
        "com.google.firebase:firebase-messaging": "17.5.0",
        "com.google.firebase:firebase-config": "16.4.0",
        "com.google.firebase:firebase-perf": "16.2.4",
        "com.google.android.gms:play-services-tagmanager": "16.0.8",
        "com.google.firebase:firebase-auth": "16.2.0"
]

allprojects {
    repositories {
            google()
            jcenter()
            mavenLocal()
    }

    configurations.all {

        resolutionStrategy {

            eachDependency { DependencyResolveDetails details ->
                def group = details.requested.group
                def name = details.requested.name
                def fullName =  group + ":" + name
                print fullName
                if (dependencyMap.containsKey(fullName)) {
                    details.useVersion dependencyMap[fullName]
                }
            }
        }
    }

}
  1. ์ด ํ›„ํฌ ์ฝ”๋“œ๋ฅผ scripts/copy_build_extra.js์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
#!/usr/bin/env node

const fs = require('fs')
fs.copyFileSync("./build-extras.gradle", "./platforms/android/build-extras.gradle");
  1. Android ํ”Œ๋žซํผ ๋‚ด๋ถ€์˜ config.xml์—์„œ ํ›„ํฌ ๊ตฌ์„ฑ
<platform name="android">
  <hook src="scripts/copy_build_extra.js" type="after_prepare" />
</platform>
  1. ํ›„ํฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋žซํผ์„ ๋‹ค์‹œ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.
cordova platform rm android
cordova platform add android

๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ๊ณ  ํฌ๋ง๋„ ๋‹น์‹ ์„ ์œ„ํ•ด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค

ํƒ‘ ๐Ÿ‘๐Ÿฝ

๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜์—ฌ ๋„์›€์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค
https://github.com/arnesson/cordova-plugin-firebase/issues/1089

@igorkurochka ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์œผ๋กœ ๊ณ ์ƒํ–ˆ๋‹ค.

๋‚˜๋Š” ๋ฌธ์ œ๊ฐ€์žˆ๋‹ค
FirebasePlugin.java:365: error: cannot find symbol

@igorkurochka์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ์€ ๋‚ด ํ”„๋กœ์ ํŠธ์™€ ํ•จ๊ป˜ ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

@igorkurochka ์—ฌ๊ธฐ์—์„œ๋„ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค

์ด ๋Œ“๊ธ€์—์„œ ๊ฐ€์ ธ์˜จ ์†”๋ฃจ์…˜ #1081(๋Œ“๊ธ€)

1. put `build-extras.gradle` in your project root
def dependencyMap = [
        "com.google.firebase:firebase-core": "16.0.8",
        "com.google.firebase:firebase-iid": "17.1.1",
        "com.google.firebase:firebase-messaging": "17.5.0",
        "com.google.firebase:firebase-config": "16.4.0",
        "com.google.firebase:firebase-perf": "16.2.4",
        "com.google.android.gms:play-services-tagmanager": "16.0.8",
        "com.google.firebase:firebase-auth": "16.2.0"
]

allprojects {
    repositories {
            google()
            jcenter()
            mavenLocal()
    }

    configurations.all {

        resolutionStrategy {

            eachDependency { DependencyResolveDetails details ->
                def group = details.requested.group
                def name = details.requested.name
                def fullName =  group + ":" + name
                print fullName
                if (dependencyMap.containsKey(fullName)) {
                    details.useVersion dependencyMap[fullName]
                }
            }
        }
    }

}
1. put this hook code in your scripts/copy_build_extra.js
#!/usr/bin/env node

const fs = require('fs')
fs.copyFileSync("./build-extras.gradle", "./platforms/android/build-extras.gradle");
1. configure hook in config.xml inside android platform
<platform name="android">
  <hook src="scripts/copy_build_extra.js" type="after_prepare" />
</platform>
1. reinstall platform to activate the hook
cordova platform rm android
cordova platform add android

๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ๊ณ  ํฌ๋ง๋„ ๋‹น์‹ ์„ ์œ„ํ•ด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค

๋งค๋ ฅ์ฒ˜๋Ÿผ ์ผํ–ˆ์Šต๋‹ˆ๋‹ค :). ํ™˜์ƒ์ ์ธ ์†”๋ฃจ์…˜.

์ด ๋Œ“๊ธ€์—์„œ ๊ฐ€์ ธ์˜จ ์†”๋ฃจ์…˜ #1081(๋Œ“๊ธ€)

  1. ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— build-extras.gradle ๋ฅผ ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
def dependencyMap = [
        "com.google.firebase:firebase-core": "16.0.8",
        "com.google.firebase:firebase-iid": "17.1.1",
        "com.google.firebase:firebase-messaging": "17.5.0",
        "com.google.firebase:firebase-config": "16.4.0",
        "com.google.firebase:firebase-perf": "16.2.4",
        "com.google.android.gms:play-services-tagmanager": "16.0.8",
        "com.google.firebase:firebase-auth": "16.2.0"
]

allprojects {
    repositories {
            google()
            jcenter()
            mavenLocal()
    }

    configurations.all {

        resolutionStrategy {

            eachDependency { DependencyResolveDetails details ->
                def group = details.requested.group
                def name = details.requested.name
                def fullName =  group + ":" + name
                print fullName
                if (dependencyMap.containsKey(fullName)) {
                    details.useVersion dependencyMap[fullName]
                }
            }
        }
    }

}
  1. ์ด ํ›„ํฌ ์ฝ”๋“œ๋ฅผ scripts/copy_build_extra.js์— ๋„ฃ์œผ์‹ญ์‹œ์˜ค.
#!/usr/bin/env node

const fs = require('fs')
fs.copyFileSync("./build-extras.gradle", "./platforms/android/build-extras.gradle");
  1. Android ํ”Œ๋žซํผ ๋‚ด๋ถ€์˜ config.xml์—์„œ ํ›„ํฌ ๊ตฌ์„ฑ
<platform name="android">
  <hook src="scripts/copy_build_extra.js" type="after_prepare" />
</platform>
  1. ํ›„ํฌ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ธฐ ์œ„ํ•ด ํ”Œ๋žซํผ์„ ๋‹ค์‹œ ์„ค์น˜ํ•˜์‹ญ์‹œ์˜ค.
cordova platform rm android
cordova platform add android

๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ๊ณ  ํฌ๋ง๋„ ๋‹น์‹ ์„ ์œ„ํ•ด ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค

์•ˆ๋…•ํ•˜์„ธ์š”, ์ž ์‹œ ์ž‘์—…ํ•œ ํ›„ Invalid Key: null ๋ฌธ์ œ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒˆ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

* What went wrong:
Could not determine the dependencies of task ':app:compileDebugJavaWithJavac'.
The library com.google.android.gms:play-services-analytics-impl is being requested by various other libraries at [[16.0.8,16.0.8], [17.0.0,17.0.0]], but resolves to 17.0.0. Disable the plugin and check your dependencies tree using ./gradlew :app:dependencies.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด 3๊ฐœ์˜ ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(play-services-analytics-impl, play-services-analytics ๋ฐ play-services-tagmanager-v4-impl)๋ฅผ 16.0.8๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด " Crashlytics found ์ž˜๋ชป๋œ API ํ‚ค: null." ๋‹ค์‹œ. ๋ถ„๋ช…ํžˆ "com.google.android.gms :play-services-tagmanager "๋ฅผ

๋„์›€์ด ๋˜์…จ๋‚˜์š”?

๋‹ค์Œ์€ ๋‚ด config.xml์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.
<platform name="android"> <allow-intent href="market:*" /> <hook src="hooks/android_build_extra.js" type="after_prepare" /> </platform> <platform name="ios"> <allow-intent href="itms:*" /> <allow-intent href="itms-apps:*" /> </platform> <platform name="android"> <preference name="android-minSdkVersion" value="19" /> <preference name="android-installLocation" value="auto" /> <preference name="disallowOverscroll" value="true" /> </platform> <platform name="ios"> </platform> <plugin name="cordova-plugin-device" spec="^2.0.2" /> <plugin name="cordova-plugin-globalization" spec="1.11.0" /> <plugin name="cordova-plugin-google-analytics" spec="1.8.6" /> <plugin name="cordova-plugin-inappbrowser" spec="3.0.0" /> <plugin name="cordova-plugin-splashscreen" spec="5.0.3" /> <plugin name="cordova-plugin-statusbar" spec="2.4.3" /> <plugin name="cordova-plugin-whitelist" spec="1.3.4" /> <plugin name="cordova-plugin-network-information" spec="2.0.2" /> <plugin name="com.lampa.startapp" spec="6.1.6" /> <plugin name="cordova-plugin-firebase" spec="2.0.5" /> <plugin name="cordova-android-play-services-gradle-release" spec="^4.0.0"> <variable name="PLAY_SERVICES_VERSION" value="11.0.+" /> </plugin> <plugin name="cordova-android-firebase-gradle-release" spec="^4.0.0"> <variable name="FIREBASE_VERSION" value="11.0.+" /> </plugin> <plugin name="cordova-android-support-gradle-release" spec="3.0.1"> <variable name="ANDROID_SUPPORT_VERSION" value="26.+" /> </plugin>

๋„์›€์ด ๋˜์…จ๋‚˜์š”?

๊ฐ์‚ฌ ํ•ด์š”,

์„ธ๋ฅด์ง€

๋‘ ๊ฐœ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

ionic cordova plugin add cordova-plugin-androidx
ionic cordova plugin add cordova-plugin-androidx-adapter

๊ณ ๋งˆ์›Œ์š”!

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰