Facebook-sdk-for-unity: Unity 2019.3.0f6์—์„œ ๋นŒ๋“œ ์‹คํŒจ-Firebase SDK์™€ ์ถฉ๋Œ-์ค‘๋ณต ์ข…์†์„ฑ

์— ๋งŒ๋“  2020๋…„ 02์›” 03์ผ  ยท  37์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: facebook/facebook-sdk-for-unity

์ฒดํฌ๋ฆฌ์ŠคํŠธ

ํ™˜๊ฒฝ

  • Unity ์—๋””ํ„ฐ ๋ฒ„์ „ : 2019.3.0f6
  • Unity SDK ๋ฒ„์ „ : 7.18.0 ๋ฐ 7.18.1
  • ์„ค์น˜ ํ”Œ๋žซํผ ๋ฐ ๋ฒ„์ „ : [Android] ๋ฒ„์ „ any
  • Firebase SDK ๋ฒ„์ „ : 6.10.0
  • Unity Jar Resolver ๋ฒ„์ „ : 1.2.135

๋ชฉํ‘œ

ํ”„๋กœ์ ํŠธ ๊ตฌ์ถ•

์˜ˆ์ƒ ๊ฒฐ๊ณผ

ํ”„๋กœ์ ํŠธ๊ฐ€ ์„ฑ๊ณต์ ์œผ๋กœ ๊ตฌ์ถ•๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์‹ค์ œ ๊ฒฐ๊ณผ

ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‹ค์Œ ์ถœ๋ ฅ์œผ๋กœ ๋นŒ๋“œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

CommandInvokationFailure: Gradle build failed. 
/Applications/Unity/Hub/Editor/2019.3.0f6/PlaybackEngines/AndroidPlayer/OpenJDK/bin/java -classpath "/Applications/Unity/Hub/Editor/2019.3.0f6/PlaybackEngines/AndroidPlayer/Tools/gradle/lib/gradle-launcher-6.1.1.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease"

stderr[

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':launcher:checkReleaseDuplicateClasses'.
> 1 exception was raised by workers:
  java.lang.RuntimeException: Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2)
  Duplicate class android.support.v4.app.INotificationSideChannel$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2)
  Duplicate class android.support.v4.app.INotificationSideChannel$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2)
  Duplicate class android.support.v4.os.IResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2)
  Duplicate class android.support.v4.os.IResultReceiver$Stub found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2)
  Duplicate class android.support.v4.os.IResultReceiver$Stub$Proxy found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2)
  Duplicate class android.support.v4.os.ResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2)
  Duplicate class android.support.v4.os.ResultReceiver$1 found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2)
  Duplicate class android.support.v4.os.ResultReceiver$MyResultReceiver found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2)
  Duplicate class android.support.v4.os.ResultReceiver$MyRunnable found in modules classes.jar (androidx.core:core:1.0.0) and classes.jar (com.android.support:support-compat:27.0.2)

  Go to the documentation to learn how to Fix dependency resolution errors.

์žฌํ˜„ ๋‹จ๊ณ„

  1. ์ƒˆ๋กœ์šด Unity 2019.3.0f6 ํ”„๋กœ์ ํŠธ ์ƒ์„ฑ
  2. ํ”„๋กœ์ ํŠธ ๋นŒ๋“œ ๋Œ€์ƒ์„ Android๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.
  3. Facebook SDK 7.18.0 ๊ฐ€์ ธ ์˜ค๊ธฐ
  4. ์ตœ์‹  Firebase Analytics SDK 6.10.0 ์„ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค.
  5. Unity Jar Resolver v1.2.135 ๋ฅผ ํ”„๋กœ์ ํŠธ๋กœ ๊ฐ€์ ธ
  6. mainTemplate.gradle ํ™œ์„ฑํ™” (ํ”Œ๋ ˆ์ด์–ด ์„ค์ •-> ๊ฒŒ์‹œ ์„ค์ •-> ์‚ฌ์šฉ์ž ์ •์˜ gradle ํ…œํ”Œ๋ฆฟ ํ™•์ธ)
  7. Assets / Play Services Resolver / Android Resolver / Resolve๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  8. ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋˜๋ฉด Jetifier ํ™œ์„ฑํ™”
  9. ํ”„๋กœ์ ํŠธ ๊ตฌ์ถ•

๋˜๋Š”

  1. ๋‚ด๊ฐ€ ๋งŒ๋“  ์žฌํ˜„ ํ”„๋กœ์ ํŠธ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ ์—ฝ๋‹ˆ ๋‹ค.
  2. ๋นŒ๋“œ ๋Œ€์ƒ์„ Android๋กœ ๋ณ€๊ฒฝ
  3. ํ”„๋กœ์ ํŠธ ๊ตฌ์ถ•

์ฝ”๋“œ ์ƒ˜ํ”Œ ๋ฐ ์„ธ๋ถ€ ์ •๋ณด

Facebook SDK๋กœ๋งŒ ๋นŒ๋“œํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
Firebase SDK๋งŒ์œผ๋กœ ๋นŒ๋“œํ•˜๋ฉด ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
Facebook SDK์™€ Firebase SDK๋กœ ๋นŒ๋“œํ•˜๋ฉด ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

์•ž์„œ ์–ธ๊ธ‰ ํ•œ ๋‹จ๊ณ„์— ๋”ฐ๋ผ Repro ํ”„๋กœ์ ํŠธ๋ฅผ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.
https://drive.google.com/file/d/1ngzavtEftODND1EpRyNchq3qClpyXl0C/view?usp=sharing

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

Unity 2019.3.11f1์— ๋Œ€ํ•ด ๋‘ ๋‹จ๊ณ„๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. Edit -> Project Settings -> Player -> Publishing settings -> Custom Properties Gradle Template
  2. ์ƒˆ๋กœ ์ƒ์„ฑ ๋œ gradleTemplate.properties ์ด๋™ํ•˜์—ฌ ๋‹ค์Œ ์ค„์„ ๋งจ ์œ„์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    ```์†์„ฑ
    android.useAndroidX = true
    android.enableJetifier = true

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

์•ˆ๋…•ํ•˜์„ธ์š” @KylinChang , ์ด๊ฒƒ์— ๋Œ€ํ•œ ์—…๋ฐ์ดํŠธ๊ฐ€ ์žˆ์Šต๋‹ˆ๊นŒ?

Unity 2019.3์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ๋นŒ๋“œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๋กœ ์ธํ•ด Android์—์„œ, # 359๋กœ ์ธํ•ด iOS์—์„œ.

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

Facebook SDK v7.18.1์—์„œ๋„ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Facebook SDK v7.18.1์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ง€๊ธˆ์€ ๊ฒŒ์ž„์„ ๋นŒ๋“œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Firebase ๋˜๋Š” Facebook ์ž„์‹œ ๋น„ํ™œ์„ฑํ™”.

@kashiftasneempro ๋จผ์ € ์ด์ „ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ญ์ œ ํ–ˆ์Šต๋‹ˆ๊นŒ?

@kashiftasneempro ๋จผ์ € ์ด์ „ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์‚ญ์ œ ํ–ˆ์Šต๋‹ˆ๊นŒ?

์‘ ๋‚˜๋Š” ํ–ˆ์–ด.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ๋Š”๋ฐ, ๋ˆ„๊ตฌ๋“ ์ง€ ์ด๊ฒƒ์— ๋Œ€ํ•ด ์ง„์ „์ด ์žˆ์Šต๋‹ˆ๊นŒ? androidx ๋Œ€ ์ง€์› ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ถฉ๋Œ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๊นŒ?

์‚ฌ์‹ค : ์•„์ง ์™„์ „ํžˆ ํ…Œ์ŠคํŠธํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ

implementation(name: 'com.android.support.support-compat-27.0.2', ext:'aar')

build.gradle์—์„œ APK๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๊ณ ์žฅ๋‚œ ๊ฒƒ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ 1 : ์ผ์ด ๋‚ด ์ชฝ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Facebook์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ž‘๋™ํ•˜๋ฉฐ Firebase ํ‘ธ์‹œ ํ† ํฐ ์ดˆ๊ธฐํ™”๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ 2 : Firebase AndroidManifest ํŒŒ์ผ์—์„œ uses-sdk ์ธ ์ค„์„ ์ œ๊ฑฐํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค ... 14
์ด ๋‘ ์ค„์„ ์ œ๊ฑฐํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋ผ๊ฑด๋Œ€ ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์‚ฌ์‹ค : ์•„์ง ์™„์ „ํžˆ ํ…Œ์ŠคํŠธํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ

implementation(name: 'com.android.support.support-compat-27.0.2', ext:'aar')

build.gradle์—์„œ APK๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๊ณ ์žฅ๋‚œ ๊ฒƒ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ 1 : ์ผ์ด ๋‚ด ์ชฝ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Facebook์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ž‘๋™ํ•˜๋ฉฐ Firebase ํ‘ธ์‹œ ํ† ํฐ ์ดˆ๊ธฐํ™”๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ 2 : Firebase AndroidManifest ํŒŒ์ผ์—์„œ uses-sdk ์ธ ์ค„์„ ์ œ๊ฑฐํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค ... 14
์ด ๋‘ ์ค„์„ ์ œ๊ฑฐํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋ผ๊ฑด๋Œ€ ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

Unity์—์„œ ์ž‘์—…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

Unity์—๋Š” build.gradle์ด ์•„๋‹Œ mainTemplate.gradle์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ, Unity์ž…๋‹ˆ๋‹ค. ํŽธ์ง‘๊ธฐ์—์„œ apk / aab๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๋Œ€์‹  Android Studio๋กœ ๋‚ด ๋ณด๋‚ด์„œ ์ข…์†์„ฑ์„ ํ†ตํ•ด ์ž‘์—… ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ฒƒ์„ ๋””๋ฒ„๊น… ํ•  ๋•Œ ๋งŽ์€ ๋„์›€์ด๋ฉ๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” @ncinoadam , ์–ด๋–ค Firebase ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ํ‘ธ์‹œ ์•Œ๋ฆผ?

@ncinoadam @kashiftasneempro Jetifier ๋ฅผ ํ™œ์„ฑํ™”ํ•˜๊ณ  mainTemplate.gradle ํŒŒ์ผ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ˆ˜์ •ํ•˜์—ฌ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

dependencies {
    implementation 'androidx.multidex:multidex:2.0.0'
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    // Android Resolver Dependencies Start
    implementation 'androidx.appcompat:appcompat:1.0.0'
    // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
    implementation 'androidx.cardview:cardview:1.0.0'
    // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
    implementation 'androidx.cardview:cardview:1.0.0'
    // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
    implementation 'androidx.browser:browser:1.0.0'
    // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:6
...

์•ˆ๋…•ํ•˜์„ธ์š” @ncinoadam , ์–ด๋–ค Firebase ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ํ‘ธ์‹œ ์•Œ๋ฆผ?

๋‚˜๋Š” ํ˜„์žฌ ๋ฉ”์‹œ์ง• ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ ์ถฉ๋Œ์„ ํŒŒ์•…ํ•˜๊ณ  ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•ด ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ๋„ ์–ด๋ ต์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ํ”„๋กœ์ ํŠธ๋ฅผ ๋‚ด๋ณด๋‚ด๊ณ  Android Studio๋กœ ๋นŒ๋“œ ํ•œ ๋‹ค์Œ @hex๊ฐ€ ์–ธ๊ธ‰ ํ•œ ๊ฑฐ์˜ ์˜ค๋ž˜๋œ ์ข…์†์„ฑ์„ ๋Œ€์ฒดํ•˜์—ฌ AndroidX๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜์—ฌ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์ด ์˜ˆ์ƒ๋˜๋Š” ๋ฐฉ์‹์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— Force Resolve ์ดํ›„ AndroidX๊ฐ€ ํ™œ์„ฑํ™”๋˜์–ด์žˆ๋Š” ๋™์•ˆ์—๋„ ์—ฌ์ „ํžˆ ์˜ค๋ž˜๋œ ์ข…์†์„ฑ์„ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ‚ค์ง€์—์„œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•˜๋ฏ€๋กœ ํ”„๋กœ์ ํŠธ ๋‚ด๋ณด๋‚ด๊ธฐ์—†์ด ๋นŒ๋“œ ํ•  ์ˆ˜์žˆ๋Š” ์ˆ˜์ • ๋˜๋Š” ๊ณต์‹์ ์ธ ๋ฐฉ๋ฒ•์ด ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

์‚ฌ์‹ค : ์•„์ง ์™„์ „ํžˆ ํ…Œ์ŠคํŠธํ•˜์ง€๋Š” ์•Š์•˜์ง€๋งŒ

implementation(name: 'com.android.support.support-compat-27.0.2', ext:'aar')

build.gradle์—์„œ APK๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๊ณ ์žฅ๋‚œ ๊ฒƒ์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ๋ฅผ ์ˆ˜ํ–‰ ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ 1 : ์ผ์ด ๋‚ด ์ชฝ์—์„œ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. Facebook์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ž‘๋™ํ•˜๋ฉฐ Firebase ํ‘ธ์‹œ ํ† ํฐ ์ดˆ๊ธฐํ™”๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ฐ›๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ 2 : Firebase AndroidManifest ํŒŒ์ผ์—์„œ uses-sdk ์ธ ์ค„์„ ์ œ๊ฑฐํ•ด์•ผํ•œ๋‹ค๋Š” ๊ฒƒ์„ ์žŠ์—ˆ์Šต๋‹ˆ๋‹ค ... 14
์ด ๋‘ ์ค„์„ ์ œ๊ฑฐํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€์™€ ๊ด€๋ จ๋œ ๋ชจ๋“  ๊ฒƒ์„ ํ…Œ์ŠคํŠธ ํ•  ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐ”๋ผ๊ฑด๋Œ€ ์ด๊ฒƒ์€ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์—๊ฒŒ ๋„์›€์ด๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค @ncinoadam , ์ด๊ฒƒ์€ ๋ถ„์„ ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ €์—๊ฒŒ

@GunLengend ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. Android Studio์—์„œ ํŒŒ์ผ์„ ์—‰๋ง์œผ๋กœ ๋งŒ๋“œ๋Š” ํ•ดํ‚น์ด๋ฉฐ ๋นŒ๋“œ๋ฅผ ์›ํ•  ๋•Œ๋งˆ๋‹ค ๋‚ด๋ณด๋‚ผ ํ•„์š”์—†์ด Unity ๋‚ด์—์„œ ์ฒ˜๋ฆฌํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ๋˜ํ•œ์ด ๋ฌธ์ œ๋Š” ๋‚ด ํ”„๋กœ์ ํŠธ์— ์—†๊ธฐ ๋•Œ๋ฌธ์— Facebook SDK์™€ ๊ด€๋ จ์ด ์—†๋‹ค๋Š” ๊ฒƒ์„ ์–ธ๊ธ‰ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ฑฐ์˜ ๋™์ผํ•œ Unity ๋กœ๊ทธ ์ถœ๋ ฅ์ด ์žˆ๊ณ  @ncinoadam์ด ์–ธ๊ธ‰ ํ•œ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์—ฌ๊ธฐ์—์„œ ๋ฌธ์ œ๋ฅผ ์—ด์—ˆ์Šต๋‹ˆ๋‹ค (https://github.com/firebase/quickstart-unity/issues/607). Firebase์˜

์ง€๊ธˆ ๊ณ ๋ คํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์€ Facebook๊ณผ Firebase ๋ฌธ์ œ ์ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Unity ์ž์ฒด์— ์†ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. enableJetifier ๋ฐ useAndroidX๋Š” Unity mainTemplate.gradle ํŒŒ์ผ์—์„œ ํ™œ์„ฑํ™”๋˜์—ˆ์ง€๋งŒ Unity๊ฐ€ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ Jetifier๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉฐ AndroidX๋ฅผ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์ด์ „ ์ข…์†์„ฑ์„ ๋ชจ๋‘ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ํŠธ๋ฆญ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ง€๊ธˆ ๊ณ ๋ คํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์€ Facebook๊ณผ Firebase ๋ฌธ์ œ ์ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Unity ์ž์ฒด์— ์†ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. enableJetifier ๋ฐ useAndroidX๋Š” Unity mainTemplate.gradle ํŒŒ์ผ์—์„œ ํ™œ์„ฑํ™”๋˜์—ˆ์ง€๋งŒ Unity๊ฐ€ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ Jetifier๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉฐ AndroidX๋ฅผ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์ด์ „ ์ข…์†์„ฑ์„ ๋ชจ๋‘ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ํŠธ๋ฆญ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  ๋ฒ„์ „์˜ Unity, Facebook SDK, Firebase SDK๋กœ ์—…๊ทธ๋ ˆ์ด๋“œ ํ•œ ํ›„ ๋ชจ๋“  Android ๋นŒ๋“œ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด์ œ Xcode์—์„œ iOS์™€ ์‹ธ์šฐ๊ณ  ์žˆ์ง€๋งŒ์ด SDK์™€๋Š” ๊ด€๋ จ์ด ์—†์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ์ด์ „์— Firebase Analytics๋ฅผ ํ™œ์„ฑํ™”ํ–ˆ์ง€๋งŒ ์ง€๊ธˆ์€ ํ™œ์„ฑํ™”ํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฒ˜์Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ Facebook SDK๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜์œผ๋ฉฐ Mapbox SDK์˜ ๋ฌธ์ œ์˜€์œผ๋ฉฐ Android ํ•ด๊ฒฐ ํ”„๋กœ๊ทธ๋žจ์œผ๋กœ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๋Œ€์‹  Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์žฌ๋ฐฐํฌํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ €๋Š” Mapbox๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  Google์ง€๋„๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์‹œ์ž‘ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฑฐ๊ธฐ์—์„œ ์•„์ฃผ ์ข‹์•˜์ง€ ๋งŒ, ๋‚ด ์ž์‚ฐ ์ค‘ ํ•˜๋‚˜์˜ ๋ฌธ์„œ๊ฐ€ ์ด์ „ ๋ฒ„์ „์„ ์š”์ฒญํ•˜๊ณ  ๋„์ž… ํ•  ๋•Œ ์—ฌ๋Ÿฌ ์ค‘๋ณต ํด๋ž˜์Šค๊ฐ€ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด์ „ ๋ฒ„์ „์˜ Facebook SDK๋ฅผ ๋„์ž…ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ƒˆ๋กœ์šด Facebook SDK๋ฅผ ์–ป์—ˆ๊ณ  ์ด์ „ ๋ฒ„์ „์ด ํ•„์š”ํ•œ ์ž์‚ฐ์˜ ์ฝ”๋“œ๋ฅผ ์กฐ์ •ํ•ด์•ผํ–ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ Firebase ์ธ์ฆ์ด ์ž‘๋™ํ•˜์ง€๋งŒ ์—ฌ์ „ํžˆ androidx.core.core-1.0.0์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ด๋ฉฐ ๋Œ€๋ถ€๋ถ„์˜ ์ค‘๋ณต ํด๋ž˜์Šค๊ฐ€ ์ €์—๊ฒŒ ์žˆ๋˜ ๊ณณ์ž…๋‹ˆ๋‹ค. ๋„์›€์ด ๋˜์—ˆ๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค.

AdMob์ด์žˆ๋Š” ํ”„๋กœ์ ํŠธ์— FB๋ฅผ ์ถ”๊ฐ€ ํ•  ๋•Œ ๋™์ผํ•œ ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์†์„ฑ application @ appComponentFactory value = (android.support.v4.app.CoreComponentFactory) from [com.android. support : support-compat : 28.0.0] AndroidManifest. xml : 22 : 18-91

์ œ์•ˆ ์ถ”๊ฐ€ ํ›„
tools:replace="android:appComponentFactory" android:appComponentFactory="whateverString"

๋‚˜๋Š” ์–ป๊ณ ์žˆ๋‹ค

java.lang.RuntimeException : ๋ชจ๋“ˆ classes.jar (androidx.browser : browser : 1.0.0) ๋ฐ classes.jar (com.android.support:customtabs:28.0.0)์— ์ค‘๋ณต ํด๋ž˜์Šค android.support.customtabs.ICustomTabsCallback์ด ์žˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๋” ...
๋ชจ๋“  SDK ๋ฐ Unity์˜ ์ตœ์‹  ๋ฒ„์ „์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์™œ ๋‚˜์—๊ฒŒ ์‹ซ์–ด์š”๋ฅผ ์ฃผ ์…จ๋Š”์ง€, ๊ทธ๋ฆฌ๊ณ  ๋‚ด๊ฐ€ ์™œ ๊ทธ๋ ‡๊ฒŒํ•ด์„œ ๋„์›€์„์ฃผ๊ณ  ์‹ถ์€์ง€ ๋ชจ๋ฅด๊ฒ ์ง€๋งŒ com.android๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. support : customtabs : 28.0.0, ์ผ๋ฐ˜์ ์œผ๋กœ Assets / Plugins / Android /์— ์ €์žฅ๋˜์–ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” Assets / Plugins / Android / ํด๋”์— ๋งŽ์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋Œ€์‹  mainTemplate.gradle ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. (์ €์žฅ์†Œ ๊ณต๊ฐ„์ด ์ œํ•œ๋จ).
๋ชจ๋“  implementation 'com.android.support.XXXX' ์ œ๊ฑฐํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ท€ํ•˜์˜ ์†”๋ฃจ์…˜์ด ๋‚˜๋ฅผ์œ„ํ•œ ๊ฒƒ์ด ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๊ท€ํ•˜๋Š” ๊ฑฐ์ ˆ๋‹นํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ด€๋ฆฌ์ž๊ฐ€ ๊ท€ํ•˜์™€ ๊ฐ™์€ ๊ฒŒ์‹œ๋ฌผ์„ ์ฝ์„ ๋•Œ ๊ทธ๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
๋‚˜๋Š” Export to Android Studio ๋˜๋Š” remove library ์™€ ๊ฐ™์€ ๋งŽ์€ ํ”„๋กœ์ ํŠธ์™€ ์†”๋ฃจ์…˜์„ ์ง€์›ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด ํ”„๋กœ์ ํŠธ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒƒ์€ ์†”๋ฃจ์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

ํ–‰์šด์˜ ๋ด‰์˜ค๋ฆฌ

์ง€๊ธˆ ๊ณ ๋ คํ•˜๊ณ ์žˆ๋Š” ๊ฒƒ์€ Facebook๊ณผ Firebase ๋ฌธ์ œ ์ผ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ Unity ์ž์ฒด์— ์†ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. enableJetifier ๋ฐ useAndroidX๋Š” Unity mainTemplate.gradle ํŒŒ์ผ์—์„œ ํ™œ์„ฑํ™”๋˜์—ˆ์ง€๋งŒ Unity๊ฐ€ ๋นŒ๋“œ ํ”„๋กœ์„ธ์Šค๋ฅผ ์‹œ์ž‘ํ•  ๋•Œ Jetifier๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š์œผ๋ฉฐ AndroidX๋ฅผ ๊ฐ•์ œ๋กœ ์‚ฌ์šฉํ•˜๋„๋ก ์ด์ „ ์ข…์†์„ฑ์„ ๋ชจ๋‘ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•ด์•ผํ•˜์ง€๋งŒ ๊ทธ๋ ‡์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ ํŠธ๋ฆญ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฌธ์ œ๋Š” Google / Unity ๋ฌธ์ œ์ด์ž Facebook ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. Facebook์€ ์ˆœ์ˆ˜ํ•˜๊ณ  ๋‹จ์ˆœํ•œ AndroidX๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด SDK๋ฅผ ์—…๊ทธ๋ ˆ์ด๋“œํ•ด์•ผํ•˜๋ฉฐ์ด ๋ฌธ์ œ๋Š” ์‚ฌ๋ผ์ง‘๋‹ˆ๋‹ค. Google / Unity๋Š” Facebook๊ณผ ๊ฐ™์€ ํšŒ์‚ฌ์—์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๋•Œ๊นŒ์ง€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Unity ๋‚ด์—์„œ ์‹คํ–‰๋˜๋Š” ์ž์ฒด ๋ฒ„์ „์˜ Jetifier๋ฅผ ๊ฐœ๋ฐœํ–ˆ์ง€๋งŒ Unity์˜ Jetifier๋Š” Facebook SDK์—์„œ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!

์šด ์ข‹๊ฒŒ๋„ Android Studio์˜ Jetifier๋Š” ์ž˜ ์ž‘๋™ํ•˜๋ฉฐ, ์ด๋Š” ๋ง ๊ทธ๋Œ€๋กœ Facebook SDK ๋ฐ AndroidX๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋‹ค๋ฅธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ Unity ๊ฒŒ์ž„์„ ์‹คํ–‰ํ•˜๋Š” ์œ ์ผํ•œ ์†”๋ฃจ์…˜์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  V7.16์—์„œ v7.19.2๋กœ ์ „ํ™˜ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

@LunarInteractiveArts 7.19.2๋ฅผ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์Šฌํ”„๊ฒŒ๋„ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜์ด ๋ฒ„๊ทธ์— ๊ฒŒ์‹œ ๋œ ์†”๋ฃจ์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค : https://github.com/googlesamples/unity-jar-resolver/issues/360 ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค!

@ doom-goober ๋‚˜๋Š” ์ด๊ฒƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
์ฝ”๋“œ๋Š” Google ์ข…์†์„ฑ ํ™•์ธ์ž๊ฐ€ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.
image

OneSignal ๋„์›€๋ง ์„น์…˜์—์„œ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ฐพ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ˆ˜์ •์€ Unity ofc์ž…๋‹ˆ๋‹ค. https://documentation.onesignal.com/docs/troubleshooting-unity#section -android-x-compatibility
image

Unity 2019.3.11f1์— ๋Œ€ํ•ด ๋‘ ๋‹จ๊ณ„๋กœ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

  1. Edit -> Project Settings -> Player -> Publishing settings -> Custom Properties Gradle Template
  2. ์ƒˆ๋กœ ์ƒ์„ฑ ๋œ gradleTemplate.properties ์ด๋™ํ•˜์—ฌ ๋‹ค์Œ ์ค„์„ ๋งจ ์œ„์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
    ```์†์„ฑ
    android.useAndroidX = true
    android.enableJetifier = true

Unity 2019.2.21์—์„œ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด jetfiier๋ฅผ ํ™œ์„ฑํ™”ํ•ด๋„ ์ค‘๋ณต ํด๋ž˜์Šค ์˜ค๋ฅ˜๊ฐ€ ๊ณ„์† ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

([rootProject] + (rootProject.subprojects as List)). each {
ext {
it.setProperty ( "android.useAndroidX", true)
it.setProperty ( "android.enableJetifier", true)
}
}

@jackatfp @gromilQaaaa ์˜ ์†”๋ฃจ์…˜์„ ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ ? ๋‹ค์Œ์€ Unity์—์„œ ๋นŒ๋“œ ์ž‘์—…์„ ๋‹ค์‹œ ํ•œ ๋ฌธ์„œ ์„น์…˜์— ๋Œ€ํ•œ ์ง์ ‘ ๋งํฌ์ž…๋‹ˆ๋‹ค.
https://documentation.onesignal.com/docs/troubleshooting-unity#unity -20193- ๋˜๋Š” -newer

Assets / Plugins / Android / settingsTemplate.gradle์ด๋ผ๋Š” ํŒŒ์ผ์„ ์ถ”๊ฐ€ํ•ด์•ผํ•˜๋Š” ์„น์…˜์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์ €๋ฅผ ๋์—†์ด ์ขŒ์ ˆ ์‹œ์ผฐ๊ณ  ์ €๋Š” Android Studio์—์„œ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๊ฒฐ์‹ฌํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด ์†”๋ฃจ์…˜ ๋งŒ์ด ์ €์—๊ฒŒ ์ผ๊ด€๋˜๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค (์ด์ „ ์†”๋ฃจ์…˜์ด ์ž‘๋™ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์ง€๋งŒ ๋‹ค๋ฅธ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ํ”„๋กœ์ ํŠธ์— ๋‹ค์‹œ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ ์ž‘๋™์ด ์ค‘๋‹จ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.) ๊ทธ๋ฆฌ๊ณ  ๋…ผ๋ฆฌ์ ์œผ๋กœ ์ดํ•ด๊ฐ€๋˜์—ˆ์Šต๋‹ˆ๋‹ค. gradle ์‹œ์Šคํ…œ์€ ๋ถ„๋ช…ํžˆ jetifier๋ฅผ Unity์˜ ํฌ์ŠคํŠธ ํ”„๋กœ์„ธ์„œ ๋ฐ ์„ค์ •์ด์ง€๋งŒ gradle์„ ์‚ฌ์šฉํ•˜๋Š” Android Studio์—์„œ ์ž‘๋™ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— jetifier๊ฐ€ ๋ถ„๋ช…ํžˆ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ gradle ๊ธฐ๋ฐ˜์˜ ์†”๋ฃจ์…˜์ด ์˜๋ฏธ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์–ด์จŒ๋“  ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ๊ณ  ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ๋‹น์‹ ์—๊ฒŒ ํšจ๊ณผ๊ฐ€ ์žˆ๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๋Š” ๊ฒƒ์— ๋„ˆ๋ฌด ์งœ์ฆ์ด ๋‚˜๊ณ  ๊ธฐ๋ปค์Šต๋‹ˆ๋‹ค. ์‹œ๋„ํ•ด์ฃผ์„ธ์š”! ํ–‰์šด์„ ๋น•๋‹ˆ๋‹ค.

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

์ตœ์‹  2019.3 ๊ณต์‹ ๋ฒ„์ „ (๋‚ด๋Š” 2019.3.12f1 atm)์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ Gradle ํ…œํ”Œ๋ฆฟ ์œ„์— ์‚ฌ์šฉ์ž ์ง€์ • Gradle ์†์„ฑ ํ…œํ”Œ๋ฆฟ์„ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค์Œ์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
android.useAndroidX=true
android.enableJetifier=true
์ƒˆ๋กœ ์ƒ์„ฑ ๋œ gradleTemplate.properties ํŒŒ์ผ์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฒŒ์‹œ์ž๊ฐ€ ์›ํ•˜๋Š” ๋ชจ๋“  SDK๋กœ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด Android ์ŠคํŠœ๋””์˜ค๋กœ ๋‚ด๋ณด๋‚ด๊ณ  ์žˆ์œผ๋ฉฐ, ๊ทธ ์ดํ›„๋กœ Android ๋นŒ๋“œ ์˜ค๋ฅ˜์˜ ๋ถˆํ–‰์„ ํ—ค์ณ๋‚˜ ๊ฐ€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๋กœ์„œ ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€๋งŒ ์ด์ œ ๋งˆ์นจ๋‚ด Unity ๋‚ด์—์„œ ๋นŒ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Jetifier๋Š” Android ์ŠคํŠœ๋””์˜ค๋ฅผ ์ œ์™ธํ•˜๊ณ  Facebook SDK์—์„œ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์œผ๋ฏ€๋กœ AndroidX ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ ๋œ ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ์ถฉ๋ถ„ํžˆ ์‚ฌ์šฉํ–ˆ๋‹ค๋ฉด ์•ฝ๊ฐ„์˜ ๋ณ€๊ฒฝ์—†์ด Unity ๋‚ด์—์„œ ๋นŒ๋“œํ•˜๊ธฐ ์–ด๋ ค์šธ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ์ผ๋ฐ˜์ ์œผ๋กœ Plugins / Android / AndroidManifest.xml์„ ์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํƒœ๊ทธ์— ํฌํ•จํ•˜๋„๋ก ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.
tools:replace="android:appComponentFactory" android:appComponentFactory="leavemealone"
๋งค๋‹ˆํŽ˜์ŠคํŠธ ํƒœ๊ทธ์˜ xmlns:tools="http://schemas.android.com/tools"

์˜ˆ, ์ด๊ฒƒ์ด ๋ชฉ์ ์ด ๋ฌด์—‡์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์ž„์˜์˜ ๋ฌธ์ž์—ด์ด์ง€๋งŒ ๋งค๋‹ˆํŽ˜์ŠคํŠธ ๋ณ‘ํ•ฉ ๋นŒ๋“œ ์˜ค๋ฅ˜๊ฐ€ ์ž‘๋™ํ•˜๊ณ  ์ˆ˜์ •๋ฉ๋‹ˆ๋‹ค.

์ด์ œ Ironsource (๋งŽ์€ ์–ด๋Œ‘ํ„ฐ๊ฐ€ ํฌํ•จ๋จ), Facebook SDK, GameAnalytics, Adjust, Firebase ๋“ฑ ๋ฌด์—‡์ด๋“  ๋นŒ๋“œ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์ตœ์‹  Unity Jar Resolver๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ์„ค์ •์„ ํ™•์ธํ•˜์—ฌ ์ž๋™ ํ•ด๊ฒฐ์„ ์ œ๊ฑฐํ•˜๊ณ , ๋นŒ๋“œ์‹œ ํ•ด๊ฒฐ์„ ์ œ๊ฑฐํ•˜๊ณ , ํŒจ์น˜ ๋ฉ”์ธ ํ…œํ”Œ๋ฆฟ์„ ์„ค์ •ํ•˜๊ณ , jetifier๋ฅผ true๋กœ ์„ค์ •ํ•˜๊ณ , ๊ฐ•์ œ๋กœ ํ•ด๊ฒฐํ•˜๊ณ , ์›ํ•˜๋Š” ์ถ”๊ฐ€ ์ข…์†์„ฑ / ๋ฆฌํฌ์ง€ํ† ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ , gradleproperties ํŠธ๋ฆญ์„ ์ˆ˜ํ–‰ํ•˜๊ณ , Unity ๋‚ด์—์„œ ๋นŒ๋“œํ•˜๊ณ , ์™„๋ฃŒํ•ฉ๋‹ˆ๋‹ค. .

@ doom-goober ์˜ˆ, ์–ธ๊ธ‰ ํ•œ ์†”๋ฃจ์…˜์„ ํฌํ•จํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@ doom-goober ์˜ˆ, ์–ธ๊ธ‰ ํ•œ ์†”๋ฃจ์…˜์„ ํฌํ•จํ•œ ๋ชจ๋“  ๊ฒƒ์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

@ruslanmamonov ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด ๋ณด์…จ์Šต๋‹ˆ๊นŒ?

์ด๊ฒƒ์€ ๋‚˜์—๊ฒŒ๋„ ์ผ์–ด๋‚˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์œ„์˜ ๋ชจ๋“  ์†”๋ฃจ์…˜์„ ์„ฑ๊ณตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. Facebook SDK๋Š” androidX์™€ ์ถฉ๋Œํ•˜๋Š” ์˜ค๋ž˜๋œ ์ข…์†์„ฑ์„ ์ฃผ์ž…ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ EDM4U๋Š”์ด๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์•„๋ž˜ ์˜ˆ :
implementation 'com.android.support:appcompat-v7:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency implementation 'com.android.support:cardview-v7:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency implementation 'com.android.support:cardview-v7:26.0.2' // Assets/Packages/XXX.CustomerSupport/Helpshift/Editor/HelpshiftDependencies.xml:9

Facebook์€ cardview๋ฅผ ์ถ”๊ฐ€ํ–ˆ๊ณ  ๋‹ค๋ฅธ ๋กœ์ปฌ ํ”Œ๋Ÿฌ๊ทธ์ธ๋„ ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. Jetifier๋Š” ์•„๋ฌด๊ฒƒ๋„ํ•˜์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
OneSignal์—์„œ ์ œ์•ˆํ•œ ์ˆ˜์ • ์‚ฌํ•ญ๋„์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ, ์ถฉ๋Œํ•˜๋Š” ๊ตฌํ˜„์„ ์ฃผ์ž…ํ•˜์ง€ ์•Š๋„๋ก Facebook.Unity.Editor.dll์˜ ์‚ฌ์šฉ์ž ์ง€์ • ๋ฒ„์ „์„ ๋งŒ๋“œ๋Š” ๋ฐ ์˜์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์™€์šฐ, ํŽ˜์ด์Šค ๋ถ SDK๋ฅผ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์€ ์‰ฝ์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค ...ํ•˜์ง€๋งŒ ๊ฒฐ๊ตญ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. :)

๋™์ผํ•œ ๋ฌธ์ œ๋กœ ์–ด๋ ค์›€์„ ๊ฒช๊ณ  ์žˆ์ง€๋งŒ ์ค‘๋ณต ๋œ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค.

java.lang.RuntimeException: Duplicate class androidx.vectordrawable.graphics.drawable.Animatable2Compat found in modules classes.jar (:vectordrawable-animated-1.0.0:) and classes.jar (androidx.vectordrawable:vectordrawable-animated:1.1.0)

Facebook์ด์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๊ฐ€์ ธ ์˜ค์ง€ ์•Š๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

jetifier ํŠธ๋ฆญ์„ ์‹œ๋„ํ•ด ๋ณด์•˜๊ณ  vectordrawable ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ ˆ๊ฑฐ์‹œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ androidx ๋Œ€์‘ ๋ฌผ์„ ํฌํ•จํ•˜์—ฌ mainTemplate.gradle์„ ๋งŒ๋“ค๋ ค๊ณ  ์‹œ๋„ํ–ˆ์ง€๋งŒ ์—ฌ์ „ํžˆ ๋™์ผํ•œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

mainTemplate.gradle์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

// Android Resolver Repos Start
([rootProject] + (rootProject.subprojects as List)).each {
    ext {
        it.setProperty("android.useAndroidX", true)
        it.setProperty("android.enableJetifier", true)
    }
}
([rootProject] + (rootProject.subprojects as List)).each { project ->
    project.repositories {
        def unityProjectPath = $/file:///**DIR_UNITYPROJECT**/$.replace("\\", "/")
        maven {
            url "https://maven.google.com"
        }
        maven {
            url (unityProjectPath + "/Assets/GeneratedLocalRepo/Firebase/m2repository") // Assets/Firebase/Editor/AnalyticsDependencies.xml:18, Assets/Firebase/Editor/AppDependencies.xml:22, Assets/Firebase/Editor/AuthDependencies.xml:20, Assets/Firebase/Editor/MessagingDependencies.xml:20
        }
        mavenLocal()
        jcenter()
        mavenCentral()
    }
}
// Android Resolver Repos End
apply plugin: 'com.android.library'
**APPLY_PLUGINS**
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
// Android Resolver Dependencies Start
    //implementation 'com.android.support:appcompat-v7:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
    //implementation 'com.android.support:cardview-v7:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
    //implementation 'com.android.support:customtabs:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
    //implementation 'com.android.support:support-v4:25.3.1' // Facebook.Unity.Editor.AndroidSupportLibraryResolver.addSupportLibraryDependency
    //implementation 'com.android.support:support-v4:27.1+' // Assets/Editor/VoxelBusters/NativePlugins/NPDependencies.xml:6

    implementation 'androidx.appcompat:appcompat:1.0.0'
    implementation 'androidx.cardview:cardview:1.0.0'
    implementation 'androidx.browser:browser:1.0.0'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    implementation 'androidx.vectordrawable:vectordrawable-animated:1.0.0'

    implementation 'com.facebook.android:facebook-applinks:[8.0, 9)' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:6
    implementation 'com.facebook.android:facebook-core:[8.0, 9)' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:5
    implementation 'com.facebook.android:facebook-gamingservices:[8.0, 9)' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:9
    implementation 'com.facebook.android:facebook-login:[8.0, 9)' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:7
    implementation 'com.facebook.android:facebook-share:[8.0, 9)' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:8
    implementation 'com.google.android.gms:play-services-base:17.4.0' // Assets/Firebase/Editor/AppDependencies.xml:17
    implementation 'com.google.firebase:firebase-analytics:17.5.0' // Assets/Firebase/Editor/MessagingDependencies.xml:15
    implementation 'com.google.firebase:firebase-analytics-unity:6.16.0' // Assets/Firebase/Editor/AnalyticsDependencies.xml:18
    implementation 'com.google.firebase:firebase-app-unity:6.16.0' // Assets/Firebase/Editor/AppDependencies.xml:22
    implementation 'com.google.firebase:firebase-auth:19.3.2' // Assets/Firebase/Editor/AuthDependencies.xml:13
    implementation 'com.google.firebase:firebase-auth-unity:6.16.0' // Assets/Firebase/Editor/AuthDependencies.xml:20
    implementation 'com.google.firebase:firebase-common:19.3.1' // Assets/Firebase/Editor/AppDependencies.xml:13
    implementation 'com.google.firebase:firebase-messaging:20.2.4' // Assets/Firebase/Editor/MessagingDependencies.xml:13
    implementation 'com.google.firebase:firebase-messaging-unity:6.16.0' // Assets/Firebase/Editor/MessagingDependencies.xml:20
    implementation 'com.parse.bolts:bolts-android:1.4.0' // Assets/FacebookSDK/Plugins/Editor/Dependencies.xml:4
// Android Resolver Dependencies End
**DEPS**}

// Android Resolver Exclusions Start
android {
  packagingOptions {
      exclude ('/lib/armeabi/*' + '*')
      exclude ('/lib/mips/*' + '*')
      exclude ('/lib/mips64/*' + '*')
      exclude ('/lib/x86/*' + '*')
      exclude ('/lib/x86_64/*' + '*')
  }
}
// Android Resolver Exclusions End
android {
    compileSdkVersion **APIVERSION**
    buildToolsVersion '**BUILDTOOLS**'

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    defaultConfig {
        minSdkVersion **MINSDKVERSION**
        targetSdkVersion **TARGETSDKVERSION**
        ndk {
            abiFilters **ABIFILTERS**
        }
        versionCode **VERSIONCODE**
        versionName '**VERSIONNAME**'
        consumerProguardFiles 'proguard-unity.txt'**USER_PROGUARD**
    }

    lintOptions {
        abortOnError false
    }

    aaptOptions {
        ignoreAssetsPattern = "!.svn:!.git:!.ds_store:!*.scc:.*:!CVS:!thumbs.db:!picasa.ini:!*~"
    }**PACKAGING_OPTIONS**
}**REPOSITORIES****SOURCE_BUILD_SETUP**
**EXTERNAL_SOURCES**

๋ฌด์—‡์„ ํ•  ์ˆ˜์žˆ๋Š” ๋‹ค๋ฅธ ์•„์ด๋””์–ด? ๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด ํ”„๋กœ์ ํŠธ์— facebook sdk๋ฅผ ์ถ”๊ฐ€ํ–ˆ์œผ๋ฉฐ ์ฒ˜์Œ๋ถ€ํ„ฐ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ตœ์‹  jar resolver, facebook sdk ๋ฐ firebase sdk๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” ์—ฌ์ „ํžˆ ์œ„์—์„œ ์ œ์•ˆํ•œ ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ (god bless gradle ์†์„ฑ) ๋ฌธ์ œ๊ฐ€ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ณ€๊ฒฝ๋œ ๊ฒƒ์€ Unity์˜ Android SDK ์‚ฌ์šฉ์„ ์ค‘์ง€ํ•˜๊ณ  ์ง์ ‘ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์„ ํ˜ธํ•˜๋Š” ๊ฒฝ๋กœ๋ฅผ ๋ณ€๊ฒฝ ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ชฉํ‘œ๋ฅผ ์ข€ ๋” ํ‰ํ™”๋กญ๊ฒŒ api 30์œผ๋กœ ์„ค์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ž˜๋„ ๋งŽ์€ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์•„์•ผํ•ฉ๋‹ˆ๋‹ค. ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ฒƒ์€ EDM ์„ค์ •์—์„œ jetifier, mainTemplate ํŒจ์น˜๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋นŒ๋“œํ•˜๊ธฐ ์ „์— ๊ฐ•์ œ ํ•ด๊ฒฐ์„ ์‚ฌ์šฉํ•˜๋„๋กํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค (๋‚˜์ฒ˜๋Ÿผ ์ž๋™ ํ•ด๊ฒฐ์„ ์›ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ). ํผ๋ธ”๋ฆฌ์‹ฑ ์„ค์ •์—์„œ ์‚ฌ์šฉ์ž ์ •์˜ gradle ์†์„ฑ, ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ, ์‚ฌ์šฉ์ž ์ •์˜ Android ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค (๋” ์ด์ƒ ๊ธฐ๋ณธ ํ…œํ”Œ๋ฆฟ ๋˜๋Š” Android ๋งค๋‹ˆํŽ˜์ŠคํŠธ๋ฅผ ๊ฑด๋“œ๋ฆฌ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. edm ๋ฐ facebook ๋ฉ”๋‰ด ํŽธ์ง‘ ์„ค์ •์˜ "regenerate android manifest"๋กœ ์ฑ„์›Œ์ง€๊ฒŒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ชจ๋“  ์ž‘์—…์ด ์™„๋ฃŒ๋˜๋ฉด ์ค‘๋ณต ํด๋ž˜์Šค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ œ๊ฑฐํ•ด์•ผ ํ•  ์ถ”๊ฐ€ ํ•ญ๋ชฉ์ด ํ”„๋กœ์ ํŠธ์—์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Adjust๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์„ค์น˜ ๋ฆฌํผ๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์—ฌ์ „ํžˆ ํ”„๋กœ์ ํŠธ ํ”Œ๋Ÿฌ๊ทธ์ธ ํด๋”์— ์‚ญ์ œํ•ด์•ผํ•˜๋Š” ๋‹ค๋ฅธ ํ•ญ๋ชฉ์ด์žˆ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋„ค, ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์„ค์ •์„ ์‚ฌ์šฉํ•˜๋ฉด์ด ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ๊ฐ„๋‹จํžˆ ์ œ์•ˆํ–ˆ์Šต๋‹ˆ๋‹ค.

์š”์•ฝ : ์‚ฌ์šฉ์ž ์ง€์ • Gradle ์†์„ฑ ํ…œํ”Œ๋ฆฟ ๋ฐ ์ถ”๊ฐ€ :

android.useAndroidX=true
android.enableJetifier=true

์‚ฌ์šฉ์ž ์ •์˜ ๋ฉ”์ธ ํ…œํ”Œ๋ฆฟ, EDM4U ํŒจ์น˜ ์ ์šฉ, Jetifier ์ผœ๊ธฐ, ๋นŒ๋“œ ์ „ ๊ฐ•์ œ ํ•ด๊ฒฐ
Custom Main Manifest, Facebook Regenerate Manifest ๋ฉ”๋‰ด์—์„œ ์„ค์ • ํŽธ์ง‘, PATH์™€ ๊ฐ™์€ ์˜ค๋ฅ˜๊ฐ€ ์—†๋Š”์ง€ ํ™•์ธํ•˜๊ฑฐ๋‚˜ facebook์— ์„ฑ๊ฐ€์‹  ์ผ์ด ์—†๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
์ €๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ๋งค์ผํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ฐฑ๋งŒ ๊ฐœ์˜ sdk๋กœ ๋นŒ๋“œ ํ•  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์•ฝ์†ํ•ฉ๋‹ˆ๋‹ค. ์ €๋Š”์ด ๋ฌธ์ œ๋ฅผ ๋„ˆ๋ฌด ๋งŽ์ด ๊ฒช๊ณ  ์ปค์Šคํ…€ gradle ์†์„ฑ์ด ๋‚˜์˜ฌ ๋•Œ๊นŒ์ง€ Android Studio์— ์˜์ง€ ํ•œ ๋ฌด์ž‘์œ„ ์ฃผ๋‹ˆ์–ด ๊ฒŒ์ž„ ๊ฐœ๋ฐœ์ž ์ผ๋ฟ์ž…๋‹ˆ๋‹ค.

์ข‹์•„, ๊ทธ๋ž˜์„œ ๋งˆ์นจ๋‚ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋ฒกํ„ฐ ๋“œ๋กœ์–ด ๋ธ” aar ํŒŒ์ผ์ด ํŒŒ์ผ์— ๋–  ๋‹ค๋‹ˆ๋Š” ๊ฒƒ์ด ๋ฌธ์ œ์˜ ์›์ธ์ด์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ๋ณต์‚ฌํ–ˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ์ด ํŒŒ์ผ์„ ์ œ๊ฑฐํ–ˆ๊ณ  ๋ชจ๋“  ์˜ค๋ฅ˜๊ฐ€ ์‚ฌ๋ผ์กŒ์Šต๋‹ˆ๋‹ค. ์–ด์จŒ๋“  ํžŒํŠธ ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค :)

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