반응형


사실 안드로이드 쪽은 잘은 모릅니다만...


여기저기 멘땅에 헤딩하며(?) 알게된 정보가 있어서 살포시 포스팅을 해봅니다.



제가 애용하는 SNS 어플이 하나있는데...


이 어플이 젤리빈 업데이트 후 글 스크롤도 안되고 글 클릭도 안되는 문제가 생기더군요.


운영자에게 확인 및 수정 요청을 했지만 의외로 시간이 조금 걸리길래...


" 이걸 어떻게... 직접 해결할 수 없을까? " 하고 여기저기 들쑤시고 다녔더니...



Custom Listview 를 사용한 경우에 젤리빈에서 위와 같은 문제가 발생할 수 있다는 내용이 있더군요..


해결방법은 의외로 간단했습니다.


Custom Listview 의 onAttachedToWindow() 메쏘드에~


// 추가할 코드
super.onAttachedToWindow();
//

달랑 한줄 추가하면 된다고 하더군요.


의외로 간단한 해결방법에~ " 어라~!? 어플 조작으로 해결할 수 있겠는데!? " 하는 생각이 들어..


해당 SNS 어플 apk 파일을 뽑아내서~ 디컴파일을 하고 다음과 같이 수정을 해봤습니다.


// [ 원본 소스 ]------------------------------------------------------
  protected void onAttachedToWindow()
  {
    setSelection(1);
  }

// [ 원본 smali 소스 ] --------------------------------------
.method protected onAttachedToWindow()V
    .locals 1

    .prologue
    .line 132
    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lcommon/PullToRefreshListView;->setSelection(I)V

    .line 133
    return-void
.end method
//------------------------------------------------------


// [ 수정 소스 ]------------------------------------------------------
  protected void onAttachedToWindow()
  {
    super.onAttachedToWindow()
    setSelection(1);
  }

// [ 수정 smali 소스 ] --------------------------------------
.method protected onAttachedToWindow()V
    .locals 1

    .prologue
    .line 132
    invoke-super {p0}, Landroid/widget/ListView;->onAttachedToWindow()V

    .line 133
    const/4 v0, 0x1

    invoke-virtual {p0, v0}, Lcommon/PullToRefreshListView;->setSelection(I)V

    .line 134
    return-void
.end method
//------------------------------------------------------



다행히도 잘 되더군요...


( 참고로 제가 한 작업은 Java 소스를 건드린 것이 아니라 디컴파일 시 생성된 smali 파일을 수정했습니다. )


젤리빈에서 스크롤 동작하고 글 클릭이 가능할 때의 그 기쁨이란~ㅎㅎㅎ



안드로이드 어플을 개발하는 과정 중에 젤리빈에서 Custom Listview 에서 위와 같은 문제가..


발생한다면 의외로 간단하게 해결이 가능하구요...


그런 어플을 쓰고 계신 분들중 리버싱에 관심이 있으신 분은 직접 ㅎㅎ 어플 조작을 해보시는 것도...


색다른 재미가 되지않을까 싶네요..



아... =ㅁ= 참고로 이 SNS 는 지금은 젤리빈 지원버전이 나와있는 상태랍니다.ㅎ



반응형
AND