2017-12-18 242 views
0

在我的项目中启用ProGuard之后,我的应用程序正常工作,应用程序在'release'和'debug'apk中立即崩溃。我也禁用了proguard,并再次尝试它,它的工作原理。通过在Android中实现Proguard,使用JDBC执行Asynctask中的应用程序崩溃

现在我的问题是如何在我的项目中使用jdbc以及proguard,这有可能吗?

这里是我的调试什么

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 
       Process: com.example.aileen.rotaractclub, PID: 6131 
       java.lang.RuntimeException: An error occurred while executing doInBackground() 
        at android.os.AsyncTask$3.done(AsyncTask.java:309) 
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) 
        at java.util.concurrent.FutureTask.setException(FutureTask.java:223) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:242) 
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) 
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) 
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) 
        at java.lang.Thread.run(Thread.java:818) 
       Caused by: java.lang.ExceptionInInitializerError 
        at com.b.a.bq.connect(Unknown Source) 
        at java.sql.DriverManager.getConnection(DriverManager.java:179) 
        at java.sql.DriverManager.getConnection(DriverManager.java:213) 
        at com.example.aileen.rotaractclub.b.a.a(Unknown Source) 
        at com.example.aileen.rotaractclub.b.a$c.a(Unknown Source) 
        at com.example.aileen.rotaractclub.b.a$c.doInBackground(Unknown Source) 
        at android.os.AsyncTask$2.call(AsyncTask.java:295) 
        at java.util.concurrent.FutureTask.run(FutureTask.java:237) 
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
        at java.lang.Thread.run(Thread.java:818)  
       Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: <init> [class java.lang.String, int, class java.util.Properties, class java.lang.String, class java.lang.String] 
        at com.b.a.o.<clinit>(Unknown Source) 
        at com.b.a.bq.connect(Unknown Source)  
        at java.sql.DriverManager.getConnection(DriverManager.java:179)  
        at java.sql.DriverManager.getConnection(DriverManager.java:213)  
        at com.example.aileen.rotaractclub.b.a.a(Unknown Source)  
        at com.example.aileen.rotaractclub.b.a$c.a(Unknown Source)  
        at com.example.aileen.rotaractclub.b.a$c.doInBackground(Unknown Source)  
        at android.os.AsyncTask$2.call(AsyncTask.java:295)  
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
        at java.lang.Thread.run(Thread.java:818)  
       Caused by: java.lang.NoSuchMethodException: <init> [class java.lang.String, int, class java.util.Properties, class java.lang.String, class java.lang.String] 
        at java.lang.Class.getConstructor(Class.java:528) 
        at java.lang.Class.getConstructor(Class.java:492) 
        at com.b.a.o.<clinit>(Unknown Source)  
        at com.b.a.bq.connect(Unknown Source)  
        at java.sql.DriverManager.getConnection(DriverManager.java:179)  
        at java.sql.DriverManager.getConnection(DriverManager.java:213)  
        at com.example.aileen.rotaractclub.b.a.a(Unknown Source)  
        at com.example.aileen.rotaractclub.b.a$c.a(Unknown Source)  
        at com.example.aileen.rotaractclub.b.a$c.doInBackground(Unknown Source)  
        at android.os.AsyncTask$2.call(AsyncTask.java:295)  
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)  
        at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)  
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)  
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)  
        at java.lang.Thread.run(Thread.java:818)  

这里是我的AsyncTask

 //Deleting Announcement 
public class deleting extends AsyncTask<String,String,String> { 
    Boolean Connection = false; 
    Boolean isSuccess = false; 
    ProgressDialog progress; 
    String title; 
    String ids; 

    public deleting(String aydi,String titulo) 
    { 

     ids=aydi; 
     title =titulo; 
     } 


    @Override 
    protected void onPreExecute() 
    { 
     super.onPreExecute(); 
     progress = new ProgressDialog(getActivity()); 
     progress.setTitle("Synchronizing"); 
     progress.setMessage("Removing '"+ title +"'\n announcement please wait..."); 
     progress.setIndeterminate(false); 
     progress.setProgressStyle(android.R.style.Widget_ProgressBar_Small); 
     progress.show(); 
     progress.setCancelable(false); 
    } 


    @Override 
    protected String doInBackground(String... params) { 
     try { 





      try { 
       connection = connectionclass(secured_Pref.getString("server",""), secured_Pref.getString("user",""), secured_Pref.getString("pass","")); 
       if (connection == null) { 
        Connection = false; 
       } 
       else 
       { 
        Connection = true; 

        PreparedStatement statement = connection.prepareStatement("DELETE FROM Announcements WHERE ID='"+this.ids.toString()+"' AND Title='"+this.title.toString()+"'"); 
        long i =statement.executeUpdate(); 
        try { 
         if (i>0) 
         { 
          isSuccess = true; 
         } else { 
          isSuccess = false; 
         } 
         connection.close(); 
        } catch (Exception x) { 
         Toast.makeText(getActivity(), "Error Occur.", Toast.LENGTH_SHORT).show(); 
        } 
       } 

      } catch (Exception e) 
      { 
       e.printStackTrace(); 
       Toast.makeText(getActivity(), "Error Occur.", Toast.LENGTH_SHORT).show(); 
      } 
     } catch (Exception ex) { 
      isSuccess = false; 
     } 
     return null; 

    } 


    @Override 
    protected void onPostExecute(String r) { 
     super.onPostExecute(r); 
     if (Connection) 
     { 
      Toast.makeText(getActivity(),"Successfully Connected.",Toast.LENGTH_LONG).show(); 
     } 
     else if(Connection==false) 
     { 
      Toast.makeText(getActivity(),"No Internet Connection.",Toast.LENGTH_LONG).show(); 
     } 
     if (isSuccess) 
     { 
      Snackbar.make(getView(), "Announcement is Successfully Removed.", Snackbar.LENGTH_LONG).show(); 

      //Refresh my fragment 
      FragmentTransaction refresh = getFragmentManager().beginTransaction(); 
      refresh.detach(ViewAnnounce.this).attach(ViewAnnounce.this).commit(); 
     } 
     else 
     { 
      Snackbar.make(getView(), "Oops! Error Occur.", Snackbar.LENGTH_LONG).show(); 
     } 
     progress.dismiss(); 

    } 
} 

ProGuard的规则

-ignorewarnings 
# Basic ProGuard rules for Firebase Android SDK 2.0.0+ 
-keep class com.firebase.** { *; } 
-keep class org.apache.** { *; } 
-keepnames class com.fasterxml.jackson.** { *; } 
-keepnames class javax.servlet.** { *; } 
-keepnames class org.ietf.jgss.** { *; } 
-dontwarn org.apache.** 
-dontwarn org.w3c.dom.** 
-renamesourcefileattribute SourceFile 
-keep public class * extends android.app.Application 
-optimizationpasses 5 
-keepattributes *Annotation*,EnclosingMethod 

在我的摇篮

buildTypes { 
    release { 
     minifyEnabled true 
     shrinkResources true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
    debug { 
     debuggable true 
     minifyEnabled true 
     shrinkResources true 
     proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
    } 
} 
+0

这里已经固定在我的连接尝试什么{ 调用Class.forName ( “com.mysql.jdbc.Driver”); connection = DriverManager.getConnection(url,user,password); (“error here 1:”,se.getMessage()); (错误在这里2:“,e.getMessage()); (例如e) } catch(Exception e) Log.e(“error here 3:”,e.getMessage()); } – ArcherEmiya

+0

忘记包括抱歉,连接连接=空; – ArcherEmiya

回答

0

通过包括本规则对我的ProGuard

-dontshrink 
相关问题