Android Ошибка приложения при выполнении фоновой задачи только в режиме выпуска - PullRequest
0 голосов
/ 04 февраля 2020

Мое приложение работало нормально, прежде чем я реализовал функцию отправки почты. До сих пор в Debug работает нормально, но когда в Release это выдает ошибку. Задача состоит в том, чтобы просто взять информацию из элементов управления и сохранить ее в базе данных MS SQL.

Вызовы фонового процесса:

new CheckRegister(getActivity()).execute();

Код фонового процесса:

public class CheckRegister extends AsyncTask<String,String,String>
    {
        String z="";
        Boolean isSuccess = false;
        private ProgressDialog dialog;

        public CheckRegister(Activity activity) {
            dialog = new ProgressDialog(activity);
        }

        @Override
        protected void onPreExecute()
        {
            dialog.setMessage("Connecting to Server, please wait.");
            dialog.show();
        }

        @Override
        protected void onPostExecute(String r)
        {
            if (dialog.isShowing()) {
                dialog.dismiss();
            }

            //Toast.makeText(getContext(), r, Toast.LENGTH_SHORT).show();

            if(isSuccess)
            {


                Intent intent = new Intent(getActivity(),MainActivity.class);
                intent.putExtra("ImFromReg","Yes");
                startActivity(intent);
                getActivity().finish();                    

            }

        }

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


            //Establish Connection
            Connection con = new GetConnection().connectionclass();
            if (con == null) {
                z="Error in Connection, Kindly Check your Internet!";
            }
            else
            {
                //Check already record exist!
                try {
                    String query = "My Query";
                    Statement stmt = con.createStatement();
                    ResultSet rs = stmt.executeQuery(query);
                    if(rs.next())
                    {
                        // Record already exist
                        z="Provided Credentials Email/Cell  already registered!!!";
                        con.close();

                    }
                    else
                    {
                        // Start Register Process

                        CallableStatement cs = con.prepareCall("{? =  call SP_YouRegisterInsert(?,?,?,?,?,?,?)}");
                        cs.registerOutParameter(1, java.sql.Types.INTEGER);
                        cs.setString(2,getDateTime());
                        cs.setString(3,vEmail.getText().toString().trim());
                        cs.setString(4,vCell.getText().toString().trim());
                        cs.setString(5,vName.getText().toString().trim());
                        cs.setString(6,vPassword.getText().toString().trim());

                        cs.setString(7,androidId);
                        Calendar c = Calendar.getInstance();
                        String vShortCode = "XYZ";
                        cs.setString(8,vShortCode);
                        ResultSet resS = cs.executeQuery();
                        int str=0;
                        if (resS.next()) {
                            str = resS.getInt(1);
                        }

                        // Save Settings
                        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getContext().getApplicationContext());
                        SharedPreferences.Editor prefEditor = sharedPreferences.edit();
                        prefEditor.putString("email", vEmail.getText().toString().trim());                        
                        prefEditor.apply();


                        z = "Registration Completed."; // Your ID is:" + Integer.toString(str);
                        isSuccess=true;
                        con.close();



                    }
                }
                catch (Exception ex) {
                    z= ex.getMessage();
                }

            }
            return z;
        }
    }

Ошибка в режиме разблокировки:

E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #2
    Process: com.panther.familyloco, PID: 31182
    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.NoClassDefFoundError: net.sourceforge.jtds.jdbc.BlobImpl
        at g.a.a.a.J.a(:91)
        at g.a.a.a.J.<clinit>(:103)
        at g.a.a.a.h.a(:1515)
        at g.a.a.a.L.Q(:3285)
        at g.a.a.a.L.x(:2352)
        at g.a.a.a.L.a(:616)
        at g.a.a.a.h.<init>(:356)
        at g.a.a.a.l.connect(:188)
        at java.sql.DriverManager.getConnection(DriverManager.java:179)
        at java.sql.DriverManager.getConnection(DriverManager.java:144)
        at c.b.a.D.a(:35)
        at c.b.a.da$a.a(:286)
        at c.b.a.da$a.doInBackground(:241)
        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) 

Зависимости:

implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation files('libs/jtds-1.2.7.jar')
implementation files('libs/mail.jar')
implementation files('libs/activation.jar')
implementation files('libs/additionnal.jar')
implementation files('libs\\ftp4j-1.7.2.jar')

Я пробовал много способов отследить проблему, но не могу понять, в чем проблема. Прикладные комментарии журнала показывают, что приложение падает при создании соединения.

1 Ответ

0 голосов
/ 04 февраля 2020

Может быть проблема, связанная с запутыванием. Добавьте строку -keep class net.sourceforge.** { *; } в proguard-rules.pro, чтобы избежать запутывания всех классов в пакете net.sourceforge и его подпакетах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...