728x90
반응형

Android 공부 79

Your app(s) are using a WebView that is vulnerable to Intent scheme hijacking. 구글플레이스토어 등록이슈 하이재킹

앱을 제출하고 나니 받은 에러, 웹뷰를 사용하고있는 내 앱은 하이재킹 인텐트 스키마에 취약하다? 한마디로 보안에 관련된 이슈로써, 웹뷰에서 사용하고 있는 것에 대해 점검해보란것이다. https://support.google.com/faqs/answer/9101196 인텐트 스키마 도용 취약점 문제 해결 - Google 고객센터 도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요 support.google.com 해결방법에 대해 간단히 정리하자면 두 가지가 있다. (옵션 1,2로 제공) 1. Intent.parseUri가 사용되는 부분을 모두 체크하여 아래와 같이 사용한다. // convert Intent scheme URL to Intent object Intent intent = Intent...

Android Architecture Components (1) 소개

왜 AAC를 만들었니? 안드로이드는 Activity, BroadcastReceiver, Service, ContentProvider 등 여러 컴포넌트들이 있고, 생명주기가 다르게 얽혀있습니다. 앱을 잘 만들기 위해서는 이러한 컴포넌트들을 부드럽게 연결해야 하는데, 생명주기를 학습하고 엉키지 않도록 고민하는 것은 결국 개발자의 몫이였습니다. 구글은 이 고민을 줄이기 위해 SDK에서 제공하는 컴포넌트들에 대해 개발자들에게 더 가이드를 주기를 원했습니다. 그래서 Android Architecture Components(AAC)를 만들었습니다. AAC는 Google I/O 2017에 발표한 4가지와 추후에 추가된 1개까지 총 5개의 라이브러리로 구성되어 있습니다. Lifecycles (Easy handling ..

Android 공부 2020.08.01

1) MVVM 패턴

MVVM 패턴? 위에서 언급한 대로, 액티비티에 기능을 붙이다보면 액티비티가 무거워지거나 혹은 종속성이 너무 강해 테스트가 힘들고 유지보수가 어려워진다. 이런 고민 때문에 MVVM 패턴이 등장했다. MVVM은 View - ViewModel - Model을 이용해 각각의 역할을 분리하여 가독성과 재사용성을 높인 디자인 패턴이다. MVC와 MVVM 차이점 기존 MVC(Model - View - Controller) 구조에서는 액티비티가 컨트롤러의 역할을 했으며, 뷰와 연결되어 유저와 상호작용도 하고, 모델과 연결되어 데이터도 처리했다. 즉 뷰와 모델 사이에서 중재자 역할을 했다. MVVM에서는 뷰에서 뷰모델로, 뷰모델에서 모델로 작업을 처리하며, 뷰에서 모델을 직접 참조하지 않는다. 대신 뷰에서 뷰모델을 관..

MVP 패턴 정리1

Model View Presenter 패턴은 MVC(Model View Controller) 패턴을 기반으로 하는 아키텍처 패턴으로 관심사의 분리를 높이고 단위 테스트를 용이하게 합니다. MVC 패턴에서 View와 Model의 의존성을 없애고 단위 테스트가 어려웠던 문제점을 해결하기 위해 등장하게된 패턴이라고 할 수 있다. 1. Contract interface 생성 Presenter와 View 사이에 어떤 기능이 있는지 한눈에 파악할 수 있도록 명시하는 역할. ( Contract는 MVP의 필수요소는 아닙니다. ) interface MainContract { interface View : BaseView { fun showProgress(isShow: Boolean) fun setData(str: St..

MVP 패턴 예시1

Contract ( view와 presenter가 구현해야할 인터페이스를 정의 ) public interface main_view_contract { /* MVP의 View가 구현할 인터페이스 프레젠터가 View를 조작 할때 사용 */ interface View{ void showToast(String message); void setText_userName(String name); void setText_userAge(int age); } /* MVP의 Presenter가 구현할 인터페이스 View를 클릭 했을대 등 View가 Presenter에 알릴때 사용 */ interface userActoin{ void setUserName(String name); void getUserName(); void ..

안드로이드 윈도우에서 ffmpeg 설치

1. Android Studio에서 NDK 설치 Setting->Android SDK->SDK Tools에서 CMake, LLDB, NDK 항목 설치 2. cygwin 설치 https://cygwin.com/install.html a) 설치할때 wget 추가해서 설치 b) cygwin 실행후 apt-cyg 설치 wget raw.github.com/transcode-open/apt-cyg/master/apt-cyg chmod +x apt-cyg mv apt-cyg /usr/local/bin c) 필요한 package들 설치 apt-cyg install vim bash gcc-core gcc-g++ gzip make unzip zip automake cmake 3. ffmpeg 설치 1). 다운로드 아래의 ..

Cygwin 설치하기 - 윈도우에서 리눅스 개발환경 구축

Cygwin 은 윈도우에서 리눅스와 거의 같은 컴파일 환경 및 각종 프로그램들을 지원해줍니다. 하지만 그렇다고 리눅스용 프로그램을 바로 실행시킬 수 있는 것은 아니지만 유용하게 사용 가능합니다. 홈페이지 중간 쯤에 보면 https://www.cygwin.com/ 윈도우 32비트 용과 64비트용 설치 프로그램을 다운로드 받을 수 있습니다. 전 64비트 윈도우를 사용하고 있어서 setup-x86 64.exe를 다운로드 받아서 실행시켰습니다. 사용중인 윈도우의 버전은 제어판에 시스템을 보면 확인 가능합니다. 실행시키면 다음과 같은 화면이 보입니다. Next를 클릭해줍니다. 첫번째 항목을 선택하면 새로 패키지들을 다운로드 받아서 설치를 진행합니다…간혹 이미 다운로드 받은 패키지들이 있는 경우에는 세번째 항목을 ..

안드로이드 스튜디오 NDK 프로젝트 생성.

JNI를 이용한 NDK 연동 테스트 환경 : Android Studio 2.3 (2.2버전 이상부터 JNI 연동 방식 변경) 안드로이드 프로젝트를 새로 만들어 줍니다. New Project 에서 어플리케이션 이름입력 후 아래 CheckBox Include C++ support를 체크하고 Next로 넘어갑니다. 다음 설정방법은 동일하며 Next로 끝까지 넘어가 Customize C++ Support 부분에서 디폴트 상태로 Finish 해줍니다. 프로젝트 로딩시간이 다소 길어 기다려주시면 됩니다. 기존의 프로젝트와 동일하지만 cpp라는 폴더와 CMakeLists.txt가 추가 되었습니다. 제가 기존에 셋팅을 해 두어서 자동으로 설정이 된 것인지 확인이 안되어, SDK Tools에서 CMake, LLDB, N..

안드로이드 NDK 란?

안드로이드 NDK 란 1) 자바 애플리케이션 안에서 네이티브 라이브러리를 사용 할수 있는 개발 환경을 제공한다. 2) java로 만든 어플리케이션에서 일정 부분을 C/C++로 작성된 라이브러리를 재사용 가능하다. 3) 그러면 개발 시간이 단축된다. NDK 에서 제공되는 것 libc ( C 라이브러리) 헤더 libm (math 라이브러리 ) 헤더 JNI 인터페이스 헤더 libz (ZIP compression ) 헤더 liblog ( 안드로이드 로그 ) 헤더 openGL ES 헤더 등.. NDK는 동적 로딩 라이브러리를 만드는 것이 목적이기에 리눅스 개발 환경을 갖추어야 하나! 윈도우에 Cygwin을 설치하여 크로스 컴파일 할수 있게 되었다. 용어 및 개념 .so 파일 ( shard object) * 우리의..

728x90
반응형