2026/03/09

오늘의 이야기

오늘은 읽었던 인터넷 정보 중에서 하나 정리를 해 볼까 합니다.  원본 출처는 아래 링크를 참고하세요.


https://farhan-tanvir.medium.com/10-useful-android-studio-intellij-idea-plugins-to-make-work-eas ier-61d0ab4c5879



 


10 Useful Android Studio- IntelliJ IDEA Plugins to Make Work Easier


Power up your IDEs


farhan-tanvir.medium.com




원본 출처의 글 중에서 눈에 가는 것은 json string을 이용해서 직접 코드를 생성해 가는 것입니다.  개발을 하다 보면 json 데이터를 받아와서 데이터로 활용해야 하는 경우가 많습니다. 지금 하고 있는 작업 중에도 그런 부분이 있고요. opinet에서 받아오는 API 정보를 활용하는 코드 작업을 하는 동안에도 유용하게 사용이 될 것 같아서 정리를 해 두려고 합니다. 


 


https://plugins.jetbrains.com/plugin/9960-json-to-kotlin-class-jsontokotlinclass-



 


JSON To Kotlin Class (JsonToKotlinClass) - IntelliJ IDEs Plugin | Marketplace


Plugin for Kotlin to convert Json String into Kotlin data class code quickly.


plugins.jetbrains.com




 


plugin market에서는 위 글을 참고해 보시면 될 것 같습니다.  먼저 생성된 코드를 보도록 하겠습니다


 


import com.google.gson.annotations.SerializedName


data class AvgRecentPriceBean(
@SerializedName("RESULT")
var result: RESULT = RESULT()
)

data class RESULT(
@SerializedName("OIL")
var oil: List<OIL> = listOf()
)

data class OIL(
@SerializedName("DATE")
var date: String = "",
@SerializedName("PRICE")
var price: Double = 0.0,
@SerializedName("PRODCD")
var prodcd: String = ""
)

다만 생성된 코드에서 수정한 부분은 변수 명칭이 조금 보기가 좋지 않습니다. 해서 저는 생성된 변수 이름을 전부다 소문자로 수정했습니다. 


 


이제 생성하는 순서를 보도록 하겠습니다. 먼저 plugin 을 설치해야 하기 위해서 android studio의 File 메뉴에서 Setting을 들어가 보겠습니다.  그 안에서 Plugins을 찾아봅니다. 


setting 에서 plugin 찾아보기



plugins에서 json을 입력하고 검색을 하면 바로 나오더군요. 그래서 Json To Kotlin Class을 설치하였습니다. 


 


json string 을 변환해 보기



먼저 opinet에서 수신받은 json string을 변환해 봅니다.  실행하는 방법은 alt-K (메뉴에서는 Code - Generate 을 선택했을 때 나오는 팝업메뉴에 Kotlin Data Class from Json을 선택 합니다. ) 을 입력 하면 위 그림과 같이 팝업이 나옵니다. 그러면 json string 을 안에 입력하고 format 버튼을 클릭하면 위 그림과 같이 정렬된 json string 을 볼 수 있습니다.


 


SerializedName Annotation을 넣기 위해서 선택하기



그다음은 아래 왼쪽에 있는 Advanced 버튼을 클릭하고 2번째 있는 Annotation을 선택합니다. opinet API을 호출하는 방식을 retrofit을 이용하여 json format을 수신을 하기 위해서 Gson을 선택했습니다.


 


그리고 주의할 것은 Class 파일을 먼저 생성한 다음 진행해야 합니다. 그렇지 않을 경우 현재 수정 중인 class 소스에 그냥 넣어 주기 때문입니다. 이제 생성할 class 이름을 입력하고 Generate을 실행하면 처음에 보여 드렸던 것과 같은 source code을 얻을 수 있습니다.  이제부터는 dataBean 구현을 위해서 code 입력을 줄여볼 수 있을 것 같습니다. 


 


 





오늘의 이야기

빋드 오류



앱을 개발하는 동안 이런 오류가 나타납니다. gradle 파일에 선언된 implementation을 살펴보아도 lifecycle 과 연관된 것은 선언된 내용이 없습니다. 같은 class 내용이 여기저기에 있다는 내용이고, 작성한 코드가 아닌 참조하는 것들 중에서 중복이 나타난다는 의미입니다.

이런 경우는 아예 gradle 파일에 설정을 해 주는 것으로 해소를 했습니다.


implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:2.5.1"


현재는 이 버전에 최신 이기 때문에 이렇게 한 줄 추가해 주는 것으로 해소를 했습니다만, 최신 버전은 그때 그때 확인을 해 주셔야 할 것 같습니다.


빌드 끝



 


2022.10.02 또 한가지 다른 이유를 알게 되어 수정 합니다. 


https://developer.android.com/jetpack/androidx/migrate?hl=ko 



 


AndroidX로 이전  |  Android 개발자  |  Android Developers


AndroidX로 이전 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. AndroidX는 원래 지원 라이브러리 API를 androidx 네임스페이스의 패키지로 대체합니다. 패키지 및 M


developer.android.com




 위 링크에서 아래와 같은 설명이 있습니다 .gradle.properties 에 아래 옵션을 추가 하는 방법 입니다.


Android 스튜디오를 사용해 기존 프로젝트 이전


Android 스튜디오 3.2 이상에서는 메뉴 바에서 Refactor > Migrate to AndroidX를 선택하여 기존 프로젝트를 AndroidX로 이전할 수 있습니다.


리팩토링 명령은 두 개의 플래그를 사용합니다. 기본적으로 둘 다 gradle.properties 파일에서 true로 설정되어 있습니다.


 


android.useAndroidX=true


Android 플러그인은 지원 라이브러리 대신 적절한 AndroidX 라이브러리를 사용합니다.


 


android.enableJetifier=true


Android 플러그인은 바이너리를 다시 작성해 기존 타사 라이브러리를 자동으로 이전하여 AndroidX를 사용합니다.


 


설정하고 나서 signed bundle 이 build 된 결과 예시



 





오늘의 이야기


#스하리1000명프로젝트,
¿Perdido en Corea? Incluso si no hablas coreano, esta aplicación te ayuda a moverte fácilmente.
Simplemente hable su idioma: traduce, busca y muestra resultados en su idioma.
¡Genial para viajeros! Admite más de 10 idiomas, incluidos inglés, japonés, chino, vietnamita y más.
¡Pruébalo ahora!
https://play.google.com/store/apps/details?id=com.billcoreatech.opdgang1127




2026/03/08

오늘의 이야기

구글에서는 이제 android 13을 대상으로 앱을 게시하기 위해서는 광고 ID을 선언해야 한다고 합니다.  물론 이전부터(2022.4.1 이후) 적용되기 시작했던 부분이나, 9월이 된 이제 서야 준비를 해 봅니다. 그동안은 API 버전이 32 이하인 경우에만 적용되는 앱을 배포하여 왔기 때문에 문제가 되지 않았으나, 이제 API 33 이상 버전으로 옮겨 가기 위해서는 준비를 해야 할 때가 되었다고 볼 수 있습니다. 


 


이번에 패치를 하는 앱이 있어서 시도를 해 보았습니다. 그래서 일단 앱은 정상적으로 패치가 적용 되어 게시되었습니다. 아직 어떤 의미가 있는지는 알 수 없으나, playstore의 게시에서 퇴짜(?)를 받지 않았으니 정리를 해 두고자 합니다. 


 


먼저 manifest 파일에 다음 한 줄을 추가 했습니다. 


<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

다음은 gradle 파일에 추가 합니다. 


implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'
implementation 'com.google.android.gms:play-services-appset:16.0.2'

다음은 체크 루틴을 추가해 두었습니다. 


MainActivity 에 다음과 같이 function을 추가하고, onCreate에서 해당 function을 호출하는 정도... 이걸로 끝?


fun getIdAndLat() {
var adInfo: AdvertisingIdClient.Info? = null;
try {
adInfo = AdvertisingIdClient.getAdvertisingIdInfo(this@MainComposeActivity)
} catch (e : java.lang.Exception) {

}
var GAID = adInfo?.id
var limitTracking = adInfo?.isLimitAdTrackingEnabled

var client = AppSet.getClient(this@MainComposeActivity)
var task = client.appSetIdInfo
task.addOnSuccessListener { info ->
var scope = info.scope
var id = info.id

Log.e("getIdAndLat=", "${GAID} ${limitTracking} ${scope} ${id}")
}

Log.e("getIdAndLat", "----------------- END")
}

코드를 보면 알 수 있듯이 코드에서는 adInfo을 구하여 id을 찾아보는 정도까지만 구현이 되어 있고 그 이외의 것은 아무것도 하지 않고 있습니다.  그래도 아직 까지는 딱히 문제가 발생되었다는 보고를 하고 있지 않습니다. 


 


실행되는 앱의 샘플 이미지는 다음과 같습니다.


광고 테스트 화면



 


다른 내용이 발견되거나, 오류 보고가 발생하게 되면 이 게시글은 수정될 수 있습니다.


 


앱을 게시하게 되면 정책 에서 앱 콘텐츠 을 선택하고 광고ID을 클릭해서 광고ID 사용에 대한 내용을 저장해야 합니다. 


그래야 앱을 게시할 때 정상적으로 게시를 진행할 수 있습니다.


 




 





오늘의 이야기

오늘은 어제에 이어 애드센스에 결제정보를 등록해 보아야겠다.  어제 알아본 것과 같이 해외에서 입금받을 때 수수료가 제일 저렴한 경우는 카카오 뱅크와 하나은행 정도였으니  두 곳의 swift code을 고객센터를 통해서 확인해 보았다.







요새는 모바일에서 운영하는 고객센터를 통해서 유선 질의를 하지 않아도 쉽게 해당 정보를 확인할 수 있었다.

이제 등록을 해 보자. 먼저 애드센스 로그인 후에 결제 화면에 들어가 보자.







이 그림들의 순서대로 해서 결제정보에 결제 수단을 추가하고, 새 은행 정보를 추가해서 등록하면 된다.

은행 정보를 입력할 때는 해당 은행에 등록하면서 입력했던 영문 이름이 필요하므로 해당 정보를 먼저 찾아야 하고, 나머지 정보는 swift code을 확인하면서 찾은 정보만 있으면 된다.  은행 이름도 영문 이름으로 입력을 해야 하기 때문에 위에서 확인한 swift code 관련 내용에서 찾아서 입력하면 되고, 계좌번호는 실제 내가 사용하고 있는 계좌번호를 입력해 주었다.

중개은행, FFC 또는 FBO 입력은 선택사항으로 되어 있으니, 일단 무시하고 넘어가 보겠다.  이제 다른 연락이 없다면, 내 계좌로 수입이 들어오는 날을 손꼽아 기다려 보아야겠다.

그날이 언제 오려는 지...





오늘의 이야기



#스치니1000프로젝트 #재미 #행운기원 #Compose #Firebase

🎯 야 너 토요일마다 로또 확인하냐?
나도 맨날 "혹시나~" 하면서 봤거든 ㅋㅋ

근데 이제는 그냥 안 해
AI한테 맡겼어 🤖✨

그것도 구글 Gemini로다가!

그래서 앱 하나 만들었지
👉 "로또 예상번호 by Gemini" 🎱

AI가 분석해서 번호 딱! 뽑아줌
그냥 보고 참고만 하면 됨

재미로 해도 좋고…
혹시 모르는 거잖아? 😏


https://play.google.com/store/apps/details?id=com.billcorea.gptlotto1127




오늘의 이야기

티스토리 운영을 한 지 1년 하고도 8개월이 넘었다.
그동안의 수고를 덜어주는 메일을 하나 받았다. 잘하시는 분들은 이미 경험을 하셨겠지만...

난 이제서야... ㅋ~ 아무튼 메일의 내용은 지급 방식 없음. 내용을 살펴보고 adsense 계정의 정보를 찾아본다.

adsense에 들어가서 결제 메뉴에 들어가니 지급받을 정보를 입력하라는 데... 아직 계좌 정보를 입력하지 않았다. 이런 일이 생길지 몰랐기 때문에...


Google Payments 에서 온 메일




그래서 이제 찾아보아야겠다고 생각을 하고 구글링을 해 보았다. 어떤 게시물에는 우리은행 크리에이터 통장을 개설하면 외국에서 송금받는 수수료가 공짜라는 내용이 있어서 찾아보았더니, 홈페이지에 게시된 설명에는 실적이 충족한 경우라는 단서 조항이 있었다.






그래서 이제는 다른 은행을 알아 보아야 헸다. 난 저 실적을 충족시켜 다음 해를 기다릴 역량이 되지 않을 듯 하니 말이다.






은행연합회 (은행들이 회원으로 가입 되어 모든 거래가 연결되는 곳...)의 포털에서 이런 게시글을 찾아볼 수 있었다.

은행별로 수수료가 조회가 되는 게시물이었는데, 해외에서 비대면은 송금을 받는 경우 제일 저렴한 수수료는 건당 5000원을 하고 있는 카카오 뱅크와 하나은행 정도인 것 같다.

이미 카뱅 계좌는 있으니, 이제 등록을 해 보아야 겠다.





오늘의 이야기


#스하리1000명프로젝트

스치니들!
내가 만든 이 앱은, 내 폰에 오는 알림 중에서 중요한 키워드가 있는 경우
등록해둔 친구에게 자동으로 전달해주는 앱이야 📲

예를 들어, 카드 결제 알림을 와이프나 자녀에게 보내주거나
이번 달 지출을 달력처럼 확인할 수도 있어!

앱을 함께 쓰려면 친구도 설치 & 로그인해줘야 해.
그래야 친구 목록에서 서로 선택할 수 있으니까~
서로 써보고 불편한 점 있으면 알려줘 🙏

👉 https://play.google.com/store/apps/details?id=com.nari.notify2kakao





오늘의 이야기

https://emmanueldav.medium.com/tips-and-tricks-that-would-improve-your-skills-as-an-android-developer-7e2e81351877



 


Tips and Tricks that would improve your skills as an Android Developer


Here are the best Tips and tricks that would Improve your skills and speed as an Android developer


emmanueldav.medium.com




링크 사이트 입니다.


 


간혹은 필요해 보입니다. 





오늘의 이야기

요사이 한동안 즐겨 보았던 드라마 생각이 나는 바탕화면이 떠~억 올라온다. 


얼음돌



찬바람이 불어 치는 바다... 이 사진은 어디 북극해에서라도 촬영을 한 것일지?  자연 훼손이 심각해지고 있어서 이제는 더 늦을 수 없을 만큼 중요해져 가고 있을 것 같은데, 


 


난 이 사진을 보면서 얼음돌 생각이 난다... 한 두어 달은 재미있었는 데, 그 끝이 새드엔딩이라... 시즌2를 기다려야 하는 건지 잘 모르겠다.


 


아무튼 시즌2가 돌아올 때 까지 쭈~욱 기다려 볼게... 무덕이.


환혼 이미지



 





오늘의 이야기


#스하리1000명프로젝트,
Parfois, il est difficile de parler avec des travailleurs étrangers, n'est-ce pas ?
J'ai créé une application simple qui aide ! Vous écrivez dans votre langue et les autres le voient dans la leur.
Il se traduit automatiquement en fonction des paramètres.
Super pratique pour des discussions faciles. Jetez-y un oeil quand vous en aurez l'occasion !
https://play.google.com/store/apps/details?id=com.billcoreatech.multichat416




오늘의 이야기

이제 또 새로운 앱을 하나 만들어 볼까 합니다.  제목은 가칭 '주문이요'라고 했습니다.    기획의도  요즘은 매장에 가면 다들 테이블에 테블릿 하나쯤 거치하고 주문을 받고 실시간으로 결제도 진행하고 그렇게 매장을 운영하는 경우를 종종...