[在Gradle Android中应用Minify true导致应用崩溃

问题描述 投票:0回答:1

我试图从Google获取当前日期和时间。使用以下代码

private class LongOperation extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... params) {
                try {
                    HttpClient httpclient = new DefaultHttpClient();

                    //for Android 9
                    httpclient.getConnectionManager().getSchemeRegistry().register(
                            new Scheme("https", SSLSocketFactory.getSocketFactory(), 443)
                    );
                    HttpResponse response = httpclient.execute(new HttpGet("https://google.com/"));
                    StatusLine statusLine = response.getStatusLine();

                    if (statusLine.getStatusCode() == HttpStatus.SC_OK) {
                        String currentDateTime = response.getFirstHeader("Date").toString().replace("Date: ", "");


                        SimpleDateFormat formatter = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss zz");
                        //  String temp = "Thu Dec 17 15:37:43 GMT+05:30 2015";
                        try {
                            date = formatter.parse(currentDateTime);
                        } catch (ParseException e) {
                            e.printStackTrace();
                        }
                        SimpleDateFormat sd = new SimpleDateFormat("dd/MM/yyyyHH:mm:ss");
                        GoogleDate = sd.format(date);
                        System.out.println("Google Date  :" + GoogleDate);

                    } else {
                        //Closes the connection.
                        response.getEntity().getContent().close();
                        throw new IOException(statusLine.getReasonPhrase());
                    }
                } catch (IOException e) {
                    Log.d("Response", e.getMessage());
                }
        return GoogleDate;

    }

    @Override
    protected void onPostExecute(String serverDate) {

            Toast.makeText(MainActivity.this, "Time is "+ serverDate, Toast.LENGTH_SHORT).show();
}
    }

在调试版本和发行版本中也都可以正常工作,但是当我在Gradle文件中将minify设置为true时,应用程序崩溃并显示以下错误。

2020-04-23 00:36:39.558 18528-18575/? E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #4
Process: com.developer.emten, PID: 18528
java.lang.RuntimeException: An error occurred while executing doInBackground()
    at android.os.AsyncTask$3.done(AsyncTask.java:355)
    at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383)
    at java.util.concurrent.FutureTask.setException(FutureTask.java:252)
    at java.util.concurrent.FutureTask.run(FutureTask.java:271)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:246)
    at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
    at java.lang.Thread.run(Thread.java:784)
 Caused by: org.apache.commons.logging.LogConfigurationException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference (Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference)
    at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(Unknown Source:43)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(Unknown Source:10)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(Unknown Source:4)
    at org.apache.commons.logging.LogFactory.getLog(Unknown Source:4)
    at org.apache.http.impl.client.AbstractHttpClient.<init>(Unknown Source:7)
    at org.apache.http.impl.client.DefaultHttpClient.<init>(Unknown Source:1)
    at com.developer.emten.activities.MainActivity$b.doInBackground(SourceFile:1)
    at android.os.AsyncTask$2.call(AsyncTask.java:334)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:246) 
    at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
    at java.lang.Thread.run(Thread.java:784) 
 Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String java.lang.String.trim()' on a null object reference
    at org.apache.commons.logging.impl.LogFactoryImpl.createLogFromClass(Unknown Source:400)
    at org.apache.commons.logging.impl.LogFactoryImpl.discoverLogImplementation(Unknown Source:126)
    at org.apache.commons.logging.impl.LogFactoryImpl.newInstance(Unknown Source:6)
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(Unknown Source:10) 
    at org.apache.commons.logging.impl.LogFactoryImpl.getInstance(Unknown Source:4) 
    at org.apache.commons.logging.LogFactory.getLog(Unknown Source:4) 
    at org.apache.http.impl.client.AbstractHttpClient.<init>(Unknown Source:7) 
    at org.apache.http.impl.client.DefaultHttpClient.<init>(Unknown Source:1) 
    at com.abc.app.activities.MainActivity$b.doInBackground(SourceFile:1) 
    at android.os.AsyncTask$2.call(AsyncTask.java:334) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:246) 
    at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) 
    at java.lang.Thread.run(Thread.java:784) 

请帮助我。谁能告诉我需要添加的Proguard脚本吗?

我还附加了构建输出。enter image description here

非常感谢您的帮助。

android android-studio android-asynctask proguard android-gradle-3.0
1个回答
0
投票

将此行添加到您的保护规则中:

© www.soinside.com 2019 - 2024. All rights reserved.