2013-02-08 5 views
1

최근에 내가 연극 스토어에 제출 한 앱이 있습니다. 나는 .apk 파일을 테스트했고 모든 것이 잘 작동하고 있었다. 첫 번째 설치시 (상점에서) - 로그인 할 수 있지만 충돌이 발생할 수 있습니다. 다음은 보고서에서 얻은 스택 추적입니다.PlayApp에서 AndroidApp을 설치하면 충돌이 발생합니다.

java.lang.NullPointerException 
at com.latlon.InitialSearchActivity.e(Unknown Source) 
at com.latlon.InitialSearchActivity.a(Unknown Source) 
at com.latlon.InitialSearchActivity.g(Unknown Source) 
at com.latlon.InitialSearchActivity.a(Unknown Source) 
at com.latlon.MyResultReceiver.onReceiveResult(Unknown Source) 
at android.os.ResultReceiver$MyRunnable.run(ResultReceiver.java:43) 
at android.os.Handler.handleCallback(Handler.java:587) 
at android.os.Handler.dispatchMessage(Handler.java:92) 
at android.os.Looper.loop(Looper.java:150) 
at android.app.ActivityThread.main(ActivityThread.java:4385) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:507) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:849) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:607) 
at dalvik.system.NativeStart.main(Native Method) 

나는 어디서부터 시작 해야할지 확실하지 않습니다. 어떤 아이디어?

java.lang.NullPointerException 
at com.latlon.InitialSearchActivity.e(Unknown Source) 
at com.latlon.InitialSearchActivity.a(Unknown Source) 
at com.latlon.InitialSearchActivity.g(Unknown Source) 
at com.latlon.InitialSearchActivity.a(Unknown Source) 
at com.latlon.MyResultReceiver.onReceiveResult(Unknown Source) 

이 클래스 MyResultReceiver에있는 당신의 onReceiveResult() 방법이

를 불렀다 :

+0

서버 결과가 올바르게 처리되지 않습니까? 분명히 null ptr 오류입니다. 따라서이 InitialSearchActivity 클래스에서 Null 값을 제대로 처리하지 못하고 있습니다 ... (클래스가 아니라 라이브러리라고 가정합니다). 해당 클래스의 일부 코드를 제공하는 데주의하십시오. –

답변

0

코드를 난독 화하기 위해 (예 : Proguard와 같은) toole을 사용한 것처럼 보입니다. 난독 화 후에 APK를 테스트 했습니까?

위의 로그에서 코드에 NullPointerException이 발생 했으므로 난독 화 도구에서 생성 한 키 파일을 사용하여 코드의 난독 화를 수행하여 실제 위치 (코드 줄)를 확인해야합니다. 포인터가 액세스되었습니다.

참고 : 난독 처리 과정에서 가끔씩 (사람의 실수로) 일부 필수 메서드가 난독 화 될 수 있습니다. 결과적으로 이러한 메소드가 발견되지 않으므로 예외 (NoSuchMethod)가 발생할 수 있습니다.

+0

OP는'NoSuchMethod'가 아닌'NullPointerException'을 얻습니다. –

+0

예, 이해합니다.하지만 난 여전히 난독 화 때문에 발생할 수있는 다른 문제를 지적하고 싶습니다. –

+0

모두에게 도움을 주셔서 감사합니다. 나는 난독 화를 제거하고 apk를 재건하고 상점과 그 작업 벌금에 지금 돌려 놓았다. 다음 번 릴리스에서 프로 가드 (proguard)를 사용하여 속도를 높이는 데 시간을 할애 할 것입니다. – jiiri

2

음, 스택 추적의이 부분은 당신의 코드입니다. 이 메서드는 InitialSearchActivity 클래스의 a 메서드를 호출했으며이 클래스에서는 메서드 을 호출 한 해당 클래스에서 a 메서드를 호출 한 해당 메서드에서 g 메서드를 호출했습니다. 방법 e에서이 있던 NullPointerException (예 :. 그 방법이 있지만, 변수가 null를 포함하는 대신 것을

그것은 메소드 이름처럼 보이는

가 난독 화 된, 당신은 객체 참조를 포함 생각 변수를 사용하려고하면 이렇게 실제 메소드 이름이 무엇인지 알아 내기 위해 코드를 살펴 할 수 있습니다.

+0

실종 된 나의 지식 부족. 난독 화를 제거하는 것이 가능합니까?나는 그 .apk (스토어를 위해 서명하지 않은 사람)의 나의 로컬 카피가 난독 화되지 않는다고 가정하고있다. – jiiri

+0

프로젝트에서 unsigned apk를 어떻게 내 보낸 지에 따라 달라집니다. 개미 빌드를 사용하는 경우 proguard.txt의 내용을 주석으로 처리하거나 ant build.xml –

+0

에서 참조를 제거해야합니다. 이는 다릅니다. 난독 화가 문제의 원인이 될 수 있습니다. 코드가 깨졌지만 문제가 보이지 않았을 수도 있습니다. 난독 화를 비활성화하거나 혼란스러운 버전을 직접 실행 해보고 문제를 재현 할 수 있는지 확인할 수 있습니다. 코드를보고 문제점을 판별 할 수없는 경우 일부 로깅을 추가 할 수 있습니다. –

0

을 (코드 obfusciation을 수행하는 도구 인) Proguard와의 설명서를 참조하십시오.

을 매우 가능성이 당신 "을 통해 그 이 코드는 배포 된 코드에 문제를 일으킬 수 있습니다.보고있는 것처럼.

"proguard-project.txt"파일을 편집하여 Proguard 기능을 해제 할 수 있습니다. 난독 화가 발생하지 않도록하려면이 파일의 모든 행을 주석 처리해야합니다 (해시 또는 각 행의 시작 부분에 # 표시).

retrace이라는 명령어가 있습니다.이 명령어를 사용하여 난독 화를 해제 할 수 있습니다. 이 기능을 사용하려면 proguard에서 만든 일부 파일을 제공해야합니다.

확인에 대한 자세한 설명은 워드 프로세서 : http://developer.android.com/tools/help/proguard.html

빠른 수정 (Proguard와 제거하기 위해)이 처음에 실행되지 않도록 파일을 언급하는 것입니다.

관련 문제