adwhale-sdk-react-native 2.7.100

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/AdwhaleSdkReactNative.podspec +20 -0
  2. package/LICENSE +20 -0
  3. package/README.md +121 -0
  4. package/android/build.gradle +135 -0
  5. package/android/gradle.properties +2 -0
  6. package/android/proguard-rules.pro +247 -0
  7. package/android/settings.gradle +71 -0
  8. package/android/src/main/AndroidManifest.xml +2 -0
  9. package/android/src/main/java/com/adwhalesdkreactnative/AdwhaleSdkReactNativePackage.java +130 -0
  10. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdSettingModule.java +64 -0
  11. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdView.java +172 -0
  12. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationCustomNativeAdView.java +197 -0
  13. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationInterstitialAd.java +134 -0
  14. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationLoggerModule.java +35 -0
  15. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationRewardAd.java +151 -0
  16. package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationTemplateNativeAdView.java +317 -0
  17. package/android/src/main/java/com/adwhalesdkreactnative/RNWrapperView.java +48 -0
  18. package/android/src/main/res/layout/custom_native_ad_layout.xml +58 -0
  19. package/app.plugin.js +2 -0
  20. package/ios/AdwhaleSdkReactNative.h +5 -0
  21. package/ios/AdwhaleSdkReactNative.mm +21 -0
  22. package/lib/module/AdWhaleBannerView.js +20 -0
  23. package/lib/module/AdWhaleBannerView.js.map +1 -0
  24. package/lib/module/AdWhaleInterstitialAd.js +47 -0
  25. package/lib/module/AdWhaleInterstitialAd.js.map +1 -0
  26. package/lib/module/AdWhaleMediationSdk.js +48 -0
  27. package/lib/module/AdWhaleMediationSdk.js.map +1 -0
  28. package/lib/module/AdWhaleNativeCustomView.js +36 -0
  29. package/lib/module/AdWhaleNativeCustomView.js.map +1 -0
  30. package/lib/module/AdWhaleNativeTemplateView.js +40 -0
  31. package/lib/module/AdWhaleNativeTemplateView.js.map +1 -0
  32. package/lib/module/AdWhaleRewardAd.js +50 -0
  33. package/lib/module/AdWhaleRewardAd.js.map +1 -0
  34. package/lib/module/NativeAdwhaleSdkReactNative.js +5 -0
  35. package/lib/module/NativeAdwhaleSdkReactNative.js.map +1 -0
  36. package/lib/module/index.js +28 -0
  37. package/lib/module/index.js.map +1 -0
  38. package/lib/module/package.json +1 -0
  39. package/lib/typescript/package.json +1 -0
  40. package/lib/typescript/src/AdWhaleBannerView.d.ts +18 -0
  41. package/lib/typescript/src/AdWhaleBannerView.d.ts.map +1 -0
  42. package/lib/typescript/src/AdWhaleInterstitialAd.d.ts +19 -0
  43. package/lib/typescript/src/AdWhaleInterstitialAd.d.ts.map +1 -0
  44. package/lib/typescript/src/AdWhaleMediationSdk.d.ts +17 -0
  45. package/lib/typescript/src/AdWhaleMediationSdk.d.ts.map +1 -0
  46. package/lib/typescript/src/AdWhaleNativeCustomView.d.ts +19 -0
  47. package/lib/typescript/src/AdWhaleNativeCustomView.d.ts.map +1 -0
  48. package/lib/typescript/src/AdWhaleNativeTemplateView.d.ts +40 -0
  49. package/lib/typescript/src/AdWhaleNativeTemplateView.d.ts.map +1 -0
  50. package/lib/typescript/src/AdWhaleRewardAd.d.ts +24 -0
  51. package/lib/typescript/src/AdWhaleRewardAd.d.ts.map +1 -0
  52. package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts +7 -0
  53. package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts.map +1 -0
  54. package/lib/typescript/src/index.d.ts +11 -0
  55. package/lib/typescript/src/index.d.ts.map +1 -0
  56. package/package.json +168 -0
  57. package/plugin/index.js +16 -0
  58. package/react-native.config.js +30 -0
  59. package/src/AdWhaleBannerView.tsx +53 -0
  60. package/src/AdWhaleInterstitialAd.ts +93 -0
  61. package/src/AdWhaleMediationSdk.ts +93 -0
  62. package/src/AdWhaleNativeCustomView.tsx +87 -0
  63. package/src/AdWhaleNativeTemplateView.tsx +119 -0
  64. package/src/AdWhaleRewardAd.ts +106 -0
  65. package/src/NativeAdwhaleSdkReactNative.ts +7 -0
  66. package/src/index.ts +61 -0
@@ -0,0 +1,20 @@
1
+ require "json"
2
+
3
+ package = JSON.parse(File.read(File.join(__dir__, "package.json")))
4
+
5
+ Pod::Spec.new do |s|
6
+ s.name = "AdwhaleSdkReactNative"
7
+ s.version = package["version"]
8
+ s.summary = package["description"]
9
+ s.homepage = package["homepage"]
10
+ s.license = package["license"]
11
+ s.authors = package["author"]
12
+
13
+ s.platforms = { :ios => min_ios_version_supported }
14
+ s.source = { :git => "https://github.com/dev-adwhale/adwhale-sdk-react-native.git", :tag => "#{s.version}" }
15
+
16
+ s.source_files = "ios/**/*.{h,m,mm,swift,cpp}"
17
+ s.private_header_files = "ios/**/*.h"
18
+
19
+ install_modules_dependencies(s)
20
+ end
package/LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 adwhale_sdk
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the "Software"), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in all
12
+ copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,121 @@
1
+ # adwhale-sdk-react-native
2
+ AdWhale Android 네이티브 광고 미디에이션 SDK를
3
+ React Native 환경에서 사용할 수 있도록 제공하는 공식 SDK입니다.
4
+
5
+ - Android 네이티브 SDK 기반
6
+ - React Native Bridge / TurboModule 지원
7
+ - 배너, 전면, 보상형, 네이티브 광고 지원
8
+ - Expo Bare Workflow / Custom Dev Client 지원
9
+
10
+ > ⚠️ Expo Go (Managed Workflow)에서는 네이티브 모듈 특성상 사용할 수 없습니다.
11
+
12
+ ---
13
+
14
+ ## Installation
15
+ ```sh
16
+ yarn add adwhale-sdk-react-native
17
+
18
+ 또는
19
+
20
+ npm install adwhale-sdk-react-native
21
+ ```
22
+
23
+
24
+ ## Version Policy
25
+ 본 SDK는 Android 네이티브 SDK 버전과의 대응 관계를 명확히 유지하기 위해
26
+ 다음과 같은 버전 규칙을 사용합니다.
27
+ - 앞 세 자릿수(Major.Minor.Patch) 는 Android SDK 버전과 동일
28
+ - React Native 전용 수정 사항은 Patch 값을 확장하여 관리
29
+
30
+ ### Version Mapping Example
31
+ | Android SDK | React Native SDK | Description |
32
+ |------------|------------------|-------------|
33
+ | 2.7.1 | 2.7.100 | Android 2.7.1 기반 RN SDK 최초 릴리스 |
34
+ | 2.7.1 | 2.7.101 | RN 레이어 핫픽스 |
35
+ | 2.7.1 | 2.7.102 | RN 버그 수정 |
36
+ | 2.7.2 | 2.7.200 | Android SDK 2.7.2 반영 |
37
+
38
+
39
+ ## Version Usage Guide
40
+ 프로젝트 상황에 따라 아래 방식을 권장합니다.
41
+
42
+ ### Android SDK 버전에 고정하여 사용하는 경우 (권장)
43
+ 운영 안정성을 중시하는 경우
44
+ ```json
45
+ {
46
+ "adwhale-sdk-react-native": "~2.7.100"
47
+ }
48
+ ```
49
+ - Android SDK 2.7.1 기반 유지
50
+ - RN 핫픽스만 자동 반영
51
+
52
+ ### 동일한 Android SDK 기반의 최신 RN 수정만 사용
53
+ ```json
54
+ {
55
+ "adwhale-sdk-react-native": "^2.7.100"
56
+ }
57
+ ```
58
+ - Android SDK 2.7.x 범위 내 최신 RN 수정 자동 반영
59
+ - Android SDK 상위 메이저/마이너 버전은 반영되지 않음
60
+
61
+
62
+ ### 특정 버전을 완전히 고정하여 사용하는 경우
63
+ ```json
64
+ {
65
+ "adwhale-sdk-react-native": "2.7.100"
66
+ }
67
+ ```
68
+
69
+
70
+ ### 항상 최신 버전을 사용하는 경우
71
+ ```json
72
+ {
73
+ "adwhale-sdk-react-native": "latest"
74
+ }
75
+ ```
76
+ - 최신 Android SDK 및 RN SDK 포함
77
+ - 개발 및 검증 환경에 적합
78
+
79
+
80
+ ## Example Project
81
+ SDK 동작을 바로 확인할 수 있는 example 프로젝트가 포함되어 있습니다.
82
+ ```sh
83
+ yarn install
84
+ yarn prepare
85
+ cd example
86
+ yarn android
87
+ ```
88
+
89
+ ## Expo Support
90
+ 다음 환경에서 사용 가능합니다.
91
+ - Expo Bare Workflow
92
+ - Expo Custom Dev Client
93
+ Expo Go 환경에서는 사용할 수 없습니다.
94
+
95
+
96
+ ## Supported Features
97
+ - SDK 초기화
98
+ - 배너 광고
99
+ - 전면 광고
100
+ - 보상형 광고
101
+ - 네이티브 광고 (Template / Custom)
102
+ - 광고 이벤트 리스너 제공
103
+
104
+
105
+ ## Troubleshooting
106
+ Android 빌드 오류 발생 시:
107
+ ```sh
108
+ cd example/android
109
+ ./gradlew clean
110
+ ```
111
+
112
+ 환경 점검:
113
+ ```sh
114
+ npx react-native doctor
115
+ ```
116
+
117
+
118
+ ## Learn More
119
+ - [React Native Documentation](https://reactnative.dev/docs/getting-started)
120
+ - [Expo Documentation](https://docs.expo.dev)
121
+ - [AdWhale SDK Guide](https://adwhale.gitbook.io/adwhale-mediation-sdk/react-native/sdk)
@@ -0,0 +1,135 @@
1
+ plugins {
2
+ id "com.android.library"
3
+ id "com.facebook.react"
4
+ }
5
+
6
+ def resolveNodeBinary() {
7
+ def candidateSources = [
8
+ System.getenv("NODE_BINARY"),
9
+ providers.gradleProperty("nodeBinary").orNull,
10
+ project.hasProperty("nodeBinary") ? project.property("nodeBinary") : null,
11
+ file("../node_modules/.bin/node").absolutePath,
12
+ findLatestNvmNode(),
13
+ "/opt/homebrew/bin/node",
14
+ "/usr/local/bin/node",
15
+ "/usr/bin/node"
16
+ ].findAll { it }
17
+
18
+ def executable = candidateSources.find { candidate ->
19
+ candidate && new File(candidate.toString()).canExecute()
20
+ }
21
+
22
+ if (!executable) {
23
+ throw new IllegalStateException(
24
+ "Node.js 실행 파일을 찾을 수 없습니다. NODE_BINARY 환경변수 또는 gradle.properties의 nodeBinary 값을 설정해 주세요.")
25
+ }
26
+
27
+ return executable.toString()
28
+ }
29
+
30
+ def findLatestNvmNode() {
31
+ def homeDir = System.getProperty("user.home")
32
+ if (!homeDir) {
33
+ return null
34
+ }
35
+ def nvmDir = new File(homeDir, ".nvm/versions/node")
36
+ if (!nvmDir.exists()) {
37
+ return null
38
+ }
39
+ def versions = nvmDir.listFiles()?.findAll { it.isDirectory() }?.sort { a, b -> a.name <=> b.name }
40
+ if (!versions || versions.isEmpty()) {
41
+ return null
42
+ }
43
+ def latest = versions.last()
44
+ def nodeFile = new File(latest, "bin/node")
45
+ return nodeFile.canExecute() ? nodeFile.absolutePath : null
46
+ }
47
+
48
+ def COMPILE_SDK = 36
49
+ def MIN_SDK = 24
50
+ def TARGET_SDK = 36
51
+
52
+ react {
53
+ nodeExecutableAndArgs.set([resolveNodeBinary()])
54
+ }
55
+
56
+ android {
57
+ namespace "com.adwhalesdkreactnative"
58
+
59
+ compileSdk COMPILE_SDK
60
+ compileSdkVersion COMPILE_SDK
61
+
62
+ defaultConfig {
63
+ minSdk MIN_SDK
64
+ minSdkVersion MIN_SDK
65
+ targetSdk TARGET_SDK
66
+ targetSdkVersion TARGET_SDK
67
+ }
68
+
69
+ buildFeatures {
70
+ buildConfig true
71
+ }
72
+
73
+ buildTypes {
74
+ release {
75
+ minifyEnabled false
76
+ }
77
+ }
78
+
79
+ lintOptions {
80
+ disable "GradleCompatible"
81
+ }
82
+
83
+ compileOptions {
84
+ sourceCompatibility JavaVersion.VERSION_17
85
+ targetCompatibility JavaVersion.VERSION_17
86
+ }
87
+
88
+ sourceSets {
89
+ main {
90
+ java.srcDirs += [
91
+ "generated/java",
92
+ "generated/jni"
93
+ ]
94
+ }
95
+ }
96
+ }
97
+
98
+ repositories {
99
+ google()
100
+ mavenCentral()
101
+
102
+ // AdWhale SDK Repository Public Access Info
103
+ maven { url "https://dev-adwhale.github.io/adwhale-sdk-android-maven/maven-repo" }
104
+
105
+ // Cauly SDK Repository Public Access Info
106
+ maven { url "https://cauly.github.io/cauly-sdk-android-maven/maven-repo" }
107
+
108
+ // Admize SDK Repository Public Access Info
109
+ maven { url "https://cauly.github.io/admize-sdk-android-maven/maven-repo" }
110
+
111
+ // AdFit SDK Repository Public Access Info
112
+ maven { url "https://devrepo.kakao.com/nexus/content/groups/public/" }
113
+ }
114
+
115
+ dependencies {
116
+ implementation "com.facebook.react:react-android:0.81.1"
117
+
118
+ // 기본 디펜던시: ADwhale Mediation SDK Repository
119
+ implementation "net.adwhale.sdk.mediation:adwhale-mediation-sdk:2.7.1"
120
+
121
+ // 옵션 디펜던시(제외가능): Cauly Adapter SDK Repository
122
+ implementation "net.adwhale.sdk.cauly.adapter:cauly-sdk:3.5.40.3"
123
+
124
+ // 옵션 디펜던시(제외가능): Admize Adapter SDK Repository
125
+ implementation "net.adwhale.sdk.admize.adapter:admize-sdk:1.0.7.1"
126
+
127
+ // 옵션 디펜던시(제외가능): AdFit Adapter SDK Repository
128
+ implementation "net.adwhale.sdk.adfit.adapter:adfit-sdk:3.17.2.4"
129
+
130
+ // 옵션 디펜던시(제외가능): Admob Adapter SDK Repository
131
+ implementation "net.adwhale.sdk.admob.adapter:admob-sdk:24.3.0.1"
132
+
133
+ // 옵션 디펜던시(제외가능): Levelplay Adapter SDK Repository
134
+ implementation "net.adwhale.sdk.levelplay.adapter:levelplay-sdk:8.7.0.5"
135
+ }
@@ -0,0 +1,2 @@
1
+ AdwhaleSdkReactNative_ndkVersion=27.1.12297006
2
+ android.useAndroidX=true
@@ -0,0 +1,247 @@
1
+ # Add project specific ProGuard rules here.
2
+ # You can control the set of applied configuration files using the
3
+ # proguardFiles setting in build.gradle.
4
+ #
5
+ # For more details, see
6
+ # http://developer.android.com/guide/developing/tools/proguard.html
7
+
8
+ # If your project uses WebView with JS, uncomment the following
9
+ # and specify the fully qualified class name to the JavaScript interface
10
+ # class:
11
+ #-keepclassmembers class fqcn.of.javascript.interface.for.webview {
12
+ # public *;
13
+ #}
14
+
15
+ # Uncomment this to preserve the line number information for
16
+ # debugging stack traces.
17
+ #-keepattributes SourceFile,LineNumberTable
18
+
19
+ # If you keep the line number information, uncomment this to
20
+ # hide the original source file name.
21
+ #-renamesourcefileattribute SourceFile
22
+ #================== AdWhale Mediation SDK Proguard for Release 적용 코드 시작 ==================
23
+
24
+ -keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationAds {
25
+ public static *** init(***);
26
+ public static *** init(***, ***);
27
+ public static *** setCoppa(***);
28
+ public static *** setGdpr(***);
29
+ public static *** getGdpr(***);
30
+ public static *** requestGdprConsent(***, ***);
31
+ public static *** isCoppaApplied();
32
+ public static *** getGdprConsentStatus(***);
33
+ public static *** resetGdprConsentStatus(***);
34
+ public static *** getAdwhaleGDPR(***);
35
+ }
36
+
37
+ -keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationOnInitCompleteListener {*;}
38
+
39
+ -keepclasseswithmembers class net.adwhale.sdk.utils.AdWhaleLog {
40
+ public static *** setLogLevel(***);
41
+ public static *** getLogLevel();
42
+ }
43
+
44
+ -keep class net.adwhale.sdk.mediation.ads.ADWHALE_AD_SIZE {*;}
45
+ -keep class net.adwhale.sdk.mediation.ads.ADWHALE_RESULT_CODE {*;}
46
+ -keep class net.adwhale.sdk.mediation.ads.ADWHALE_NATIVE_TEMPLATE {*;}
47
+ -keep class net.adwhale.sdk.mediation.ads.GdprConsentStatus {*;}
48
+
49
+ -keep class net.adwhale.sdk.utils.AdWhaleLog$LogLevel{*;}
50
+ -keep class net.adwhale.sdk.impl.mediation.ReqMediationAdConfig {*;}
51
+ -keep class net.adwhale.sdk.impl.mediation.ResMediationAdConfig {*;}
52
+ -keep class net.adwhale.sdk.impl.mediation.ResMediation {*;}
53
+
54
+ -keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationInterstitialAd {
55
+ public <init>(...);
56
+ public *** loadAd();
57
+ public *** showAd();
58
+ public *** showAd(***);
59
+ public *** setRegion(***);
60
+ public *** setGcoder(***, ***);
61
+ public *** setPlacementName(***);
62
+ public *** destroy();
63
+ public *** setAdWhaleMediationInterstitialAdListener(***);
64
+ }
65
+
66
+ -keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationInterstitialAdListener {*;}
67
+
68
+ -keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationRewardAd {
69
+ public <init>(...);
70
+ public *** loadAd(***);
71
+ public *** showAd(***);
72
+ public *** showAd(***, ***);
73
+ public *** setRegion(***);
74
+ public *** setGcoder(***, ***);
75
+ public *** setPlacementName(***);
76
+ public *** destroy();
77
+ public *** setAdWhaleMediationFullScreenContentCallback(***);
78
+ }
79
+
80
+ -keep class net.adwhale.sdk.mediation.ads.AdWhaleMediationRewardItem {*;}
81
+ -keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationFullScreenContentCallback {*;}
82
+ -keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationRewardedAdLoadCallback {*;}
83
+ -keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationUserEarnedRewardListener {*;}
84
+
85
+ -keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationNativeAdView {
86
+ public <init>(...);
87
+ public *** loadAdWithBinder(***);
88
+ public *** loadAdWithTemplate(***);
89
+ public *** show();
90
+ public *** setDebugEnabled(***);
91
+ public *** setAdWhaleMediationNativeAdViewListener(***);
92
+ public *** setPlacementUid(***);
93
+ public *** setRegion(***);
94
+ public *** setGcoder(***, ***);
95
+ public *** resume();
96
+ public *** pause();
97
+ public *** destroy();
98
+ }
99
+
100
+ -keep class net.adwhale.sdk.mediation.ads.AdWhaleNativeAdBinder {*;}
101
+ -keep class net.adwhale.sdk.mediation.ads.AdWhaleNativeAdBinder$Builder {*;}
102
+ -keep class net.adwhale.sdk.mediation.ads.AdWhaleMediationNativeTemplateStyle {*;}
103
+ -keep class net.adwhale.sdk.mediation.ads.AdWhaleMediationNativeTemplateStyle$Builder {*;}
104
+
105
+ -keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationNativeAdViewListener {*;}
106
+
107
+ -keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationAdView {
108
+ public <init>(...);
109
+ public *** loadAd();
110
+ public *** destroy();
111
+ public *** setAdWhaleMediationAdViewListener(***);
112
+ public *** setAdwhaleAdSize(***);
113
+ public *** setPlacementUid(***);
114
+ public *** setRegion(***);
115
+ public *** setGcoder(***, ***);
116
+ public *** setPlacementName(***);
117
+ public *** setAdaptiveAnchorWidth(***);
118
+ public *** resume();
119
+ public *** pause();
120
+ }
121
+
122
+ -keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationAdViewListener {*;}
123
+
124
+ -keepclasseswithmembers class net.adwhale.sdk.mediation.ads.AdWhaleMediationAdBannerView {
125
+ public <init>(...);
126
+ public *** loadAd();
127
+ public *** show();
128
+ public *** setRegion(***);
129
+ public *** setPlacementName(***);
130
+ public *** destroy();
131
+ public *** setAdWhaleMediationAdBannerViewListener(***);
132
+ public *** setAdaptiveAnchorWidth(***);
133
+ public *** resume();
134
+ public *** pause();
135
+ }
136
+
137
+ -keep interface net.adwhale.sdk.mediation.ads.AdWhaleMediationAdBannerViewListener {*;}
138
+
139
+ #================== AdWhale Mediation SDK Proguard for Release 적용 코드 끝 ==================
140
+
141
+ #================== AdWhale Cauly Adapter SDK Proguard for Release 적용 코드 시작 ==================
142
+
143
+ -keep class net.adwhale.sdk.cauly.adapter.CaulyAdBannerLoader {*;}
144
+
145
+ -keep class net.adwhale.sdk.cauly.adapter.CaulyAdBannerPreLoader {*;}
146
+
147
+ -keep class net.adwhale.sdk.cauly.adapter.CaulyAdInterstitialLoader {*;}
148
+
149
+ -keep class net.adwhale.sdk.cauly.adapter.CaulyAdRewardLoader {*;}
150
+
151
+ -keep class net.adwhale.sdk.cauly.adapter.CaulyCustomEventInterstitialLoader {*;}
152
+
153
+ -keep class net.adwhale.sdk.cauly.adapter.CaulyCustomEventBannerLoader {*;}
154
+
155
+ -keep class net.adwhale.sdk.cauly.adapter.CaulyCustomEventRewardLoader {*;}
156
+
157
+ #================== AdWhale Cauly Adapter SDK Proguard for Release 적용 코드 끝 ==================
158
+
159
+ #================== AdWhale Admize Adapter SDK Proguard for Release 적용 코드 시작 ==================
160
+
161
+ -keep class net.adwhale.sdk.admize.adapter.AdmizeAdBannerLoader {*;}
162
+
163
+ -keep class net.adwhale.sdk.admize.adapter.AdmizeAdBannerPreLoader {*;}
164
+
165
+ -keep class net.adwhale.sdk.admize.adapter.AdmizeAdInterstitialLoader {*;}
166
+
167
+ -keep class net.adwhale.sdk.admize.adapter.AdmizeAdRewardLoader {*;}
168
+
169
+ #================== AdWhale Admize Adapter SDK Proguard for Release 적용 코드 끝 ==================
170
+
171
+ #================== AdWhale AdFit Adapter SDK Proguard for Release 적용 코드 시작 ==================
172
+
173
+ -keep class net.adwhale.sdk.adfit.adapter.AdFitAdBannerLoader {*;}
174
+
175
+ -keep class net.adwhale.sdk.adfit.adapter.AdFitAdBannerPreLoader {*;}
176
+
177
+ #================== AdWhale AdFit Adapter SDK Proguard for Release 적용 코드 끝 ==================
178
+
179
+ #================== AdWhale AdManager Adapter SDK Proguard for Release 적용 코드 시작 ==================
180
+
181
+ -keep class net.adwhale.sdk.admob.adapter.AdManagerAdBannerLoader {*;}
182
+
183
+ -keep class net.adwhale.sdk.admob.adapter.AdManagerAdBannerPreLoader {*;}
184
+
185
+ -keep class net.adwhale.sdk.admob.adapter.AdManagerAdInterstitialLoader {*;}
186
+
187
+ -keep class net.adwhale.sdk.admob.adapter.AdManagerAdNativeTemplateLoader {*;}
188
+
189
+ -keep class net.adwhale.sdk.admob.adapter.AdManagerAdNativeCustomBindingLoader {*;}
190
+
191
+ -keep class net.adwhale.sdk.admob.adapter.AdManagerAdRewardLoader {*;}
192
+
193
+ -keep class net.adwhale.sdk.admob.adapter.AdManagerAdRewardedInterstitialLoader {*;}
194
+
195
+ #================== AdWhale AdManager Adapter SDK Proguard for Release 적용 코드 끝 ==================
196
+
197
+ #================== AdWhale Admob Adapter SDK Proguard for Release 적용 코드 시작 ==================
198
+
199
+ -keep class net.adwhale.sdk.admob.adapter.AdmobAdBannerLoader {*;}
200
+
201
+ -keep class net.adwhale.sdk.admob.adapter.AdmobAdBannerPreLoader {*;}
202
+
203
+ -keep class net.adwhale.sdk.admob.adapter.AdmobAdInterstitialLoader {*;}
204
+
205
+ -keep class net.adwhale.sdk.admob.adapter.AdmobAdNativeTemplateLoader {*;}
206
+
207
+ -keep class net.adwhale.sdk.admob.adapter.AdmobAdNativeCustomBindingLoader {*;}
208
+
209
+ -keep class net.adwhale.sdk.admob.adapter.AdmobAdRewardLoader {*;}
210
+
211
+ -keep class net.adwhale.sdk.admob.adapter.AdmobAdRewardedInterstitialLoader {*;}
212
+
213
+ -keep class net.adwhale.sdk.admob.adapter.custom.cauly.AdMobCaulyEvent {*;}
214
+
215
+ -keep class net.adwhale.sdk.admob.adapter.custom.cauly.CaulyMediationBannerAd {*;}
216
+
217
+ -keep class net.adwhale.sdk.admob.adapter.custom.cauly.CaulyMediationInterstitialAd {*;}
218
+
219
+ -keep class net.adwhale.sdk.admob.adapter.custom.cauly.CaulyMediationRewardAd {*;}
220
+
221
+ # AdWhale AdMob Adapter - Keep the public entry points for reflection
222
+ -keep public class net.adwhale.sdk.admob.adapter.AdMobPrivacyAdapter {
223
+ public static net.adwhale.sdk.admob.adapter.AdMobPrivacyAdapter getInstance();
224
+ }
225
+
226
+ #================== AdWhale Admob Adapter SDK Proguard for Release 적용 코드 끝 ==================
227
+
228
+ #================== AdWhale LevelPlay Adapter SDK Proguard for Release 적용 코드 시작 ==================
229
+
230
+ -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdBannerLoader {*;}
231
+
232
+ -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdBannerPreLoader {*;}
233
+
234
+ -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdInterstitialLoader {*;}
235
+
236
+ -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdRewardLoader {*;}
237
+
238
+ -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdNativeCustomBindingLoader {*;}
239
+
240
+ -keep class net.adwhale.sdk.levelplay.adapter.LevelPlayAdNativeTemplateLoader {*;}
241
+
242
+ # AdWhale LevelPlay Adapter - Keep the public entry points for reflection
243
+ -keep public class net.adwhale.sdk.levelplay.adapter.LevelPlayPrivacyAdapter {
244
+ public static net.adwhale.sdk.levelplay.adapter.LevelPlayPrivacyAdapter getInstance();
245
+ }
246
+
247
+ #================== AdWhale LevelPlay Adapter SDK Proguard for Release 적용 코드 끝 ==================
@@ -0,0 +1,71 @@
1
+ pluginManagement {
2
+ repositories {
3
+ google()
4
+ mavenCentral()
5
+ gradlePluginPortal()
6
+ }
7
+ plugins {
8
+ id("com.android.library") version "8.7.2"
9
+ }
10
+ includeBuild("../node_modules/@react-native/gradle-plugin")
11
+ }
12
+ plugins { id("com.facebook.react.settings") }
13
+
14
+ def resolveNodeBinary() {
15
+ def providers = settings.providers
16
+ def candidateSources = [
17
+ System.getenv("NODE_BINARY"),
18
+ providers.gradleProperty("nodeBinary").getOrNull(),
19
+ settings.extensions.extraProperties.has("nodeBinary")
20
+ ? settings.extensions.extraProperties.get("nodeBinary")
21
+ : null,
22
+ file("../node_modules/.bin/node").absolutePath,
23
+ findLatestNvmNode(),
24
+ "/opt/homebrew/bin/node",
25
+ "/usr/local/bin/node",
26
+ "/usr/bin/node"
27
+ ].findAll { it != null }
28
+
29
+ def executable = candidateSources.find { candidate ->
30
+ candidate && new File(candidate.toString()).canExecute()
31
+ }
32
+
33
+ if (executable == null) {
34
+ throw new IllegalStateException(
35
+ "Node.js 실행 파일을 찾을 수 없습니다. NODE_BINARY 환경변수 또는 gradle.properties의 nodeBinary 값을 설정해 주세요.")
36
+ }
37
+
38
+ return executable.toString()
39
+ }
40
+
41
+ def findLatestNvmNode() {
42
+ def homeDir = System.getProperty("user.home")
43
+ if (homeDir == null) {
44
+ return null
45
+ }
46
+ def nvmVersionsDir = new File(homeDir, ".nvm/versions/node")
47
+ if (!nvmVersionsDir.exists()) {
48
+ return null
49
+ }
50
+ def candidates =
51
+ nvmVersionsDir.listFiles()?.findAll { it.isDirectory() }?.sort { a, b -> a.name <=> b.name }
52
+ if (candidates == null || candidates.isEmpty()) {
53
+ return null
54
+ }
55
+ def latest = candidates.last()
56
+ def nodeBinary = new File(latest, "bin/node")
57
+ return nodeBinary.canExecute() ? nodeBinary.absolutePath : null
58
+ }
59
+
60
+ def reactNativeDir = file("../node_modules/react-native")
61
+ def cliCommand = [
62
+ resolveNodeBinary(),
63
+ reactNativeDir.absolutePath + "/cli.js",
64
+ "config"
65
+ ]
66
+
67
+ extensions.configure(com.facebook.react.ReactSettingsExtension) { ex ->
68
+ ex.autolinkLibrariesFromCommand(cliCommand)
69
+ }
70
+ rootProject.name = "adwhalesdkreactnative"
71
+
@@ -0,0 +1,2 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android">
2
+ </manifest>