코드 난독화 프로그램 코드의 일부 또는 전체를 변경하는 방법 중 하나로, 코드의 가독성을 낮춰 *역공학에 대한 대비책을 제공한다. * 역공학 대부분의 개발자들은 컴파일된 바이너리를 완전한 블랙박스로 취급한다. 보안 취약점 분석가들의 주요 업무는 이런 바이너리 코드를 읽고 보안 취약점을 찾아내는 것이다. 보통 컴파일된 바이너리를 다시 원래의 소스코드로 복구하는 프로그램인 디컴파일러 ( decompiler ) 의 도움을 받는다. 디컴파일러는 원래 소스 코드를 완벽히 복구하지는 못하지만, 어셈블리에 비해서는 훨씬 이해하기 쉬운 프로그래밍 언어의 소스 코드를 생성해준다. 이처럼 바이너리 코드를 분석해 유용한 정보를 뽑아내는 작업을 역공학 ( reverse engineering ) 이라 부른다. 최근 보안 취약점..
Service FLAG bindService 에서 사용되는 FLAG BIND_AUTO_CREATE Component 와 연결되있는 동안 비정상적으로 종료시 자동으로 다시 시작된다 BIND_DEBUG_UNBIND 비정상적으로 연결이 끊어지면 로그를 남긴다 (디버깅용) BIND_NOT_FOREGROUND 백그라운드로만 동작한다. 만약 Activity 에서 생성한 경우 Activity 와 생성주기를 같이한다 + References https://tourspace.tistory.com/19
동적 BroadcastReceiver 동력 BroadcastReceiver 는 123456789101112131415 Colored by Color Scriptercs 이처럼 AndroidManifest.xml 에 등록하는 정적 리시버와 다르게 12registerReceiver( BroadcastReceiver, IntentFilter )unregisterReceiver( BroadcastReceiver )cs 이 함수를 통해 리시버를 등록, 해제 한다 등록시에 IntentFilter 에는 수신하고자 하는 이벤트를 전달해 준다 사용법은 http://helloit.tistory.com/267 등 여러곳에 잘 나와있으니 참고하자 정적 리시버와의 차이점 정적 리시버를 등록하여 사용하면 구현한 앱이 동작 중이 ..
3.1.0 업데이트 이후 DataBinding 생성 실패 gradle.properties 에 다음 두 줄을 추가 12android.enableExperimentalFeatureDatabinding = trueandroid.databinding.enableV2=truecs + References https://stackoverflow.com/questions/49514488/android-studio-fails-to-generate-databinding-after-3-1-0-update
최근 3.1 로 업데이트를 했다 그런데 이놈이 문제가 너무 많다 자동완성기능도 전보다 불편해졌고 제일 불편한점은 리소스 id가 바로바로 적용이 되지 않는다는 점이다 왜 아이디를 추가하고 clean project 를 해주지 않으면 리소스 추가가 되지 않는거지 ?? 게다가 나는 databinding 을 쓰는데 더욱더 심각하다 아이디를 추가하고 rebuild project 를 몇번이고 해주어도 binding 으로 객체를 가져올수가 없다 프로젝트를 껐다 켜야만 적용이된 꼬라지를 보고 downgrade 방법을 필사적으로 찾고있는 중이다 덕분에 작업은 올스탑 .. =========== 현재 업데이트 반응들 https://twitter.com/androidstudio/status/978391994086109184
This AsyncTask should be static or leaks might occur 내부 Handler 와 동일한 문제이다. non-static 내부 클래스는 클래스에 대한 참조를 그것을 포함하는 Activity 클래스 보다 오래 가지고 살아있기 때문에 GC가 되지 않아, Memory Leak 이 발생할 수 있다고 한다 이를 해결하려면 익명, 로컬 및 내부 클래스 대신 정적 중첩 클래스를 사용하거나 최상위 클래스를 사용해야 한다고 한다. 그러나 문제점으로 UI View 또는 멤버 변수에 접근하지 못한다는 것인데, 이에 솔루션으로 WeakReference 를 만들어 준다. 123456789101112131415161718192021222324252627282930313233343536373839..
Glide clear cache 파일 이름은 해시된 키이므로 특정 URL 또는 파일 경로에 해당하는 캐시된 파일을 모두 디스크에서 삭제하는 것이 좋습니다. 원본 이미지를 로드하거나 캐시 할 수만 있다면 문제가 더 간단해질 것입니다. 실제로 캐시 파일을 무효로 하는 가장 좋은 방법은 내용이 변경되면 (예 : url, uri, 파일경로 등 ) 식별자를 변경하는 것입니다. 파일 경로를 변경할 수 없으므로 Glide는 메모리와 디스크 캐시 키에 추가 데이터를 섞어서 캐시된 데이터가 무효화되는 시점을 효과적으로 제어 할 수 있도록 signature() API 를 제공한다. ..
Retrofit, POST parameters 123456@POST("repo/item")Call getItem( @Field("id") id );cs 위와 같이 하면 ,@Field parameters can only be used with form encoding. 에러를 발생시킨다 1234567@FormUrlEncoded@POST("repo/item")Call getItem( @Field("id") id );cs @FormUrlEncoded 를 추가시켜주어야 정상적으로 parameter가 붙어 전송된다 @FormUrlEncoded 어노테이션을 메소드에 명시하면 form-encoded 데이터로 전송된다. 각 key-value paire 의 key는 어노테이션 값에, value는 객체를 지시하는 @Fie..