์นด์นด์ค ์ง๋ API ์ฌ์ฉ ์ ์๋๋ก์ด๋ ์คํ๋์ค AVD ์๋ฎฌ๋ ์ดํฐ ์คํ์ด ์๋๋ค...๐ญ
์ฆ, ๊ฐ์๊ธฐ๊ธฐ๊ฐ ์๋ ์ค์ ์๋๋ก์ด๋ ๋๋ฐ์ด์ค๋ฅผ ์ฐ๊ฒฐํด์ผ๋ง ํ๋ค.
๊ทธ๋ฌ๋ ํน์ ์ด ํฌ์คํธ๋ฅผ ์ฐธ๊ณ ํ๋ฉฐ ์นด์นด์ค ์ง๋ API ์ฐ๋์ ์๋ํ์ค ๋ถ๋ค์ด ๊ณ์๋ค๋ฉด,
์ค์ ๊ธฐ๊ธฐ๋ฅผ ๋จผ์ ์ค๋นํด์ฃผ์๊ธธ ์ถ์ฒ๋๋ฆฐ๋ค.
๊ฐ๋ฐ ํด์ VS Code์ Android Studio.
React Native๋ฅผ ์ด์ฉํด ์๋๋ก์ด๋ ์ฑ์ ๊ฐ๋ฐํ๋ ํ๋ก์ ํธ์ด๋ค.
ํ์ฌ ์งํํ๊ณ ์๋ ํ๋ก์ ํธ์์ ์ง๋๋ฅผ load ํ๊ณ , ์ฃผ์๋ฅผ ๊ฒ์ํ๊ณ ์ ํํ ์ ํฌ์ ๋ํด ์๋์ ๊ฒฝ๋๋ฅผ ๋์ด์์ผ ํ๋ ๊ธฐ๋ฅ์ด ํ์ํ๋ค.
๊ทธ๋์ ์ง๋ API๋ฅผ ์ฐ๋ํ๊ธฐ๋ก ํ๋ค.
์ด API๋ฅผ ์ฐ๋ํ๊ฒ ๋๋ฉด ๋์ ํ๋ก์ ํธ ์์ ์นด์นด์ค ์ง๋๊ฐ ๊ตฌํ๋๋ ๊ฒ์ด๋ค.
์ฒ์ ์ฐ๊ฒฐํ๋ ๊ฒ์ด๋ค ๋ณด๋ ์๊ฐ์ด ์ค๋ ์์๋๋๋ฐ...
์ฝ์งํ๊ฒ ๋๋ ๊ณผ์ ๋ค์ ๋ชจ๋ ๊ฐ์ง์น๊ธฐ ํ๊ณ ๊ฒฐ๊ณผ๋ก ์ ์ผ๋ก ์ฑ๊ณต์ ์ด์๋ ๋ด์ฉ๋ง ๋ด์๋ณด๋ ค ํ๋ค.
์นด์นด์ค ๊ฐ๋ฐ์ ์ฌ์ดํธ์์ ๋ก๊ทธ์ธ์ ํ ๋ค ์๋จ์ '๋ด ์ ํ๋ฆฌ์ผ์ด์ '์์ ์นด์นด์ค API๋ฅผ ์ฐ๋ํ ํ๋ก์ ํธ๋ฅผ ์ถ๊ฐํด๋ณด๊ฒ ๋ค.
'๋ด ์ ํ๋ฆฌ์ผ์ด์
' ์ ๋๋ฅด๋ฉด ์์ ๊ฐ์ ๋ฒํผ์ด ๋์จ๋ค.
์ ํ๋ฆฌ์ผ์ด์
์ถ๊ฐํ๊ธฐ ๋ฅผ ๋๋ฅธ ๋ค์,
์ ๋ด์ฉ์ ์ฑ์์ค ๋ค ์ ์ฅ์ ํ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ฉด '๋ด ์ ํ๋ฆฌ์ผ์ด์
' ์ ๋ฐฉ๊ธ ์์ฑํ ์ ํ๋ฆฌ์ผ์ด์
์ด ์ถ๊ฐ๋ ๊ฑธ ํ์ธํ ์ ์์ ๊ฒ์ด๋ค.
๊ทธ๊ฑธ ํด๋ฆญํ๋ฉด,
์ด์ฒ๋ผ ์๋์ผ๋ก ๋ฐ๊ธ๋๋ ์ฑ ํค๋ฅผ ํ์ธํ ์ ์๋ค.
์ฑ ํค๋ฅผ ์๋ ค์ฃผ๋ ํ๋ฉด์์ ์คํฌ๋กค์ ์กฐ๊ธ ๋ด๋ฆฌ๋ฉด,
ํ๋ซํผ์ ์ค์ ํ๋ผ๋ ํ๋ฉด์ด ๋์จ๋ค.
์๋๋ก์ด๋, iOS, Web์ ํ๋ซํผ์ ์ค์ ํ ์ ์๋๋ฐ
์ฐ๋ฆฌ๋ ์๋๋ก์ด๋๋ฅผ ๋ฑ๋กํด๋ณด๋๋ก ํ๊ฒ ๋ค.
์๋๋ก์ด๋ ํ๋ซํผ์ ๋๋ฅด๋ฉด,
์ด๋ฐ ๋ด์ฉ์ ์ฑ์ด ๋ค ์ ์ฅ์ ํ๋ฉด ๋๋๋ฐ...
ํจํค์ง๋ช
์ ์๋๋ก์ด๋ ์คํ๋์ค์์ ๋ฐ๋ก ํ์ธํ๋ฉด ๋์ง๋ง,
ํค ํด์๊ฐ ๋ญ์ง ๋๋ ์์ํ๊ณ ์ข ์ด๋ ค์ ๊ธฐ ๋๋ฌธ์...
์ด ๋ถ๋ถ์ ๋ฐ๋ก ์ ์ด๋ณด๋๋ก ํ๊ฒ ๋ค.
์ฐ์ , ์นด์นด์ค ์์ฒด์์ ์ ๊ณตํ๋ ํค ํด์์ ๋ํ ๋ฌธ์๋ฅผ ํ์ธํ๊ธธ ์ถ์ฒํ๋ค.
์ค๋ช
ํ์๋ฉด, ๋๋ ์นด์นด์ค API๋ฅผ ์ฌ์ฉํ ๊ฑด๋ฐ
์นด์นด์ค ์
์ฅ์์๋ ๋ด๊ฐ ์นด์นด์ค๊ฐ ํ๊ฐ๋ ๋์์ธ์ง ์๋์ง ํ์ธํ๋ ๊ณผ์ ์ด ํ์ํ ๊ฒ์ด๋ค.
๊ทธ ๊ณผ์ ์์ ์ฌ์ฉ๋๋ ๊ฒ์ด ํค ํด์ ์ด๋ค.
์ฝ๊ฒ ๋งํ๋ฉด API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ์ ๋ถ์ฆ์ด๋ผ๊ณ ์ดํดํ๋ฉด ๋๋ค.
ํฐ๋ฏธ๋์์ ํค ํด์๋ฅผ ๊ตฌํ๋ ๋ฐฉ๋ฒ๋ ์๊ณ ์ฝ๋๋ก ๊ตฌํ๋ ๋ฐฉ๋ฒ๋ ์์ง๋ง,
๋๋ ํฐ๋ฏธ๋์์ ๋๋ฒ๊ทธ ํค ํด์์ ๋ฆด๋ฆฌ์ฆ ํค ํด์๋ฅผ ๊ตฌํ ์์ ์ด๋ค.
์ด ๊ณผ์ ์์ openssl ์ค์น๊ฐ ํ์์ด๊ธฐ ๋๋ฌธ์, openssl-for-windows ๋งํฌ์ ์ ์ํด ์ฌ์ ์ ์ค์นํด์ฃผ๋ฉด ๋๋ค.
๋งํฌ์ ์ ์ํ๋ฉด ์์๊ฐ์ ํ๋ฉด์ด ๋์ค๋๋ฐ, ์ด ์ค ๋ณธ์ธ์ ํ๊ฒฝ์ ๋ง๋ zip ํ์ผ์ ์ค์นํ๋ฉด ๋๋ค.
์ค์นํ ๋ค ๋ณธ์ธ์ด ์ค์นํ openssl์ด ์ ์ฅ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ํ์ธํด๋๋ค.
๋์ ๊ฒฝ์ฐ ๋ค์ ๋๋ ํ ๋ฆฌ์๋ค.
๋ ๊ฐ์ง ํคํด์ ์ค "๋๋ฒ๊ทธ" ํคํด์๋,
ํ๋ก์ ํธ๋ฅผ ์ฒ์ ์์ฑํ๊ฑฐ๋ ๋๋ฒ๊ทธํ ๋ ์๋๋ก์ด๋ ์คํ๋์ค์์ ๊ฐ๋ฐ ํ๊ฒฝ์ ๋ง๊ฒ ์๋์ผ๋ก ์์ฑํด์ค ์ธ์ฆ์์์ ํด์ํ ๊ฐ์ด๋ค.
์ด์ "C:\Users\USER.android\"์ ๊ฒฝ๋ก์์ debug.keystore๊ฐ ์๋์ง ํ์ธํด์ค๋ค.
ํด๋น ํ์ผ์ด ์๋ ๊ฒ์ด ํ์ธ ๋๋ค๋ฉด ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ด์ฉํด ํด๋น ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ๋ค.
cd C:\Program Files\Android\Android Studio\jre\bin
๋จ, ์ฌ์ฉ์์ ํ๊ฒฝ์ ๋ฐ๋ผ ์ ๋์ ์ผ๋ก ์ด ๊ฒฝ๋ก๊ฐ ์ผ์นํ๋ ๊ฑด ์๋๋ค.
๋์ ๊ฒฝ์ฐ, Scoop์ ์ด์ฉํด Android Studio๋ฅผ ์ค์นํ๊ธฐ ๋๋ฌธ์
์ ๊ฒฝ๋ก๋ฅผ ์
๋ ฅํด์ผ ํ๋ค.
๊ฐ์ ํ๊ฒฝ์ ๋ฐ๋ผ android studio ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ์๋ณด๋ฉฐ ์์ ํ๋ฉด ๋ ๋ฏํ๋ค.
์ด๋ ๊ฒ ์์ ๋ช ๋ น์ด๋ก ํด๋น ๋๋ ํ ๋ฆฌ๋ก ์ด๋ํ๋ค๋ฉด
keytool -exportcert
-alias androiddebugkey
-keystore C:\Users\User\.android\debug.keystore
-storepass android -keypass android
| C:\Users\USER\openssl-0.9.8k_X64\bin\openssl sha1 -binary
| C:\Users\USER\openssl-0.9.8k_X64\bin\openssl base64
๋ค์ ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ๋ฉด ๋๋ค.
๋ณธ์ธ์ ํ๊ฒฝ์ ๋ฐ๋ผ debug.keystore์ ๋๋ ํ ๋ฆฌ, openssl์ ๋๋ ํ ๋ฆฌ๋ ์์ ํ๋ฉด ๋๋ค.
๊ทธ๋ฌ๋ฉด ํคํด์ ๊ฐ์ ๋ฐ๋ก ๋์์ค๋ค!
"๋ฆด๋ฆฌ์ฆ" ํคํด์๋,
์คํ ์ด์ ์ฑ์ ๋ฐฐํฌํ๊ธฐ ์ํด ์์ฑํ ๋ฆด๋ฆฌ์ฆ ์ธ์ฆ์๋ก๋ถํฐ ํด์ํ ๊ฐ์ด๋ค.
ํฐ๋ฏธ๋์ ์๋ ์ฌํญ์ ์ ๋ ฅํด์ฃผ๋ฉด ๋๋ค.
keytool -exportcert
-alias "ptect"
-keystore ptect.jks
| C:\Users\USER\openssl-0.9.8k_X64\bin\openssl sha1 -binary
| C:\Users\USER\openssl-0.9.8k_X64\bin\openssl base64
alias ์ดํ์๋ RELEASE KEY ALIAS๋ผ๊ณ ๋ฆด๋ฆฌ์ฆ ํค์ ๋ณ์นญ,
keystore ์ดํ์๋ REALEASE KEY PATH๋ผ๊ณ ํค์คํ ์ด์ ๊ฒฝ๋ก๊ฐ ๋ค์ด๊ฐ๋ฉด ๋๋ค.
์ด์ '๋ด ์ ํ๋ฆฌ์ผ์ด์
' ์ถ๊ฐ๊ฐ ์๋ฃ๋์๋ค๋ฉด,
API๋ฅผ ๋ณธ๊ฒฉ์ ์ผ๋ก ์ค์นํด๋ณผ ๊ฒ์ด๋ค.
์นด์นด์ค ๋งต API ๊ณต์ ๊ฐ์ด๋ ํ์ด์ง์ ์ ์ํ์ฌ SDK๋ฅผ ์ค์นํ๋ค.
์ ๋งํฌ์ ์ ์ํ ๋ค Download SDK๋ฅผ ํด์ฃผ๋ฉด ๋๋ค.
์ค์น๋ฅผ ์๋ฃํ ๋ค zip ํ์ผ ์์ถ์ ํด์ ํ๋ค๋ฉด
๋ค์ ๋ด์ฉ์ด ๋ค์ด์์์ ํ์ธํ ์ ์๋ค.
์ค์ ๋์ ๋๋ ํ ๋ฆฌ๋ฅผ ์บก์ฒํ ๋ด์ฉ์ด๋ค.
์ ์ฌ์ง์ฒ๋ผ ํ์ผ์ ๋ฃ์ด๋๋ฉด ๋๋ค.
์ ๋จ๊ณ์์ ์์ถํด์ ํ์ ๋ ๋ณด์ด๋ ํด๋์ ํ์ผ์ ํ์ธํด๋ณด์.
libDaumMapAndroid.jar
ํ์ผ์ /app/libs/์ ๋๋ ํ ๋ฆฌ์,
arm64-v8a
, armeabi
, armeabi-v7a
ํด๋๋ค์ /app/source/main/jniLibs ์ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
๋น์ฐํ ์๊ฒ ์ง๋ง... AndroidManifext.xml์ \android\app\src\main
๋๋ ํ ๋ฆฌ ํ์ ์๋ค!
permission์ ๋ถ์ฌํ๋ uses-permission ํ๊ทธ๋ manifest ํ์ ๋ฐ๋ก ์์ฑํ๋ฉด ๋๋ค.
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
๋ค์์ผ๋ก๋ appkey๋ฅผ ์ถ๊ฐํด์ผ ํ๋ค.
์ด ๋จ๊ณ๋ manifest ๋ฐ๋ก ํ์ ๋จ๊ณ๊ฐ ์๋๋ผ, manifest ์๋์ application ํ์ ์์ฑํด ์ฃผ๋ฉด ๋๋ค.
android:value์๋ ์นด์นด์ค ๊ฐ๋ฐ์ ์ฌ์ดํธ ์์ ์ถ๊ฐํ ์ ํ๋ฆฌ์ผ์ด์
์ ๋ค์ดํฐ๋ธ ์ฑ ํค๋ฅผ ๋ฃ์ด์ค๋ค.
<meta-data android:name="com.kakao.sdk.AppKey" android:value="๋ค์ดํฐ๋ธ ์ฑ ํค"/>
์ด์ ์คํ ์ /app/libs์ ๋ฃ์ด๋ jar๊ฐ ์คํ๋ ์ ์๋๋ก, build.gradle ํ์ผ์ ์์ ํด๋ณด์.
Android Studio์ Project Structure์์ jar dependency๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ๋ฒ๋ ์๋ค๊ณ ํ๋๋ฐ, ์ ๋ฐ์ดํธ๋ ๊ฒ์ธ์ง jar depencency๋ฅผ ์ถ๊ฐํ๋ ํ๋ฉด์ด ๋ณด์ด์ง ์์ ์ง์ ์ฝ๋๋ฅผ ์์ ํด์ฃผ๊ธฐ๋ก ํ์๋ค.
build.gradle์ด ์ฌ๋ฌ ๊ฐ ์์ ์ ์๋๋ฐ, ๊ทธ ์ค app์ ํ์ ๋จ๊ณ์ ์๋ ํ์ผ์ ์ ํํ๊ณ
dependency ํ์์ ๋ค์ ์ฝ๋๋ฅผ ์ถ๊ฐํ๋ค.
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation files('libs/libDaumMapAndroid.jar')
์ด์ ๊ธฐ๋ณธ ์ธํ
์ด ์๋ฃ๋ ๊ฒ์ด๊ณ , ๊ฐ ํ๋ก์ ํธ์ ๋ง๊ฒ ์ง๋๋ฅผ ํ์ฉํด์ฃผ๋ฉด ๋๋ค.
์ฐ์ ์์ฃผ ๊ฐ๋จํ ์ฝ๋๋ฅผ ์์ฑํด ๊ธฐ์ด์ ์ผ๋ก ํ๋ฉด์ด ๋์๊ฐ๋์ง ํ์ธํด๋ณด๊ฒ ๋ค.
๋ค์ ๋ ์ฝ๋๋ Mapview๋ฅผ ๋์ฐ๋ ๊ณผ์ ์ผ๋ก, ์ง๋ ํ๋ฉด์ด ๋ณด์ฌ์ง๋๋ก ํ๋ ์ฝ๋๋ค.
<!-- xml layout -->
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:background="@color/white"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<RelativeLayout
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
import net.daum.mf.map.api.MapView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MapView mapView = new MapView(this);
ViewGroup mapViewContainer = findViewById(R.id.map_view);
mapViewContainer.addView(mapView);
}
}
๋ด ๋๋ฐ์ด์ค์์ ๋ณด์ฌ์ง๋ ํ๋ฉด์ด๋ค.
์ฌ๊ธฐ์ ๋ง์ปค๋ฅผ ์ถ๊ฐํ๋ ๋ฑ ๊ฐ์ธ ์ปค์คํ
์ ํด์ฃผ๋ฉด ๋๊ฒ ๋ค.