ParkSangGwon / TedPermission

Easy check permission library for Android Marshmallow
1.74k stars 239 forks source link

난독화 실패 #17

Closed hhgyu closed 8 years ago

hhgyu commented 8 years ago
                                                 java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.replace(java.lang.CharSequence, java.lang.CharSequence)' on a null object reference
                                                     at com.gun0912.tedpermission.util.Dlog.buildLogMsg(Unknown Source)
                                                     at com.gun0912.tedpermission.util.Dlog.d(Unknown Source)
                                                     at com.gun0912.tedpermission.TedPermission.check(Unknown 
Source)
                                                     at com.xxx.xxx.a.b(Unknown Source)
                                                   ~~~~
                                                     at android.os.Handler.handleCallback(Handler.java:739)
                                                     at android.os.Handler.dispatchMessage(Handler.java:95)
                                                     at android.os.Looper.loop(Looper.java:158)
                                                     at android.app.ActivityThread.main(ActivityThread.java:7237)
                                                     at java.lang.reflect.Method.invoke(Native Method)
                                                     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)

해당 Dlog파일 https://github.com/ParkSangGwon/TedPermission/blob/master/tedpermission/src/main/java/com/gun0912/tedpermission/util/Dlog.java#L39 ste.getFileName() 가 Null이라서 오류가 발생하는 것 같습니다.

난독화 시에 파일이름이 없어져서(Unknown Source) 이러는것 갔습니다만...

위 로그에도 보시면 at com.xxx.xxx.a.b(Unknown Source)로 나오는데 이것과 같은 문제 인것 같네요.

hhgyu commented 8 years ago
     /** Log Level Error **/
    public static  void e(String message) {
        if(BuildConfig.DEBUG)
            Log.e(TAG, buildLogMsg(message));
    }
     /** Log Level Warning **/
    public static  void w(String message) {
        if(BuildConfig.DEBUG)
            Log.w(TAG, buildLogMsg(message));
    }
     /** Log Level Information **/
    public static  void i(String message) {
        if(BuildConfig.DEBUG)
            Log.i(TAG, buildLogMsg(message));
    }
    /** Log Level Debug **/
    public static  void d(String message) {
        if(BuildConfig.DEBUG)
            Log.d(TAG, buildLogMsg(message));
    }
    /** Log Level Verbose **/
    public static  void v(String message){
        if(BuildConfig.DEBUG)
            Log.v(TAG, buildLogMsg(message));
    }

임시적으로 해당 함수 호출을 디버그 모드로 릴리즈 했을때 동작하도록 바꾼후에 컴파일하여 사용했습니다...

hhgyu commented 8 years ago

12

hhgyu commented 8 years ago

1694383e