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.
- package/AdwhaleSdkReactNative.podspec +20 -0
- package/LICENSE +20 -0
- package/README.md +121 -0
- package/android/build.gradle +135 -0
- package/android/gradle.properties +2 -0
- package/android/proguard-rules.pro +247 -0
- package/android/settings.gradle +71 -0
- package/android/src/main/AndroidManifest.xml +2 -0
- package/android/src/main/java/com/adwhalesdkreactnative/AdwhaleSdkReactNativePackage.java +130 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdSettingModule.java +64 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationAdView.java +172 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationCustomNativeAdView.java +197 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationInterstitialAd.java +134 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationLoggerModule.java +35 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationRewardAd.java +151 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNAdWhaleMediationTemplateNativeAdView.java +317 -0
- package/android/src/main/java/com/adwhalesdkreactnative/RNWrapperView.java +48 -0
- package/android/src/main/res/layout/custom_native_ad_layout.xml +58 -0
- package/app.plugin.js +2 -0
- package/ios/AdwhaleSdkReactNative.h +5 -0
- package/ios/AdwhaleSdkReactNative.mm +21 -0
- package/lib/module/AdWhaleBannerView.js +20 -0
- package/lib/module/AdWhaleBannerView.js.map +1 -0
- package/lib/module/AdWhaleInterstitialAd.js +47 -0
- package/lib/module/AdWhaleInterstitialAd.js.map +1 -0
- package/lib/module/AdWhaleMediationSdk.js +48 -0
- package/lib/module/AdWhaleMediationSdk.js.map +1 -0
- package/lib/module/AdWhaleNativeCustomView.js +36 -0
- package/lib/module/AdWhaleNativeCustomView.js.map +1 -0
- package/lib/module/AdWhaleNativeTemplateView.js +40 -0
- package/lib/module/AdWhaleNativeTemplateView.js.map +1 -0
- package/lib/module/AdWhaleRewardAd.js +50 -0
- package/lib/module/AdWhaleRewardAd.js.map +1 -0
- package/lib/module/NativeAdwhaleSdkReactNative.js +5 -0
- package/lib/module/NativeAdwhaleSdkReactNative.js.map +1 -0
- package/lib/module/index.js +28 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/AdWhaleBannerView.d.ts +18 -0
- package/lib/typescript/src/AdWhaleBannerView.d.ts.map +1 -0
- package/lib/typescript/src/AdWhaleInterstitialAd.d.ts +19 -0
- package/lib/typescript/src/AdWhaleInterstitialAd.d.ts.map +1 -0
- package/lib/typescript/src/AdWhaleMediationSdk.d.ts +17 -0
- package/lib/typescript/src/AdWhaleMediationSdk.d.ts.map +1 -0
- package/lib/typescript/src/AdWhaleNativeCustomView.d.ts +19 -0
- package/lib/typescript/src/AdWhaleNativeCustomView.d.ts.map +1 -0
- package/lib/typescript/src/AdWhaleNativeTemplateView.d.ts +40 -0
- package/lib/typescript/src/AdWhaleNativeTemplateView.d.ts.map +1 -0
- package/lib/typescript/src/AdWhaleRewardAd.d.ts +24 -0
- package/lib/typescript/src/AdWhaleRewardAd.d.ts.map +1 -0
- package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts +7 -0
- package/lib/typescript/src/NativeAdwhaleSdkReactNative.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +11 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/package.json +168 -0
- package/plugin/index.js +16 -0
- package/react-native.config.js +30 -0
- package/src/AdWhaleBannerView.tsx +53 -0
- package/src/AdWhaleInterstitialAd.ts +93 -0
- package/src/AdWhaleMediationSdk.ts +93 -0
- package/src/AdWhaleNativeCustomView.tsx +87 -0
- package/src/AdWhaleNativeTemplateView.tsx +119 -0
- package/src/AdWhaleRewardAd.ts +106 -0
- package/src/NativeAdwhaleSdkReactNative.ts +7 -0
- 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,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
|
+
|