안드로이드 프로그램 중 TextView에 텍스트 값을 설정 하려는 경우 
Suppress: Add @SuppressLint(“SetText18n”) annotation
라는 경고가 발생합니다. 

 

 

textView.setText("Your Select : ");

TextView에 값을 하드코딩 해서 발생하는 경우인데 가능하면 값을 직접 입력하지 않도록 하는 권고 입니다.  무시해도 문제가 되지는 않지만 눈에 거슬리기 때문에 annotation을 추가해서 예외사항으로 처리해도 됩니다.  함수 상단에 @SuppressLint("SetTextI18n") annotation을 추가해 줍니다.

 

@SuppressLint("SetTextI18n")
public void getIntentData() {
    ArrayList<String> stringArrayList = getIntent()...

 

annotation을 추가하지 않고 해결 하는 방법으로는

 

/res/values/string.xml에 resource를 추가해 줍니다. 

 

<string name="select">Your Select : </string>

 

그리고 이 select 값을 불러와 하드코딩 했던 위치에 사용 합니다.

 

textView.setText(getString(R.string.select));

 

이렇게 작업 하는건 번거롭지만 텍스트가 변경되어 수정해야 하는 경우 xml에서만 수정하면 되고 동일한 텍스트를 여러 곳에서 사용 하더라도 xml에서 하나만 수정해서 관리하면 되기 때문에 편리한 방법 입니다.

 

 

textView.setText(textView.getText() + stringArrayList.get(i) + ",");

 

이런 건 어떻게 하냐...

 

- copy coding -

 

안드로이드 스튜디오 4.x를 사용할 때는 이런 오류가 없었는데 3.x version 에서 코딩을 하는데 오류가 발생하였습니다. 정확한 안드로이드 스튜디오 버전은

 

이고

 

 

오류가 발생한 붉은색 Nullable에 마우스를 가져가면 오류 내용이 보입니다.
Cannot resolve symbol ‘Nullable’

 

 

public class SDBHelper extends SQLiteOpenHelper {

    private String TB_Member = "member";

    public SDBHelper(@androidx.annotation.Nullable Context context, @androidx.annotation.Nullable String name, @androidx.annotation.Nullable SQLiteDatabase.CursorFactory factory, int version) {
        super(context, name, factory, version);
    }

 

내가 짠 프로그램이 아니고 상속받은 메소드를 자동 생성한 것이라 수정이 아닌 오류 해결을 해야 하겠군요.

AndroidX library를 사용하도록 디펜던시를 추가합니다.

 

build.gradle (Module) 파일을 열고 아래 내용을 추가 합니다.

dependencies {
    implementation 'androidx.appcompat:appcompat:1.1.0-rc01'

 

 

Sync Now를 해주면

 

 

Nullable에 오류가 사라졌습니다. App을 실행하면 다른 오류가 발생합니다.

 

gradle.properties에 androidx를 사용하기 위해 추가 합니다.

 

android.useAndroidX=true
android.enableJetifier=true

 

 

Sync Now를 하고 보면 또 다른 오류가 기다리고 있습니다

 

 

 

산 넘어 산이네요.  Refactor를 이용해 소스를 activex용으로 수정을 해봅니다.  코딩 시작 단계라 사실 이렇게 까지는 하지 않아도 되지만...

 

 

 

Refactor > Migrate to AndroidX...
메뉴를 클릭하면 만일을 위해 소스를 백업 하라고 나옵니다.

 

 

예전에 사용하던 프로젝트라면 backup 해야 잘못 migrate 되었을 때 비교 확인을 할 수 있습니다. 오류가 사라지고 소스가 조금 변경 되었습니다.

 

 

import android.support.v7.app.AppCompatActivity.;

 

이것 말고 하단에 추가로 

 

import androidx.appcompat.app.AppCompatActivity;

이게 추가 되었네요. 위에 있는 v7은 사용하지 않으니 주석 처리합니다.

다시 앱을 실행해 볼까요?  이런 또 오류 군요.

 

 

 

 

MainActivity.java의

 

13번째 라인이 문제 이군요.

 

 

layout에 문제가 있다고 하네요. Layout 파일에서 오류를 찾아 봅시다.

 

 

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 
  .....

 

별거 없는 것 같은데....
자세히 보면 android.support..... 이렇게 되어 있습니다.  Refactor가 수정을 못한 것 같습니다.
androidx로 수정을 해보도록 합니다.

 

 

수정을 하려면
Design > Component Tree > ConstraintLayout > 마우스 우클릭 > Convert view...

 

팝업 창에서 ConstraintLayout이 androidx.constraintlayout.widget.ConstraintLayout 로

되면 [Apply]버튼을 클릭 합니다.

 

 

activity_main.xml

 

파일을 열어보면

 

 

 

수정이 되었습니다.  이제 또 다시 한번 app을 실행해 봅니다.

 

 

 

오류 없이 화면이 나왔습니다.  오랜만에 참 힘든 오류 수정이었습니다.
그냥 안드로이드 스튜디오 4.x 버전을 사용해야 겠습니다. -_-;;

 

- copy coding -

NAVER Map을 이용하여 Android App을 만들어 보려고 합니다.  Google Map을 이용하여 안드로이드 앱을 만들어 보았다면 네이버 맵도 쉽게 만드실 수 있습니다.  네이버도 구글과 비슷한 방법으로 맵 사용 권한을 부여 하고 있습니다.  구글 맵을 이용하여 앱을 만들어 보지 않았다면 사용 권한 키를 받는 과정이 다소 복잡해 보일 수 있습니다.  설명 방법은 그림 위주로 하며 다음 순서대로 진행합니다.

1. 네이버 맵 사용 등록

2. Client ID 생성(맵 사용 키)

3. 안드로이드 스튜디오에서 NAVER Map을 이용한 앱 생성

 

이용 신청을 위해 아래 주소를 이용하여 네이버 맵 사이트 접속합니다.

https://www.ncloud.com/product/applicationService/maps

 

[이용 신청 하기] 버튼을 클릭 합니다

 

 

[회원가입] 화면에서 개인 회원 또는 사업자를 클릭 합니다. 저는 [개인 회원]을 선택하고 [다음] 버튼을 클릭 하였습니다.

 

 

약관에 동의를 합니다광고를 받고 싶으면 광고 정보 수신을 꼭 선택하세요.

 

 

회원 정보를 입력합니다.   아이디는 메일 주소로 입력해야 하고 인증을 위해 전송 버튼을 클릭하여 발송된 메일을 클릭 해야 하니 정확히 입력해야 합니다.  메일 인증을 위해 입력한 아이디의 메일을 확인해 봅니다.

 

 

위 사진은 아이디로 입력한 메일로 수신된 인증 메일입니다. [메일 인증] 버튼을 클릭 해 줍니다.

 

 

나머지 주소 및 회원 정보도 입력을 하고 휴대폰 번호도 인증을 한 후 [다음] 버튼을 클릭합니다.

 

 

무조건 결제수단을 등록해야 하는데 특정 사용량을 넘겨야 하기 때문에 과금은 이루어지지 않는다고 생각하면 됩니다.

 

 

[휴대폰 인증하기]로 결제카드를 등록 합니다.

 

 

본인 확인을 위한 전화 인증을 진행 합니다.

 

 

 

카드정보를 입력하고 [등록하기] 버튼을 클릭 합니다.

 

 

결제 카드 등록이 완료 되었습니다.

 

 

 

10만원 상당의 크레딧을 제공한다고 하는데 필요하면 신청을 합니다단 유효 기간은 3개월 입니다.

 

 

회원가입을 완료하고 로그인 후 다시 처음 화면으로 왔습니다.  [이용 신청 하기] 버튼을 클릭 합니다.

 

 

여러 API들이 소개 되고 있는데 현재는 선택하는 게 아니므로 하단으로 이동합니다.

 

 

본인이 만든 프로그램을 등록하는 화면인데 개인적으로는 순서가 바뀌지 않았나 하는 생각이 듭니다.  어째든 [Application 등록] 버튼을 클릭합니다.

 

 

약관 동의를 하고 [확인] 버튼을 클릭 합니다.

 

 

이제 사용하려는 애플리케이션을 선택하고 등록할 수 있습니다이번에도 스크롤을 하단으로 이동합니다.  물론 네이버 맵이 아니라면 다른걸 선택하면 되겠죠.

 

 

모바일 맵을 사용 하기한 등록을 시작 합니다.  [Mobile Dynamic Map]을 체크하고 안드로이드 앱 패키지 이름도 등록합니다등록시 [추가] 버튼을 클릭해야 등록 됩니다.  패키지를 입력했으면 [등록] 버튼을 클릭합니다.

 

 

드디어 얻으려는 인증 정보 단계에 도착했습니다.  키 모양 아이콘이 있는 [인증 정보] 버튼을 클릭 합니다.

 

 

인증 정보 팝업에서 [Client ID]를 복사해 잘 보관 합니다.  ID가 있어야 앱에서 네이버 맵을 불러올 수 있습니다.

 

 

Client ID를 생성 하였으니 네이버 맵을 이용한 앱을 하나 만들어 봅니다.

 

템플릿을 하나 선택 하고

 

 

Package name Naver에 입력한 것으로 적어줍니다. 네이버 지도 SDK는 안드로이드 OS 버전 4.0.3(API 레벨 15) 이상에서 사용할 수 있으니 Minimum SDK도 확인하고 [Finish] 버튼을 클릭해 줍니다.

 

프로젝트가 생성되면 추가적인 설정값을 입력해 줍니다.

 

build.gradle(Project)

allprojects {
   
repositories {
       
google()
        jcenter()
        maven {
            url
'https://naver.jfrog.io/artifactory/maven/'
       
}
    }
}

 

build.gradle(Module)

 

dependencies {
    implementation 'com.naver.maps:map-sdk:3.10.2'
}

 

그리고 Manifast에 복사해 놓은 Client_ID를 추가해주고 android.permission.INTERNET도 추가 합니다.

 

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    
package="copycoding.tistory.navermap">
    <
uses-permission android:name="android.permission.INTERNET" />
    <
application
        
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.NaverMap">
        <
activity android:name=".MainActivity">
            <
intent-filter>
                <
action android:name="android.intent.action.MAIN" />

                <
category android:name="android.intent.category.LAUNCHER" />
            </
intent-filter>
        </
activity>
        <
meta-data
            android:name="com.naver.maps.map.CLIENT_ID"
            android:value="Client_ID입력" 
/>
    </
application>

</
manifest>

 

Layout에 맵용 fragment를 추가해 줍니다.

 

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    
xmlns:app="http://schemas.android.com/apk/res-auto"
    
xmlns:tools="http://schemas.android.com/tools"
    
android:layout_width="match_parent"
    
android:layout_height="match_parent"
    
tools:context=".MainActivity">

    <
fragment android:layout_width="match_parent"
        
android:layout_height="match_parent"
        
android:id="@+id/map"
        
android:name="com.naver.maps.map.MapFragment" 
/>

</
androidx.constraintlayout.widget.ConstraintLayout>

 

프로그램은 이것으로 끝이고 실행해 볼까요?

 

 

기본적인 지도를 볼 수 있습니다.  Client ID를 얻는 과정이 프로그램보다 더 힘이 드는군요.

 

- copy coding -

Android Studio에서 직접 프로젝트를 생성해서 작업 하는 경우는 발생할 확률이 적고 다른 곳에서 프로그램 소스를 가지고 온 경우나 안드로이드 스튜디오를 새로 설치하고 예전 프로젝트를 Open한 경우에는 발생하는 경우가 있습니다.  오류 내용은

 

Starting Gradle Daemon...
Gradle Daemon started in 1 s 328 ms
> Task :prepareKotlinBuildScriptModel UP-TO-DATE
File C:\Users\will\.android\repositories.cfg could not be loaded.
Checking the license for package Android SDK Build-Tools 29.0.2 in C:\Users\will\AppData\Local\Android\Sdk\licenses
Warning: License for package Android SDK Build-Tools 29.0.2 not accepted.
Checking the license for package Android SDK Platform 28 in C:\Users\will\AppData\Local\Android\Sdk\licenses
Warning: License for package Android SDK Platform 28 not accepted.
 
BUILD SUCCESSFUL in 25s

이런 식으로 되어 있고 여기서는 29.0.2로 되어 있는데 프로젝트 마다 조금씩 다른 버전 번호를 가지고 있게 되겠죠.  원인은 최초 Project 생성시 설정한 buildToolsVersion 값 때문 입니다.

 

저의 경우는 이렇게 프로젝트 생성시 입력이 되어 있는데 Android Studio에서는 관련 기능이 설치가 되어 있지 않아서 메시지가 출력되는 것 입니다.  해결 방법은

 

File > Setting를 선택하여 Settings 창을 오픈 합니다.

 

좌측에서 Android SDK 메뉴를 선택하고 우측에서 [SDK Tools] 탭을 선택합니다.  그리고 우측 하단의 [Show Package Details]를 클릭하면 Build-Tools가 확장되며 필요한 29.0.2 버전을 찾을 수 있습니다.  29.0.2 항목을 체크하고 [OK] 버튼을 클릭 합니다.

 

 

한번 더 설치를 위한 [OK] 버튼 클릭

 

 

좌측 아래에 있는 29.0.2를 선택하고 저작권 Accept를 선택 한 후 [Next] 버튼을 클릭 합니다.

 

 

설치가 진행 되면 잠시 기다리고

 

 

설치가 완료 되면 [Finish] 버튼을 클릭 한 후 다시 Android Studio를 재시작 하면 오류가 사라집니다.

 

- copy coding -


12345678···17

+ Recent posts