프로그래밍/Android (24) 썸네일형 리스트형 [Android] 프로가드(ProGuard)와 R8 프로가드(ProGuard)란?코드 난독화 및 최적화 도구이다. 내가 만든 앱은 누군가 디컴파일해서 카피한다해도 아무런 일도 발생하지 않지만 영향력 있는 기업의 앱을 디컴파일해서 카피한다면 회사 입장에서는 크리티컬한 손해를 입을 것이다. 뿐만 아니라 공격자가 앱의 코드를 분석해 취약한 부분을 발견하거나 중요한 데이터를 훔칠 수 있기 때문에 보안적으로도 위험하다. 따라서 앱을 출시할 때 코드 난독화 후 릴리즈를 하여 소스 코드를 보호하는데, 이때 사용할 수 있는 것이 프로가드(현재는 R8)이다. 프로가드는 컴파일된 앱 패키지 코드를 난독화하여 해당 패키지를 디컴파일 했을 때 코드를 해독하기 어렵게 한다. 프로가드는 코드 난독화뿐만 아니라 불필요한 메서드와 미사용 리소스를 제거하는 등 더 작고 빠른 앱을 만들.. 안드로이드 4대 컴포넌트 (Feat. Activity) 안드로이드 4대 컴포넌트란?안드로이드 4대 컴포넌트란 안드로이드 어플리케이션을 구성하는데 필요한 필수적인 4가지 요소를 의미한다. 액티비티(Activity), 서비스(Service), 브로드캐스트 리시버(BroadCast Receiver), 콘텐트 프로바이더(Content Provider) 로 구성되고, 각 요소는 시스템이나 사용자가 어플리케이션에 진입할 수 있는 진입점이다. 또한, 각자의 고유한 수명 주기를 가지고 있고, Activity, Service, BroadCast Receiver는 인텐트(Intent)를 통해 작업을 요청할 수 있다. 매니패스트 파일에 다음과 같이 태그로 선언하여 시스템에 등록하여 사용한다. 액티비티(Activity)액티비티는 사용자와 상호작용하는 진입점이다. 즉, 사용자 .. [Android] 클린 아키텍쳐 (Clean Architecture) 클린 아키텍처란 무엇일까?안드로이드를 어느 정도 개발하다보면 클린 아키텍처라는 것을 들어본 적이 있을 것이다. 「 클린 코드(Clean Code)」 를 저술한 Robert C. Martin 선생님이 제안한 시스템 아키텍처로 시스템을 독립적인 계층으로 분할하고, 의존성의 방향을 역전시키는 것을 중점으로 두는 아키텍처 스타일이다.클린 아키텍처를 사용하게 되면 비즈니스 논리를 확장하고 변경하기 쉽게 만들며, 테스트 가능성과 유지보수성을 향상시킬 수 있다. 클린 아키텍처의 구조 클린 아키텍처가 무엇인지 검색하면 다음과 같은 구조를 많이 볼 수 있다. 그림과 같이 클린 아키텍처는 4가지로 구성이 되어있고, 각 화살표의 방향은 의존성을 의미한다. 클린 아키텍처의 의존성은 밖에서 안으로 향하기 때문에 바깥 원에 속.. Android Studio Project명 바꾸기 1. build.gradle(Module :app) defaultConfig의 applicationId를 원하는 프로젝트 이름으로 바꿔주고 sync를 눌러줍니다. 2. Project명 변경 Refactor -> Rename 클릭 후 이름을 변경해줍니다. 관련 프로젝트의 모든 내용을 바꿀거니?하고 물어보면 -> All Directories 3. setting.gradle root.projectName를 변경할 프로젝트 이름으로 바꿔주고 sync를 눌러줍니다. [HTTP 통신 라이브러리] OkHttp와 Retrofit 🤔 WHAT IS IT? 안드로이드와 서버 간 네트워크 통신을 도와주는 Square사에서 개발한 라이브러리 OkHttp 출시일 : 2013-05-06 HttpURLConnection과 Apache HttpClient와 비교하여 HTTP 통신을 편리하게 할 수 있는 라이브러리이다. Interceptor 기능을 사용해 네트워크 제어에 관한 옵션을 세밀하게 설정할 수 있다는 특징이 있다. Retrofit 출시일 : 2013-05-13 OkHttp에 기반을 두고 OkHttp를 추상화 하여 사용할 수 있도록 한 라이브러리이다. Interface와 Annotation을 사용하여 요청을 정의해 직관적이고, Converter Factory를 통해 JSON response를 자동 파싱하여 데이터 처리가 간편하다는 특징이.. SoundPool Constructor deprecated 해결 API Level 21부터 deprecated 되었다. 왜 deprecated 되었는지는 stackFlow에 어떤 분이 답변을 달아주셨다. https://stackoverflow.com/questions/39184157/android-why-is-the-constructor-for-soundpool-deprecated 기존 SouncPool 생성자에는 maxStreams, streamType, srcQuality가 들어갔다. 하지만, maxStreams는 이제 명시적으로 설정할 필요가 없고, streamType을 쓰는 것보다 AudioAttributes를 사용하면 더 많은 세팅값을 줄 수 있고, srcQuality 매개변수는 없어졌기 때문에 SoundPool 생성자를 쓰는 것보다 SoundPool.Bui.. getColor(), getDrawable() deprecated 해결 API Level 23부터 해당 메서드들이 deprecated 되었다고 한다. 해결 방안은 ContextCompat을 통해 getColor()와 getDrawable()을 호출하는 것이다. // API 23 이전 resources.getColor(R.color.RED) resources.getDrawable(R.drawable.ball) // API 23 이후 ContextCompat.getColor(context, R.color.RED) ContextCompat.getDrawable(context, R.drawable.ball) [Kotlin] Android Studio 커스텀 프로그래스바 만들기 (Custom Progress bar) 1. drawable 생성 res -> drawable -> progressbar.xml 생성 2. main_activity.xml 3. MainActivity.kt class MainActivity : AppCompatActivity() { val TAG = "ProgressBarTAG" lateinit var progressBar: ProgressBar lateinit var timer: CountDownTimer override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) progressBar = findViewById(R.id.mai.. 이전 1 2 3 다음