개요 안드로이드를 개발하다보면 웹뷰를 쓸 일 이 생긴다. 최대한 안드로이드 컴포넌트로 뷰(View)를 개발하면 좋겠지만, 안드로이드 컴포넌트로 뷰를 개발할 경우 유연성이 떨어지게 된다. 물론 안드로이드 컴포넌트로도 유연성 있게 개발을 할 수 있지만, 이미 작성된 코드 내에서의 유연성이 생길 뿐이다. 이에 따라 유연성이 필요한 곳에서는 웹뷰를 쓰는 곳이 많다. 웹뷰를 사용하기 위해서는 Android와 Webview간 통신 방법을 알아야 한다. 이번 글에서는 브릿지를 만드는 방법에 대해 알아보고자 한다. 브릿지란? 브릿지란 안드로이드와 웹뷰의 통신을 위해 만들어지는 Javascript용 인터페이스이다. 웹뷰에서는 안드로이드의 메서드를 직접 호출하는 것이 불가능하기 때문에 '브릿지'라는 통로를 통해 호출해야 ..
Android
이번에 안드로이드 스튜디오를 Artic Fox로 올리면서 다음과 같은 오류가 생겼다. Build file '/Users/james.c/AndroidStudioProjects/MyApplication7/app/build.gradle' line: 2 An exception occurred applying plugin request [id: 'com.android.application'] > Failed to apply plugin 'com.android.internal.application'. > Android Gradle plugin requires Java 11 to run. You are currently using Java 1.8. You can try some of the following opti..
안드로이드 앱의 보안은 왜 중요할까? 우리가 안드로이드 앱을 빌드하면 aab파일 혹은 apk파일로 만들어진다. 뭔가 aab나 apk하면 보안이 강할거 같다는 생각이 들지만 이 방식들은 단순히 우리가 짠 코드들을 압축한 것에 불과하다. 따라서 apk의 압축을 풀면 우리가 짠 코드의 내부가 모두 보인다. 우리가 안드로이드 앱을 빌드하면 윈도우 상에는 그림1과 같은 apk파일이 생긴다. 더블 클릭해도 열리지는 않지만 이를 안드로이드 스튜디오에서 보면 내부의 파일이 아래와 같이 모두 보이는 것을 알 수 있다. 만약 이 상태로 앱을 출시한다면 앱의 리버스 엔지니어링이 가능하다는 뜻이며, 누군가 우리의 코드를 베껴 새로운 앱을 낼 수도 있다는 이야기이다. 따라서 우리는 우리 앱의 구조를 파악하지 못하게 할 장치가 ..
예제 링크 : https://github.com/seyoungcho2/KoinExample 예제 브랜치명 : example/example5 *브랜치 필수 확인 의존성 제공 메서드 single과 factory single은 한 번만 객체를 생성하고 factory는 호출 될때마다 객체를 생성한다. 다음과 같은 Student("student-kim")은 single로 제공되고 Student("student-cho")는 factory로 제공되는 상황을 가정해보자. module { single(named("kim")) { Student("student-kim") } factory(named("cho")) { Student("student-cho") } } 이때 다음과 같이 각각에 대한 의존성을 두 번씩 주입했다고..
생성자 주입이 달라야 하는 이유 제공된 객체가 다른 객체의 생성자에 주입되어야 한다고 해보자. class Student(val name: String) class Teacher(val name: String, val teachingStudent: Student) 이럴 경우 Teacher은 Student를 주입받아야 한다. 이때 우리는 다음과 같이 get()을 이용해 제공된 객체를 주입받을 수 있다. single { Student("student-kim") } single { Teacher("teacher-cho", get()) } get()의 역할 예제 링크 : https://github.com/seyoungcho2/KoinExample 예제 브랜치명 : example/example3 *브랜치 필수 확인..