仅在发布模式下后台任务上的Android应用程序错误



在我实现邮件发送功能之前,我的应用程序运行良好。现在在调试中仍然可以正常工作,但是在发布中它会出错。任务是简单地从控件中获取信息并将它们保存在 MSSQL 数据库中。

后台进程调用:

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')

我已经尝试了很多方法来跟踪问题,但无法弄清楚问题所在。应用的日志注释显示应用程序在创建连接时崩溃。

可能是与混淆有关的问题。在proguard-rules.pro中添加行-keep class net.sourceforge.** { *; }以避免对包net.sourceforge及其子包中的所有类进行模糊处理。

最新更新