일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Retrofit
- studio
- 레트로핏
- WebView
- 안드로이드 스튜디오
- 안스
- GIT
- 웹뷰
- dart
- error
- 코틀린
- Github
- 유튜브
- 에러
- build
- 안드로이드
- MVVM
- coroutine
- viewpager
- 의존성주입
- image
- Android
- 안드로이드스튜디오
- 코루틴
- Gradle
- ADB
- 스튜디오
- RecyclerView
- Kotlin
- 깃헙
- Today
- Total
목록안드로이드 (149)
코딩하는 일용직 노동자
안드로이드에서 A액티비티에서 B액티비티로 이동할때 데이타를 보내는 경우가 있습니다. 간단한 몇개의 변수는 putExtra로 쉽게 보내고 받을 수 있지만, 데이타 클래스 객체를 통째로 보낼경우도 있습니다. 이렇게 안드로이드에서 Intent로 데이타 클래스 객체를 보낼때 Serializable 과 Parcelable을 사용할 수 있습니다. Serializable은 java에서 사용되던 것으로 사용방법은 쉽지만 제약도 많습니다. Serializable로 데이타 클래스 객체를 보낼때는 해당 데이타 클래스에서 사용하는 다른 모든 클래스 객체들도 Serializable을 implements된 상태여야 합니다. 안드로이드에는 새로운 직렬화 방법으로 Parcelable이 있습니다. Parcelable은 원하는 객체들만..
외부 네트워크 연결이 차단된 곳에서 개발하는 경우가 있습니다. 이럴경우 안드로이드 스튜디오의 빌드 셋팅을 오프라인 상태로 설정해야 합니다. 기존에는 아래의 경로에서 Offline work 를 체크해서 사용하면 됐습니다. 하지만 안드로이드 스튜디오 3.6 에서는 offline work 체크박스가 사라졌습니다. 당황하지 말고 다시 찾아보겠습니다. 해당 기능이 다른 곳으로 옮겨졌습니다. View > Tool Windows > Gradle Toggle Offline Mode 를 눌러 활성화 시키면 됩니다.
#0 static 자바의 static처럼 코틀린에서도 인스턴스가 단 하나임을 보장하는 클래스를 만들 수 있습니다. 싱글턴 인스턴스는 전역적으로 사용될 수 있으며, 메모리를 효율적으로 이용할 수 있습니다. #1 Object 코틀린에서는 클래스 이름앞에 object 키워드를 붙이면 곧바로 싱글톤 클래스가 됩니다. 하지만 이경우에는 생성자를 호출하지 않는 클래스에서만 사용할 수 있습니다. import android.util.Log // 싱글톤 클래스를 만들려면 앞에 object 를 붙이면 된다. object MyObjectSingleton { fun printMsg(msg: String) { Log.d("MyObjectSingleton", "msg: $msg") } } #2 companion object 생성..
import android.util.Base64 import java.io.UnsupportedEncodingException import java.security.InvalidAlgorithmParameterException import java.security.InvalidKeyException import java.security.NoSuchAlgorithmException import java.security.spec.AlgorithmParameterSpec import javax.crypto.BadPaddingException import javax.crypto.Cipher import javax.crypto.IllegalBlockSizeException import javax.crypto.No..
RecyclerView Adapter Boilerplate Code #1 기본적인 어댑터 import android.content.Context import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView.ViewHolder class MyAdapter: RecyclerView.Adapter() { private var context: Context? = null override fun onCreateViewHolder(parent:..
안드로이드 스튜디오 4.0 버전에서 업데이트된 Live Layout Inspector 기능을 살펴보겠습니다. 기존 3.1버전에서부터 Layout Inspector 기능이 있었고 이번에 업데이트가 되었습니다. 레이아웃의 계층구조를 3D로 살펴볼 수 있는 비슷한 기능을 iOS 개발하는 XCode에서 본적이 있는데 안드로이드 개발에서도 이용할 수 있게 되었습니다. Layout Inspector 창은 View > Tools Windows > Layout Inspector를 선택하면 사용할 수 있습니다. 우선 테스트 기기를 컴퓨터와 연결하거나 에뮬레이터를 작동시키고 디버그할 앱을 실행합니다. 그리고 [+Select Process]를 누르면 디버그할 앱을 선택할 수 있습니다. 레이아웃의 구조도 쉽게 표시가 되고, ..
안드로이드 9.0 Pie 부터는 https만 사용하도록 강제합니다. 만약 http로 연결을 시도하면 아래의 에러문구를 보실 수 있습니다. CLEARTEXT communication to XXXX not permitted by network security policy 하지만 개발중에 접속하는 서버가 https 만으로 구성된 경우는 드믑니다. 이를 해결하기 위한 방법이 있습니다. #1 targetSdk 버전을 28보다 작게 설정하면됩니다. 하지만 이것은 좋은 방법은 아닙니다. 언젠가는 올려야 하니까요. #2 usesCleartextTraffic 을 true로 설정하면됩니다. 안드로이드 매니페스트 파일에 이렇게 설정을 합니다. 이러면 http 로도 연결이 됩니다. 편리한 방법이긴 합니다만 정식 마켓등록하는 ..
안드로이드 스튜디오가 4.0버전으로 정식 업데이트 되었습니다. gradle에서 데이타 바인딩을 이용하기 위한 설정 방법이 바뀌었습니다. 기존에는 dataBinding { enabled = true } 이렇게 설정해서 사용했지만 안드로이드 스튜디오 4.0 부터는 이렇게 설정하면 DSL element 'android.dataBinding.enabled' is obsolete and has been replaced with 'android.buildFeatures.dataBinding'. 빌드시 이런 에러가 발생합니다. 앞으로는 buildFeatures { dataBinding = true } 이렇게 설정하셔야 합니다.
안드로이드 앱을 릴리즈 버전으로 빌드하려니 30분이 넘도록 빌드를 하는 현상이 있었습니다. 빌드 로그를 보니 아래의 메세지가 반복적으로 표시되었습니다. Expiring Daemon because JVM heap space is exhausted 안드로이드 스튜디오의 heap memory 가 부족한듯 합니다. 사용할 수 있는 메모리를 더 높게 설정해보겠습니다. Preferences(Settings) > Memory Settings 메뉴에서 설정할 수 있습니다.
#1 기존 이용했던 식별자 정보 안드로이드 10 이전에는 기기의 고유 식별자정보를 얻기가 쉬웠습니다. 이 정보를 이용해 중복로그인을 막는다던지 1계정에 1기기로만 서비스 되도록 한는 처리가 가능했습니다. 주로 아래의 기기 식별자정보를 사용했습니다. 기기 시리얼 번호 Build.getSerial() 디바이스 ID TelephonyManager.getDeviceId() 유심 시리얼 넘버 TelephonyManager.getSimSerialNumber() IMEI TelephonyManager.getImei() MEID TelephonyManager.getMeid() 하지만!! 안드로이드 10(Q) 버전부터는 보안정책이 변경되어서 이 정보들을 얻을 수 없게되었습니다. OS가 10 버전 이상인 기기에서는 위의 ..