2014-08-28 15 views
5

Próbuję opublikować moją aplikację na Androida stworzoną za pomocą cordova i podczas publikowania podążałem wszystkimi krokami takimi jak android: debuggable = "false" lub nawet usunięcie tej linii jako ostatniej sugestii, ale problem polega na tym, że kiedy instaluję podpisaną wersję kompilacji w emulatorze, jestem w stanie go debugować ... jakiejkolwiek pomocy?WebView.setWebContentsDebuggingEnabled (false) ale jestem w stanie zdebugować kod po zainstalowaniu podpisanego APK

Aktualizacja: -

Zgodnie z sugestią próbowałem ..

public class appname extends CordovaActivity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     super.init(); 
     super.loadUrl(Config.getStartUrl()); 
     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){ 
      if(0 != (getApplicationInfo().flags = ApplicationInfo.FLAG_DEBUGGABLE)){ 
       //Log.i("Your app", "Disable web debugging"); 
       WebView.setWebContentsDebuggingEnabled(false); 
      } 
     } 
    } 
} 

w public void onCreate (Bundle savedInstanceState) {}

Znalazłem ten fragment kodu w CordovaWebView.java

if((appInfo.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0 && 
       android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) 
      { 
       setWebContentsDebuggingEnabled(true); // I tried setting this false as well 
      } 

Ale nadal nie działa ... nadal mogę debugować html js fil es

+0

W jaki sposób debugujesz kod wycieczki? –

+0

Za pomocą narzędzia urządzeń chromowych – Luckyy

Odpowiedz

0

Musisz ustawić swoją WebView nie debuggable: WebView.setWebContentsDebuggingEnabled(false). Sprawdziłem:

public class HTML5Application extends CordovaActivity 
{ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     //webView.setWebChromeClient(new WebChromeClient()); 
     super.onCreate(savedInstanceState); 
     super.init(); 
     // Set by <content src="index.html" /> in config.xml 
     super.loadUrl(Config.getStartUrl()); 
     //super.loadUrl("file:///android_asset/www/index.html") 

     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){ 
      Log.i("xxxxxx", "Enabling web debugging"); 
      OnlyForKitKat.enableWebViewDebugging(); 
     } 

     appView.setOnKeyListener(new OnKeyListener() { 
      @Override 
      public boolean onKey(View v, int keyCode, KeyEvent event) { 
       if (keyCode == KeyEvent.KEYCODE_BACK) return true; 
       return false; 
      } 
     }); 
    } 

i

@SuppressLint("NewApi") 
public class OnlyForKitKat { 

    public static void enableWebViewDebugging() { 
     WebView.setWebContentsDebuggingEnabled(false); 
    } 

} 

enter image description here

+1

Próbowałem jak powyżej ... Wkleiłem cały kod, nie działa – Luckyy

+0

chrome :: // inspect nie wyświetla strony debugowania. Czy można wyłączyć warunek, jeśli (0! = (GetApplicationInfo(). Flags = ApplicationInfo.FLAG_DEBUGGABLE)) {? –

+0

Dużo dziękuję ... ale wyłączenie warunku nie rozwiązało problemu z debugowaniem – Luckyy

1

Jest to błąd w kodzie. Bezwarunkowo umożliwia debugowanie we wszystkich aplikacjach WebView w aplikacji na KitKat i nowszych, niezależnie od tego, czy aplikacja jest oznaczona jako debuggable.

powinien być w rzeczywistości 0 != (getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE).

Powiązane problemy