2013-01-25 70 views
0

在我的Java代碼,我用的是Debug標誌來控制調試模型,如果是調試,還有一些額外的功能,如:搖晃手機顯示activity改變應用程序的版本。現在我想在將代碼發佈到市場時刪除這些代碼。如何使我的Android應用程序清潔?

像下面的代碼,有沒有辦法使VersionSwitchService.class代碼是null和其他代碼運行正常?

我的意思是,即使有人反編譯的APK,VersionSwitchService.class代碼被視爲空白。

if (isDEBUG) { 
    VersionSwitchService.libStart(this, new LibVersionSwitch() { 

     @Override 
     public void versionSwitchToOnline() { 
      //... 
     } 

     @Override 
     public void versionSwitch(String version) { 
      //... 
     } 
    }); 
} 

回答

1

如果您isDebugfinal static

final static boolean isDebug = false; 

Java編譯器將完成刪除的代碼,未得部分。 Sp在你的例子中,'then'部分被完全省略,因此在apk中不可用。此外,在創建(發佈)apk版本時,Android工具將去除未使用的所有方法和類。所以,如果你的VersionSwitchService類只用於調試,它不會出現(由於static final調試常數的組合)

+0

謝謝,但isDebug是動態賦值,我不會在包發佈版本時改變它。 – wlyzlx

+0

這對我來說很好,但據我所知,這是Java中讓編譯器刪除(100%確定)未使用的代碼塊的唯一方法... – Veger

+0

我試過了你的方法,並且反編譯apk文件,但VersionSwitchService類仍然存在。 – wlyzlx