빌드하면 아래 메시지와 함께 Dependencies coroutines 오류가 발생합니다.
java.lang.NoClassDefFoundError: kotlin/coroutines/AbstractCoroutineContextKey
at java.base/java.lang.ClassLoader.defineClass1(Native Method)
at java.base/java.lang.ClassLoader.defineClass(ClassLoader.java:1016)
...
kotlinx-coroutines-core 라이브러리 버전이 v1.3.5 이상이면 kotlin-stdlib 라이브러리 버전이 일정 레벨 이상이어야 합니다.
gradlew dependencies
커멘드로 kotlin-stdlib 라이브러리 버전이 v1.3.70 이상인지 확인해 주세요. 해당 버전 미만이라면 업데이트를 진행해야 합니다.
브레이즈 SDK를 사용한 푸시 알림으로 발생한 딥링크 실행(Deeplink Open) 이벤트가 수집되지 않습니다. 대신 실행(Open) 이벤트가 수집됩니다.
에어브릿지 안드로이드 SDK는 activity의 action에 있는 dataString과 intent의 dataString으로 딥링크 실행 이벤트와 실행 이벤트를 판별합니다.
브레이즈 SDK를 사용한 푸시 알림으로 앱을 실행하면 NotificationTrampolineActivity
을 사용합니다. 브레이즈 SDK를 사용한 푸시 알림으로 앱을 실행하면 NotificationTrampolineActivity
의 activity의 action과 intent로부터 dataString을 확인할 수 없습니다. 이로 인해 딥링크 실행 이벤트와 실행 이벤트를 판별할 수 없습니다.
에어브릿지 안드로이드 SDK v2.21.5 이상에서 아래 코드로 해결할 수 있습니다.
val option = AirbridgeOptionBuilder("YOUR_APP_NAME", "YOUR_APP_SDK_TOKEN")
.setLifecycleIntegration {
it.takeIf { it.javaClass.name == "com.braze.push.NotificationTrampolineActivity" }
?.run { intent?.extras?.getString("uri") }
}
.build()
Airbridge.initializeSDK(application, option)
AirbridgeOption option = new AirbridgeOptionBuilder("YOUR_APP_NAME", "YOUR_APP_SDK_TOKEN")
.setLifecycleIntegration(new AirbridgeLifecycleIntegration() {
@Nullable
@Override
public String getDataString(@NonNull Activity activity) {
if (activity.getClass().getName().equals("com.braze.push.NotificationTrampolineActivity")
&& activity.getIntent() != null
&& activity.getIntent().getExtras() != null) {
return activity.getIntent().getExtras().getString("uri");
}
return null;
}
})
})
.build();
Airbridge.initializeSDK(application, option);
빌드하면 Manifest merger failed 오류가 발생합니다.
에어브릿지 SDK의 AndroidManifest.xml
에는 공유 환경 설정 데이터 백업을 옵트아웃하는 규칙이 포함되어 있습니다. 이는 재설치 중에 동일한 에어브릿지 설정 값들을 유지하지 않도록 하여 새로운 설치 또는 재설치를 정확하게 감지하도록 하기 위해 수행됩니다.
에어브릿지 SDK 백업 규칙과 앱 백업 규칙의 병합 과정에서 충돌이 발생할 수 있습니다.
에어브릿지 SDK에서 정의하는 옵트아웃하는 규칙은 다음과 같습니다.
<?xml version="1.0" encoding="utf-8"?>
<data-extraction-rules>
<cloud-backup>
<exclude domain="sharedpref" path="airbridge-internal" />
<exclude domain="sharedpref" path="airbridge-install" />
<exclude domain="sharedpref" path="airbridge-user-info" />
<exclude domain="sharedpref" path="airbridge-user-alias" />
<exclude domain="sharedpref" path="airbridge-user-attributes" />
<exclude domain="sharedpref" path="airbridge-device-alias" />
<exclude domain="database" path="airbridge.db" />
</cloud-backup>
<device-transfer>
<exclude domain="sharedpref" path="airbridge-internal" />
<exclude domain="sharedpref" path="airbridge-install" />
<exclude domain="sharedpref" path="airbridge-user-info" />
<exclude domain="sharedpref" path="airbridge-user-alias" />
<exclude domain="sharedpref" path="airbridge-user-attributes" />
<exclude domain="sharedpref" path="airbridge-device-alias" />
<exclude domain="database" path="airbridge.db" />
</device-transfer>
</data-extraction-rules>
<?xml version="1.0" encoding="utf-8"?>
<full-backup-content>
<exclude domain="sharedpref" path="airbridge-internal" />
<exclude domain="sharedpref" path="airbridge-install" />
<exclude domain="sharedpref" path="airbridge-user-info" />
<exclude domain="sharedpref" path="airbridge-user-alias" />
<exclude domain="sharedpref" path="airbridge-user-attributes" />
<exclude domain="sharedpref" path="airbridge-device-alias" />
<exclude domain="database" path="airbridge.db" />
</full-backup-content>
android:fullBackupContent="string"
를 AndroidManifest.xml
에 추가하면 다음과 같은 오류가 발생할 수 있습니다.
Manifest merger failed : Attribute application@fullBackupContent value=(string) from AndroidManifest.xml
위 오류를 해결하려면 AndroidManifest.xml
파일의 <application>
태그에 tools:replace="android:fullBackupContent"
를 추가 해주세요.
android:dataExtractionRules="string resource"
를 AndroidManifest.xml
에 추가하면 다음과 같은 오류가 발생할 수 있습니다.
Manifest merger failed : Attribute application@dataExtractionRules value=(string resource) from AndroidManifest.xml
위 오류를 해결하려면 AndroidManifest.xml
파일의 <application>
태그에 tools:replace="android:dataExtractionRules"
를 추가 해주세요.
android:allowBackup="false"
를 AndroidManifest.xml
에 추가하면 다음과 같은 오류가 발생할 수 있습니다.
Manifest merger failed : Attribute application@allowBackup value=(false) from AndroidManifest.xml:32:9-36
is also present at [:airbridge] AndroidManifest.xml:27:9-35 value=(true).
Suggestion: add 'tools:replace="android:allowBackup"' to <application> element at AndroidManifest.xml:30:5-250:19 to override.
위 오류를 해결하려면 AndroidManifest.xml
파일의 <application>
태그에 tools:replace="android:allowBackup"
를 추가 해주세요.
android:dataExtractionRules
기능이 API Level 31 부터 추가되었기 때문에 compileSdkVersion이 31 미만일 경우, 다음과 같은 오류가 발생할 수 있습니다.
AndroidManifest.xml: AAPT: error: attribute android:dataExtractionRules not found.
위 오류를 해결하려면 AndroidManifest.xml
파일의 <application>
태그에 tools:remove="android:dataExtractionRules"
를 추가 해주세요.
아래 가이드를 함께 참고해 주세요.
도움이 되었나요?