Java 带有Jsoup的Android AsyncTask在发布版本时崩溃

Java 带有Jsoup的Android AsyncTask在发布版本时崩溃,java,android,android-asynctask,jsoup,Java,Android,Android Asynctask,Jsoup,我让这个类来检查playsore中是否有可用的更新,它使用了Jsoup,一切都在debug上,但是当我上传release版本时,它会崩溃,我真的不知道是什么问题。有人能帮我吗 致命异常:java.lang.RuntimeException:运行时发生错误 正在执行doInBackground() 在android.os.AsyncTask$3.done处(AsyncTask.java:365) 位于java.util.concurrent.FutureTask.finishCompletion(

我让这个类来检查playsore中是否有可用的更新,它使用了
Jsoup
,一切都在
debug
上,但是当我上传
release
版本时,它会崩溃,我真的不知道是什么问题。有人能帮我吗

致命异常:java.lang.RuntimeException:运行时发生错误 正在执行doInBackground() 在android.os.AsyncTask$3.done处(AsyncTask.java:365) 位于java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:383) 位于java.util.concurrent.FutureTask.setException(FutureTask.java:252) 位于java.util.concurrent.FutureTask.run(FutureTask.java:271) 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 运行(Thread.java:784)

由java.lang.ExceptionInInitializeError引起 位于org.jsoup.nodes.Entities.access$000(Entities.java:1) 位于org.jsoup.nodes.Entities$EscapeMode(Entities.java:1) 位于org.jsoup.nodes.Document$OutputSettings(Document.java:3) 位于org.jsoup.nodes.Document.(Document.java:11) 位于org.jsoup.parser.TreeBuilder.a(TreeBuilder.java:12) 位于org.jsoup.parser.TreeBuilder.runParser(TreeBuilder.java) 位于org.jsoup.parser.Tokeniser.acknowledgeSelfClosingFlag(Tokeniser.java:7) 位于org.jsoup.parser.HtmlTreeBuilder.insertEmpty(HtmlTreeBuilder.java:7) 位于org.jsoup.parser.parser.parseInput(parser.java:5) 位于org.jsoup.helper.DataUtil.parseByteData(DataUtil.java:6) 位于org.jsoup.helper.HttpConnection$Response.parse(HttpConnection.java:7) 位于org.jsoup.helper.HttpConnection.get(HttpConnection.java:7) 在com.square.android.buyer.GetVersionCode.doInBackground(GetVersionCode.java:7)上 在android.os.AsyncTask$2.call(AsyncTask.java:345) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)处 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 运行(Thread.java:784)

由java.lang.NullPointerException引起:尝试调用虚拟 空对象引用上的方法“int java.io.Reader.read(char[])” 位于java.util.Properties$LineReader.readLine(Properties.java:432) 位于java.util.Properties.load0(Properties.java:348) 加载(Properties.java:336) 位于org.jsoup.nodes.Entities.a(Entities.java:16) 位于org.jsoup.nodes.Entities.(Entities.java:82) 位于org.jsoup.nodes.Entities.access$000(Entities.java:1) 位于org.jsoup.nodes.Entities$EscapeMode(Entities.java:1) 位于org.jsoup.nodes.Document$OutputSettings(Document.java:3) 位于org.jsoup.nodes.Document.(Document.java:11) 位于org.jsoup.parser.TreeBuilder.a(TreeBuilder.java:12) 位于org.jsoup.parser.TreeBuilder.runParser(TreeBuilder.java) 位于org.jsoup.parser.Tokeniser.acknowledgeSelfClosingFlag(Tokeniser.java:7) 位于org.jsoup.parser.HtmlTreeBuilder.insertEmpty(HtmlTreeBuilder.java:7) 位于org.jsoup.parser.parser.parseInput(parser.java:5) 位于org.jsoup.helper.DataUtil.parseByteData(DataUtil.java:6) 位于org.jsoup.helper.HttpConnection$Response.parse(HttpConnection.java:7) 位于org.jsoup.helper.HttpConnection.get(HttpConnection.java:7) 在com.square.android.buyer.GetVersionCode.doInBackground(GetVersionCode.java:7)上 在android.os.AsyncTask$2.call(AsyncTask.java:345) 在java.util.concurrent.FutureTask.run(FutureTask.java:266)处 位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1162) 位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:636) 运行(Thread.java:784)

它提醒我在加载属性文件时遇到了问题,因为Android资源和class
EscapeMode
正在使用这些文件。
它在中修复,在版本1.11.1中发布,因此请尝试至少使用此版本。

您使用的是哪个Jsoup版本?
public class GetVersionCode extends AsyncTask<Void, String, String> {
    private Activity mActivity;
    private String currentVersion;
    private String packageName;
    private boolean isForceUpdate;

    public GetVersionCode(Activity act, String version, boolean forceUpdate) {
        this.mActivity = act;
        this.currentVersion = version;
        this.isForceUpdate = forceUpdate;
        this.packageName = act.getPackageName();
    }

    @Override
    protected String doInBackground(Void... voids) {
        String newVersion = null;
        try {
            Document document = Jsoup.connect("https://play.google.com/store/apps/details?id=" + packageName + "&hl=en")
                .timeout(30000)
                .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")
                .referrer(Utils.HOST_NAME)
                .get();
            if (document != null) {
                Elements element = document.getElementsContainingOwnText("Current Version");
                for (Element ele : element) {
                    if (ele.siblingElements() != null) {
                        Elements sibElemets = ele.siblingElements();
                        for (Element sibElemet : sibElemets) {
                            newVersion = sibElemet.text();
                        }
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return newVersion;

    }


    @Override
    protected void onPostExecute(String onlineVersion) {
        super.onPostExecute(onlineVersion);
        if (onlineVersion != null && !onlineVersion.isEmpty()) {
            Log.d("update", "Current version " + currentVersion + " playstore version " + onlineVersion);
           // if(Float.valueOf(currentVersion) < Float.valueOf(onlineVersion)) {
            if(!currentVersion.equals(onlineVersion)) {
                //show anything
                final AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(mActivity, R.style.AlertDialogStyle);
                String alertMessage = Utils.APP_NAME + " Version " + onlineVersion + " is available on PlayStore.";
                alertDialogBuilder.setTitle("New Version");
                alertDialogBuilder.setMessage( alertMessage );
                alertDialogBuilder.setPositiveButton("UPDATE", (dialog, which) -> {
                    dialog.cancel();
                    try {
                        mActivity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName)));
                    } catch (ActivityNotFoundException anfe) {
                        mActivity.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName)));
                    }
                });
                if(!isForceUpdate) {
                    alertDialogBuilder.setNegativeButton("NOT NOW", (dialog, which) -> {
                        dialog.cancel();
                    });
                }else{
                    alertDialogBuilder.setCancelable(false);
                }
                alertDialogBuilder.create().show();
            }
        }
    }
}
 checkForUpdate.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
          activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {
                GetVersionCode gvc = new GetVersionCode(MainActivity.this, BuildConfig.VERSION_NAME, true);
                if (Build.VERSION.SDK_INT>=Build.VERSION_CODES.HONEYCOMB) {
                    gvc.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
                } else {
                    gvc.execute();
                }
            }
        });
     }
});
 at org.jsoup.nodes.Entities$EscapeMode.(Entities.java:1)