Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor build configs (build.gradle, Podfile) #305

Merged
merged 9 commits into from
May 21, 2022
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions KakaoLoginExample/ios/Podfile
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ require_relative '../node_modules/@react-native-community/cli-platform-ios/nativ

platform :ios, '11.0'

# $KakaoSDKVersion = "2.9.0"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

라이브러리 호환성을 위해서 default로 설정을 해주는게 좋지 않을까요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

테스트를 위한 코맨트가 남아있었군요. kakao-login.podspec의 kakao_sdk_version을 기본으로 사용하도록 수정되었습니다.
2.9.1에서 별 문제는 없었으나, 만약의 호환성을 위해 sdk버전이 2.9.0로 롤백되었습니다. 감사합니다.


target 'KakaoLoginExample' do
config = use_native_modules!

Expand Down
166 changes: 125 additions & 41 deletions android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,60 +1,144 @@
buildscript {
ext {
gradleVersion = '4.1.0'
kotlinVersion = '1.3.41'
}

repositories {
google()
jcenter()
}
// Buildscript is evaluated before everything else so we can't use getExtOrDefault
def kotlin_version = rootProject.ext.has('kotlinVersion') ? rootProject.ext.get('kotlinVersion') : project.properties['RNKakaoLogins_kotlinVersion']
def gradle_version = rootProject.ext.has('gradleVersion') ? rootProject.ext.get('gradleVersion') : project.properties['RNKakaoLogins_gradleVersion']

dependencies {
classpath("com.android.tools.build:gradle:$gradleVersion")
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion"
}
}
repositories {
google()
mavenCentral()
jcenter()
WoonHaKim marked this conversation as resolved.
Show resolved Hide resolved

maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
}

def safeExtGet(prop, fallback) {
rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
dependencies {
classpath "com.android.tools.build:gradle:$gradle_version"
// noinspection DifferentKotlinGradleVersion
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}

apply plugin: 'com.android.library'
apply plugin: 'kotlin-android'

android {
compileSdkVersion safeExtGet('compileSdkVersion', 29)

defaultConfig {
minSdkVersion safeExtGet('minSdkVersion', 19)
targetSdkVersion safeExtGet('targetSdkVersion', 29)
versionCode 1
versionName "1.0"
}
def getExtOrDefault(name) {
return rootProject.ext.has(name) ? rootProject.ext.get(name) : project.properties['RNKakaoLogins_' + name]
}

lintOptions {
abortOnError false
}
def getExtOrIntegerDefault(name) {
return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties['RNKakaoLogins_' + name]).toInteger()
}

compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
android {
compileSdkVersion getExtOrIntegerDefault('compileSdkVersion')
defaultConfig {
minSdkVersion 21
targetSdkVersion getExtOrIntegerDefault('targetSdkVersion')
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled false
}
}
lintOptions {
disable 'GradleCompatible'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}

kotlinOptions {
jvmTarget = "1.8"
}
kotlinOptions {
jvmTarget = "1.8"
}
}

repositories {
maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
mavenCentral()
jcenter()
google()

maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }


def found = false
def defaultDir = null
def androidSourcesName = 'React Native sources'

if (rootProject.ext.has('reactNativeAndroidRoot')) {
defaultDir = rootProject.ext.get('reactNativeAndroidRoot')
} else {
defaultDir = new File(
projectDir,
'/../../../node_modules/react-native/android'
)
}

if (defaultDir.exists()) {
maven {
url defaultDir.toString()
name androidSourcesName
}

logger.info(":${project.name}:reactNativeAndroidRoot ${defaultDir.canonicalPath}")
found = true
} else {
def parentDir = rootProject.projectDir

1.upto(5, {
if (found) return true
parentDir = parentDir.parentFile

def androidSourcesDir = new File(
parentDir,
'node_modules/react-native'
)

def androidPrebuiltBinaryDir = new File(
parentDir,
'node_modules/react-native/android'
)

if (androidPrebuiltBinaryDir.exists()) {
maven {
url androidPrebuiltBinaryDir.toString()
name androidSourcesName
}

logger.info(":${project.name}:reactNativeAndroidRoot ${androidPrebuiltBinaryDir.canonicalPath}")
found = true
} else if (androidSourcesDir.exists()) {
maven {
url androidSourcesDir.toString()
name androidSourcesName
}

logger.info(":${project.name}:reactNativeAndroidRoot ${androidSourcesDir.canonicalPath}")
found = true
}
})
}

if (!found) {
throw new GradleException(
"${project.name}: unable to locate React Native android sources. " +
"Ensure you have you installed React Native as a dependency in your project and try again."
)
}
}

def kotlin_version = getExtOrDefault('kotlinVersion')
def kakao_sdk_version = getExtOrDefault('kakaoSdkVersion')

dependencies {
implementation 'com.facebook.react:react-native:+'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:${project.ext.kotlinVersion}"
implementation "com.kakao.sdk:v2-user:2.9.0"
implementation "com.kakao.sdk:v2-talk:2.9.0"
implementation "com.kakao.sdk:v2-story:2.9.0"
}
// noinspection GradleDynamicVersion
api 'com.facebook.react:react-native:+'
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"

// Kakao
implementation "com.kakao.sdk:v2-user:$kakao_sdk_version" // 카카오 로그인
implementation "com.kakao.sdk:v2-talk:$kakao_sdk_version" // 친구, 메시지(카카오톡)
implementation "com.kakao.sdk:v2-story:$kakao_sdk_version" // 카카오 스토리
}
5 changes: 5 additions & 0 deletions android/gradle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
RNKakaoLogins_kotlinVersion=1.3.50
RNKakaoLogins_compileSdkVersion=31
RNKakaoLogins_targetSdkVersion=31
RNKakaoLogins_kakaoSdkVersion=2.9.1
RNKakaoLogins_gradleVersion=4.1.0
16 changes: 11 additions & 5 deletions kakao-login.podspec
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
require "json"

package = JSON.parse(File.read(File.join(__dir__, "package.json")))
kakao_sdk_version = package['sdkVersions']['ios']['kakao']

Pod::Spec.new do |s|
s.name = "kakao-login"
Expand All @@ -26,10 +27,15 @@ Pod::Spec.new do |s|

s.dependency "React"

s.dependency 'KakaoSDK', '~> 2.9.0'
s.dependency 'KakaoSDKCommon', '~> 2.9.0'
s.dependency 'KakaoSDKAuth', '~> 2.9.0'
s.dependency 'KakaoSDKUser', '~> 2.9.0'
s.dependency 'KakaoSDKTalk', '~> 2.9.0'
if defined?($KakaoSDKVersion)
Pod::UI.puts "#{s.name}: Using user specified Kakao SDK version '#{$KakaoSDKVersion}'"
kakao_sdk_version = $KakaoSDKVersion
end

s.dependency 'KakaoSDK', kakao_sdk_version
s.dependency 'KakaoSDKCommon', kakao_sdk_version
s.dependency 'KakaoSDKAuth', kakao_sdk_version
s.dependency 'KakaoSDKUser', kakao_sdk_version
s.dependency 'KakaoSDKTalk', kakao_sdk_version
end

10 changes: 9 additions & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,14 @@
"react": "*",
"react-native": "*"
},
"sdkVersions": {
"ios": {
"kakao": "2.9.1"
},
"android": {
"kakao": "2.9.1"
}
},
"dependencies": {
"dooboolab-welcome": "^1.3.2"
},
Expand All @@ -48,4 +56,4 @@
"prettier": "^2.4.1",
"typescript": "^4.4.4"
}
}
}