#1 Kakaoマップアンドロイドアプリケーションに表示
0、緒論
KakaoマップAPIの方法で公式サイトでうまく表現できたと思うので敢えて挑戦してみましたが、実際にやってみるとそうではないことに気づきました...😂 API使用前の準備事項がうっすらと書かれていて、最終的にはグーグルで解決され、次の2つの条件でかなり時間がかかりました.
どうやってキハシを手に入れたの?
mainactivity.Javaの既存のonCreateではなく、次のコードをコピーします.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("getKeyHash", "" + getKeyHash(MainActivity.this));
}
public static String getKeyHash(final MainActivity context) {
PackageManager pm = context.getPackageManager();
try {
PackageInfo packageInfo = pm.getPackageInfo(context.getPackageName(), PackageManager.GET_SIGNATURES);
if (packageInfo == null)
return null;
for (Signature signature : packageInfo.signatures) {
try {
MessageDigest md = MessageDigest.getInstance("SHA");
md.update(signature.toByteArray());
return android.util.Base64.encodeToString(md.digest(), android.util.Base64.NO_WRAP);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
}
return null;
}
アプリケーションを実行する場合、getKeyHash:後のセクションで「」の内容をキーワードとして登録すればよい.2.ライブラリからダウンロードしたSDKを整理させてもらいましたが、libsとjniLibsファイルは全然見えませんでした。
ライブラリウィンドウの左上隅からロボットヘッドの画像とAndroidの部分が見えます.
ここをクリックしてprojectに変更し、projectname-appをクリックすると、ずっと探していたlibsが表示されます.ここです.jarを入れ、残りの3つのファイルをappに直接追加し、jniLibsファイルに入れればいいです.
3.テストをしたいのですが、アプリケーションはいつも実行せずに電源を切ります。
これは私を最も長い間苦しめた問題です.
Can`t load DaumMapEngineApi.so file
これらのエラーコードを見つけてこの文章を読んでいる人もいるかもしれません.このエラーは、KACOマップAPIがARMアーキテクチャのみをサポートしているため、仮想デバイス上で使用できないためです.解決策は、自分のスマートフォンに直接接続してテストすることです.デバイスマネージャでWi-FiでPhysical-pairをクリックすると、QRコードで自分のデバイスを登録できます.その後、自分のデバイス上で開発者モードを実行し、アンドロイドスタジオとの無線接続でテストすることができます.
[原句]何が問題なのかさっぱりわからない!
そんな人のために、必死にコード全文をコピーします.全部で5つのファイルを修正したり作成したりして、自分の機械にココアマップを置くこともできます.
1) mainactivity.java
package com.example.kakaomap_personal;
import android.os.Bundle;
import android.view.ViewGroup;
//추가한 부분 1
import androidx.appcompat.app.AppCompatActivity;
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);
//추가한 부분2
MapView mapView = new MapView(this);
ViewGroup mapViewContainer = (ViewGroup) findViewById(R.id.map_view);
mapViewContainer.addView(mapView);
//
}
}
2) activity_main.xml<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<!--추가한 부분-->
<RelativeLayout
android:id="@+id/map_view"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
<!---->
</RelativeLayout>
3) androidMainfest.xmlAndroid:valueはkakaodevelopersに提供されるネイティブアプリケーション鍵をコピーすればよい.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.kakaomap_personal">
<!--추가한 부분 1-->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!---->
<application
<!--추가한 부분 2-->
android:usesCleartextTraffic="true"
android:networkSecurityConfig="@xml/network_security_config"
<!---->
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.KakaoMap_personal"
tools:targetApi="n">
<!--추가한 부분 3-->
<meta-data
android:name="com.kakao.sdk.AppKey"
android:value="6b275ec303646674b725f9e9b859b7b2"/>
<!---->
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application
>
</manifest>
4) build.gradle (:app)dependenciesに数行しか追加されていないようですが、file-project構造でも何かをするときに追加されたものがあるので、はっきり覚えていません...
plugins {
id 'com.android.application'
}
android {
compileSdk 32
defaultConfig {
applicationId "com.example.kakaomap_personal"
minSdk 21
targetSdk 32
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
dependencies {
implementation files('libs/libDaumMapAndroid.jar')
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
implementation fileTree(dir: 'src\\main\\jniLibs', include: ['*.aar', '*.jar'], exclude: [])
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
5) network_security_config.xmlres右クリックしてnew-Android resource fileをクリックし、表示されるウィンドウでresource typeをXMLに追加し、次の内容を貼り付けます.
<?xml version="1.0" encoding="utf-8"?>
<!-- http 통신 허용 -->
<network-security-config>
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates src="system" />
</trust-anchors>
</base-config>
</network-security-config>
Reference
この問題について(#1 Kakaoマップアンドロイドアプリケーションに表示), 我々は、より多くの情報をここで見つけました https://velog.io/@trankill1127/1-카카오-지도-안드로이드-앱에-띄우기テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol