应用程序在调试模式下工作,但在显示java.lang.RuntimeException:Android的apk版本中崩溃

应用程序在调试模式下工作,但在显示java.lang.RuntimeException:Android的apk版本中崩溃,android,android-asynctask,Android,Android Asynctask,我知道这已经被问过好几次了,但我面临一个问题。 当我将设备连接到系统并运行我的应用程序时,它工作正常。 即使我正在生成调试apk并运行应用程序,它也可以正常工作 但是,在为应用程序发布生成签名的apk时,我收到以下错误: FATAL EXCEPTION: AsyncTask #5 Process: com.xxxx.xxxxx, PID: 8180 java.lang.RuntimeException: An error occurred while executing doInBackgrou

我知道这已经被问过好几次了,但我面临一个问题。 当我将设备连接到系统并运行我的应用程序时,它工作正常。 即使我正在生成调试apk并运行应用程序,它也可以正常工作

但是,在为应用程序发布生成签名的apk时,我收到以下错误:

FATAL EXCEPTION: AsyncTask #5
Process: com.xxxx.xxxxx, PID: 8180
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 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)
我不知道这个异常发生在哪里,为什么

拜托,有人能帮忙吗

我已经浏览了以下几个链接:

我将我的异步任务调用为

new BannerAdAsyncTask().executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
我的异步任务是

// Checking banner ad and displaying the appropriate banner ad
class BannerAdAsyncTask extends AsyncTask<String, Boolean, Boolean> {

    String addUserResponseCode;
    String responseForAdduserRequest;
    String msg;

    /*
     * (non-Javadoc)
     *
     * @see android.os.AsyncTask#onPreExecute()
     */
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    /*
     * (non-Javadoc)
     *
     * @see android.os.AsyncTask#doInBackground(Params[])
     */
    @Override
    protected Boolean doInBackground(String... params) {

        try {

                String fetchBannerURL = context.getString(R.string.site_url)
                        + "fetchbannerad.cfc?method=fetchbannerad";

                responseForAdduserRequest = fetchContentFromServer(fetchBannerURL);

        } catch (Exception e) {
            e.printStackTrace();
        }

        return null;
    }

    /*
     * (non-Javadoc)
     *
     * @see android.os.AsyncTask#onPostExecute(java.lang.Object)
     */
    @Override
    protected void onPostExecute(Boolean result) {
        super.onPostExecute(result);

        try {

            if (responseForAdduserRequest != null) {



            // Parse JSON

            JSONObject pages = new JSONObject(responseForAdduserRequest);

            String d = pages.getString("DATA");

            JSONArray dd = new JSONArray(d);

            int len = dd.length();

            for (int i = 0; i < dd.length(); i++) {

                String p = dd.getString(i);

                JSONArray values = new JSONArray(p);

                adFileName = values.getString(6);
                adLinkLocation = values.getString(7);
            }


            adBanner.setVisibility(View.VISIBLE);

            adBanner.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {


                    // If the link location contains the companyid field,
                    // fetch the company id and navigate to the app's
                    // companies page with this id
                    if (adLinkLocation.contains("?companyid=")) {

                        int temp = adLinkLocation.indexOf("companyid=");

                        temp = temp + 10;

                        String companyid = adLinkLocation.substring(temp);

                        boolean isNumber = true;

                        try {

                            int id = Integer.parseInt(companyid);

                        } catch (NumberFormatException e) {
                            isNumber = false;
                        }

                        if (isNumber) {

                            Intent intent = new Intent(context,
                                    CompanyProfile.class);
                            intent.putExtra("company_id",
                                    Integer.parseInt(companyid));

                            // Get company branches as a cursor
                            final DataAdapter mDbHelper = new DataAdapter(
                                    context);
                            mDbHelper.createDatabase();
                            mDbHelper.open();

                            intent.putExtra("branch_id", primaryBranchID);
                            intent.putExtra("com_name", name);
                            intent.putExtra("com_tradename", tradename);
                            intent.putExtra("com_desc", "");
                            intent.putExtra("main_branch_id",
                                    primaryBranchID);

                            mDbHelper.close();

                            context.startActivity(intent);
                        }

                    } else {

                        // Otherwise load the link in browser
                        Intent intent = new Intent(
                                "android.intent.action.VIEW", Uri
                                .parse(adLinkLocation));
                        startActivity(intent);
                    }
                }
            });
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

在我的例子中,问题是在生成发布APK之后,我没有得到任何类型的服务器响应,而在调试APK的情况下,所有的服务器响应都很好

我在gradle文件中添加了以下行

    buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }

请发布您的代码。@FarshidABZ请查看编辑后的问题。@devgeek尝试清理构建项目,然后重新生成已签名的apk。为什么该帖子被否决?@Rahulrr2602谢谢您的回复,但我已设法解决了我的问题。我会发布我的答案。
    buildTypes {
    release {
        minifyEnabled false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }