개발새발 블로그
안녕하세요 개발새발 블로그입니다. 오늘은 R8 난독화 적용 및 예외처리 방법. 이후 apk 파일을 디컴파일하여 난독화가 잘 적용됬는지 확인해보겠습니다. 난독화를 하였을때 장점 코드 축소(또는 Tree Shaking): 앱에서 사용하지 않는 클래스, 필드, 메서드, 속성 및 라이브러리 종속성을 감지하여 안전하게 삭제합니다(64k 참조 제한을 해결하기 위한 유용한 도구). 리소스 축소: 앱의 라이브러리 종속성에서 사용하지 않는 리소스를 포함하여 패키징된 앱에서 사용하지 않는 리소스를 삭제합니다. 리소스 축소는 코드 축소와 함께 사용하여 사용하지 않는 코드를 삭제하고 마찬가지로 더 이상 참조되지 않는 리소스도 안전하게 삭제할 수 있습니다. 난독화: 클래스와 멤버 이름을 줄여 DEX 파일 크기를 줄입니다. 최적..
안녕하세요 개발새발 블로그입니다. 오늘은 App 을 개발한 후 광고를 붙여 수익을 얻는 방법을 알아보죠! 1. 광고 매체사별 장단점 장점 : 높은 수익성, 안정적인 수익 보장 단점 : 부정 클릭 등 정책위반 사유 주의 장점 : 높은 수익률 단점 : 인터페이스 악화 및 사용자 불편감 장점 : 노출 당 금액이 높음 단점 : 이미지 또는 텍스트 배너만 사용 가능 장점 : Google Admob 과 비슷한 광고 형태 제공 단점 : Google Admob 보다 수익이 낮음. 2. 광고 형태의 종류 상시노출되는 띠배너 보다 전면배너가 수익성이 오히려 높게나옵니다. 그리고 전면배너 보단 App에 디자인에 맞춰서 내가 꾸밀수 있는 네이티브애드가 사용자에게 불편함을 덜 주게만들수있습니다. 3. 직접 적용해봅시다!(Goo..
else if (url != null && url.contains("skrent://outLink")) { Uri uu = null; getIntent().getAction(); String dd = uu.getQueryParameter("resName"); //Outlink try { if (url.contains("url=")) { Uri tempUri = Uri.parse(url); Uri outLinkUri = Uri.parse(tempUri.getQueryParameter("url")); Intent intent = new Intent(Intent.ACTION_VIEW, outLinkUri); startActivity(intent); closeChildWebView(); } } catch (Ex..
안녕하세요! 개발새발로 코딩하는 블로그입니다. 오늘 알아볼주제는 Flavors 입니다! 우선 Flavors란 무엇일까요? - Flavors란 소스코드는 대부분 일치하지만 다른앱을 만들고싶을떄 유용하게 사용됩니다. 예를들어 내용은 같지만 앱아이콘은 다르게하고싶다던지 업로드하는 스토어에 따라 메인페이지를 다르게 띄운다던지, 유료앱과 무료앱으로 2개의 버전으로 배포를 한다던지 하는상황입니다..! 간단하게) 1. 유료앱/무료앱을 다르게 하고 싶은 경우 2. 배포하는 마켓에 따라서 표시하는 내용이나 값을 다르게 하고 싶은 경우 3. 고객용/관리자용 혹은 고객용/업체용 등으로 버전을 나누어야 하는 경우 4. 기획자가 개발,스테이징,운영 환경에 따른 각각의 앱동작을 확인하고 싶은 경우 5. 국가별/언어별로 앱의 내용..
안녕하세요! 개발새발로 코딩하는 블로그입니다. 오늘 알아볼주제는 dagger2 입니다! 먼저 DI 에 대해 아셔야합니다. DI 란? DI( Dependency Injection ) : 의존성 주입을 의미합니다. 특정 객체의 인스턴스가 필요한 경우 이를 외부에서 생성하여 전달하는 기법입니다. Dagger란 이 의존성 주입을 쉽게 구현하기 위해 사용되는 라이브러리입니다. 여기서 말하는 의존성이란??? 코드에서 두 모듈간의 연결도 두 클래스 간의 관계도 의존성이 높다??? = Coupling(결합도)이 높다는것입니다. 그렇다면 의존성이 높다는 것은 안좋나요?? 하나의 모듈이 변경됨에 따라 결합된 다른 모듈이 영향을 받게될 수 있습니다. 두개의 모듈일때는 괜찮지만 최악의경우 모듈이 100개,1000개…n 개 일..
안녕하세요! 개발새발로 코딩하는 블로그입니다. 오늘 알아볼주제는 Gradle kotlin dsl 입니다! 먼저 설명에 앞서 필요한 몇가지 개념에 대해 잡고 넘아가야합니다.. 먼저 저희가 개발을 진행할때 자주 사용되는 프로그램(Integrated Development Environment, IDE)은 크게 3가지 기능으로 나눌 수 있습니다. ¤ 소스 코드 편집기 : 시각적으로 사용자가 보기 편하도록 구문 강조와 같은 기능을 포함, 코드 작성을 돕는 텍스트 편집기입니다. 또한 언어별 자동 완성 기능과 코드 작성 중 버그 검사를 제공합니다. ¤ 로컬 빌드 자동화 : 컴퓨터 소스 코드를 바이너리 코드로 컴파일링하고, 바이너리 코드를 패키징하고 자동화 테스트를 실행하는 등 간편하고 반복가능한 태스크를 개발자가 사..
binding.rv1.adapter = rvAdapter binding.rv1.layoutManager = LinearLayoutManager(this) class RvAdapter(private val context : Context): RecyclerView.Adapter(){ private var items: ArrayList? = ArrayList() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { val v : View = LayoutInflater.from(context).inflate(R.layout.item, parent, false) return ViewHolder(v) } override fu..
interface IBasicView { fun showDialog(msg:String) } class BasicView :IBasicView { override fun showDialog(msg: String) { Log.d("", msg) } } class MainActivity : AppCompatActivity(), View.OnClickListener, IBasicView by BasicView() 장점 : BaseActivity를 만들어서 사용하는게 기본적이지만 몇개의 Class에서만 다르게 동작하는 메소드를 재구현하고싶을때 유용하게 사용할 수 있다. Tip. .apply { } // 초기화용 .let { } // 조건부 실행 - 보통 두 가지만 사용한다. binding.alltime.setO..