개발새발 블로그
안녕하세요 개발새발 블로그입니다. 오늘은 R8 난독화 적용 및 예외처리 방법. 이후 apk 파일을 디컴파일하여 난독화가 잘 적용됬는지 확인해보겠습니다. 난독화를 하였을때 장점 코드 축소(또는 Tree Shaking): 앱에서 사용하지 않는 클래스, 필드, 메서드, 속성 및 라이브러리 종속성을 감지하여 안전하게 삭제합니다(64k 참조 제한을 해결하기 위한 유용한 도구). 리소스 축소: 앱의 라이브러리 종속성에서 사용하지 않는 리소스를 포함하여 패키징된 앱에서 사용하지 않는 리소스를 삭제합니다. 리소스 축소는 코드 축소와 함께 사용하여 사용하지 않는 코드를 삭제하고 마찬가지로 더 이상 참조되지 않는 리소스도 안전하게 삭제할 수 있습니다. 난독화: 클래스와 멤버 이름을 줄여 DEX 파일 크기를 줄입니다. 최적..
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 개 일..
public String loadJSONFromAsset() { String json = null; try { InputStream is = getAssets().open("파일명.json"); int size = is.available(); byte[] buffer = new byte[size]; is.read(buffer); is.close(); json = new String(buffer, "UTF-8"); } catch (IOException ex) { ex.printStackTrace(); return null; } return json; } JSONObject obj = new JSONObject(json_return_by_the_function); //JSONObject를 파싱하여 원하는 대..
webViewSetting() private void webViewSetting(){ mView.webView.setWebViewClient( new CustomWebViewClient() ); mView.webView.setWebChromeClient(new CustomWebCromeClient()); mView.webView.setDownloadListener(downloadListener); WebSettings webSettings = mView.webView.getSettings(); webSettings.setJavaScriptEnabled(true); //html5 local storage 사용설정 webSettings.setDomStorageEnabled(true); webSettings...