Skip to content

Commit

Permalink
Refactor build configs (build.gradle, Podfile) (#305)
Browse files Browse the repository at this point in the history
* Refactor android build.gradle to use ext values
   https://github.com/callstack/react-native-builder-bob/blob/main/packages/create-react-native-library/templates/kotlin-library/android/build.gradle

* Set kakao_sdk_version as predefined or user specified version

* Fix gradle properties file

* Add mark for $KakaoSDKVersion testing

* Remove jcenter deps.

* Remove unused comment

* Move iOS default version settings to podspec

* Add feature to docs

* Rollback RNKakaoLogins_kakaoSdkVersion to 2.9.0
  • Loading branch information
WoonHaKim committed May 21, 2022
1 parent 507900e commit 78357ae
Show file tree
Hide file tree
Showing 7 changed files with 158 additions and 58 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -572,7 +572,7 @@
COPY_PHASE_STRIP = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
ENABLE_TESTABILITY = YES;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 ";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_DYNAMIC_NO_PIC = NO;
GCC_NO_COMMON_BLOCKS = YES;
Expand Down Expand Up @@ -637,7 +637,7 @@
COPY_PHASE_STRIP = YES;
ENABLE_NS_ASSERTIONS = NO;
ENABLE_STRICT_OBJC_MSGSEND = YES;
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "";
"EXCLUDED_ARCHS[sdk=iphonesimulator*]" = "arm64 ";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
Expand Down
18 changes: 9 additions & 9 deletions KakaoLoginExample/ios/Podfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -58,12 +58,12 @@ PODS:
- FlipperKit/Core
- FlipperKit/FlipperKitNetworkPlugin
- glog (0.3.5)
- kakao-login (3.4.3):
- KakaoSDK (~> 2.9.0)
- KakaoSDKAuth (~> 2.9.0)
- KakaoSDKCommon (~> 2.9.0)
- KakaoSDKTalk (~> 2.9.0)
- KakaoSDKUser (~> 2.9.0)
- kakao-login (4.0.0):
- KakaoSDK (= 2.9.0)
- KakaoSDKAuth (= 2.9.0)
- KakaoSDKCommon (= 2.9.0)
- KakaoSDKTalk (= 2.9.0)
- KakaoSDKUser (= 2.9.0)
- React
- KakaoSDK (2.9.0):
- KakaoSDKAuth (= 2.9.0)
Expand Down Expand Up @@ -565,7 +565,7 @@ SPEC CHECKSUMS:
CocoaAsyncSocket: 065fd1e645c7abab64f7a6a2007a48038fdc6a99
DoubleConversion: cf9b38bf0b2d048436d9a82ad2abe1404f11e7de
FBLazyVector: 7b423f9e248eae65987838148c36eec1dbfe0b53
FBReactNativeSpec: 05e635f9366205191c9f1e0158c752f30d37ca90
FBReactNativeSpec: e87117337f49d2178fe109bb2453cea6bcef55fc
Flipper: d3da1aa199aad94455ae725e9f3aa43f3ec17021
Flipper-DoubleConversion: 38631e41ef4f9b12861c67d17cb5518d06badc41
Flipper-Folly: 755929a4f851b2fb2c347d533a23f191b008554c
Expand All @@ -574,7 +574,7 @@ SPEC CHECKSUMS:
Flipper-RSocket: 602921fee03edacf18f5d6f3d3594ba477f456e5
FlipperKit: 8a20b5c5fcf9436cac58551dc049867247f64b00
glog: 73c2498ac6884b13ede40eda8228cb1eee9d9d62
kakao-login: 099175b2e23620a10bb6375860854034bb92ca44
kakao-login: a94950a55bea6a1a182f6207a6e032f3cc5996f3
KakaoSDK: d5a5a38ebf4da97beeecf100ac3dc9a020e19648
KakaoSDKAuth: 5d9eec3317320dc60015ba8d597b2ad32fc70b1a
KakaoSDKCommon: aaed06bb779b92cd6f5c35e94160d4ecfaaac511
Expand Down Expand Up @@ -621,4 +621,4 @@ SPEC CHECKSUMS:

PODFILE CHECKSUM: da9820c880bcf2e846a670ea8dc0c73c7822fc97

COCOAPODS: 1.11.2
COCOAPODS: 1.11.3
7 changes: 7 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -90,6 +90,13 @@ iOS의 경우 `yarn add @react-native-seoul/kakao-login` 이후 `npx pod-install

6. Project => Targets 아래 앱 선택 => General 탭으로 이동해서 Bundle Identifier가 본인의 카카오 앱과 동일한지 확인해주세요.

7. 여러 라이브러리에서 동일한 버전의 SDK를 써야 하는 경우 `Podfile`에 아래와 같이 추가하여 SDK 버전을 강제로 지정할 수 있습니다.

```ruby
# 없는 경우에는 package.json의 sdkVersions.ios.kakao를 따릅니다.
$KakaoSDKVersion=YOUR_KAKAO_SDK_VERSION
```

#### Android

1. [키 해시 등록](https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android-v1#key-hash)을 진행해주세요. 자바 코드로 구하는 방법이 제일 확실합니다.
Expand Down
164 changes: 123 additions & 41 deletions android/build.gradle
Original file line number Diff line number Diff line change
@@ -1,60 +1,142 @@
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()

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()
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.0
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 = "2.9.0"

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

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,4 @@
"prettier": "^2.4.1",
"typescript": "^4.4.4"
}
}
}

0 comments on commit 78357ae

Please sign in to comment.