Ver mensagens sem resposta | Ver tópicos ativos Hoje é 14 Dez 2019, 18:22



Responder Tópico  [ 1 Mensagem ] 
 java.lang.RuntimeException: An error occurred while executin 
Autor Mensagem
What is Android?
What is Android?

Data de registro: 26 Abr 2018, 16:19
Mensagens: 1
Mensagem java.lang.RuntimeException: An error occurred while executin
Erro:

Citação:
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761) Caused by:
java.lang.ClassNotFoundException: Didn't find class
"java.lang.invoke.MethodType" on path: DexPathList[[zip file
"/data/app/br.com.sisteplan.app.atendimento-1/base.apk"],nativeLibraryDirectories=[/data/app/br.com.sisteplan.app.atendimento-1/lib/arm,
/system/lib, /vendor/lib]] at
dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)


Este só ocorre, pelo que pude testar, em celulares com Android 7 ou 7.1, testei em um moto g4 e em um moto x play, todos eles quebram, num moto x4 com android 8, funciona normalmente.
Me parece um erro de multidex, ao alterar minha classe que estende de application para MultiDexApplication, passou a funcionar normalmente, neste android 8, que também quebrava.

Segue as classes:

       public class MyApplicationInstance extends MultiDexApplication {
   
        private static MyApplicationInstance instanceApplication;
   
        private String dsChaveAcessoWbs;
        private Tracker mTracker;
   
        /**
         * Verificação de instancia devido uso da camera
         */

        public MyApplicationInstance() {
   
            if (instanceApplication == null) {
                instanceApplication = this;
            }
        }
   
        public static MyApplicationInstance getInstanceApplicationSingleton() {
   
            return instanceApplication;
        }
   
        @Override
        public void onCreate() {
            super.onCreate();
            MultiDex.install(this);
        }
   
    /*    @Override
        protected void attachBaseContext(Context base) {
            super.attachBaseContext(base);
            MultiDex.install(this); // this is the key code
        }*/

   
        public static MyApplicationInstance getInstanceApplication() {
            return instanceApplication;
        }
   
        public static void setInstanceApplication(MyApplicationInstance instanceApplication) {
            MyApplicationInstance.instanceApplication = instanceApplication;
        }
   
        public String getDsChaveAcessoWbs() {
            return dsChaveAcessoWbs;
        }
   
        public void setDsChaveAcessoWbs(String dsChaveAcessoWbs) {
            this.dsChaveAcessoWbs = dsChaveAcessoWbs;
        }
   
        /**
         * Gets the default {@link Tracker} for this {@link Application}.
         *
         * @return tracker
         */

    /*    synchronized public Tracker getDefaultTracker() {
            if (mTracker == null) {
                GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
                // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
                mTracker = analytics.newTracker("UA-87591623-6");
            }
   
            // GoogleAnalytics.getInstance(this).setAppOptOut(true);
            return mTracker;
        }*/

    }


Class:

public class MyApplicationInstance extends MultiDexApplication {

    private static MyApplicationInstance instanceApplication;

    private String dsChaveAcessoWbs;
    private Tracker mTracker;

    /**
     * Verificação de instancia devido uso da camera
     */

    public MyApplicationInstance() {

        if (instanceApplication == null) {
            instanceApplication = this;
        }
    }

    public static MyApplicationInstance getInstanceApplicationSingleton() {

        return instanceApplication;
    }

    @Override
    public void onCreate() {
        super.onCreate();
        MultiDex.install(this);
    }

/*    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
        MultiDex.install(this); // this is the key code
    }*/


    public static MyApplicationInstance getInstanceApplication() {
        return instanceApplication;
    }

    public static void setInstanceApplication(MyApplicationInstance instanceApplication) {
        MyApplicationInstance.instanceApplication = instanceApplication;
    }

    public String getDsChaveAcessoWbs() {
        return dsChaveAcessoWbs;
    }

    public void setDsChaveAcessoWbs(String dsChaveAcessoWbs) {
        this.dsChaveAcessoWbs = dsChaveAcessoWbs;
    }

    /**
     * Gets the default {@link Tracker} for this {@link Application}.
     *
     * @return tracker
     */

/*    synchronized public Tracker getDefaultTracker() {
        if (mTracker == null) {
            GoogleAnalytics analytics = GoogleAnalytics.getInstance(this);
            // To enable debug logging use: adb shell setprop log.tag.GAv4 DEBUG
            mTracker = analytics.newTracker("UA-87591623-6");
        }

        // GoogleAnalytics.getInstance(this).setAppOptOut(true);
        return mTracker;
    }*/

}

BaseService class, method executaPost:

public class BaseService {

    protected static final int READ_TIMEOUT = 60000;
    protected static final int CONNECT_TIMEOUT = 60000;

    protected static final String HTTP_PROTOCOL = "http://";
    protected static final String REST_CONTEXT = "/rest";

    protected final HttpMethods httpMethods;
    protected String tokenAcessoHeader;

    public BaseService(String tokenAcessoHeader) {

        this.httpMethods = HttpMethods.getInstance();
        this.httpMethods.setConnectionTimeout(CONNECT_TIMEOUT);
        this.httpMethods.setReadTimeout(READ_TIMEOUT);

        this.tokenAcessoHeader = tokenAcessoHeader;
    }

    protected Map<String, String> getDefaultHeaders() {

        Map<String, String> headers = new HashMap<>();

        headers.put("Content-Type", "application/json");
        headers.put("accept", "application/json");
        headers.put("Authorization", Base64.encodeToString("95c6d8ce-7899-4a9f-bee2-977c674375bb:pJMgIbwgytF1Ur/fGHDvbGVe359KUU/a7OOVjzFuJAQ=".getBytes(), Base64.NO_WRAP));
        headers.put("dsChaveAcessoWbs", tokenAcessoHeader);

        Log.i("HTTP_POST", "dsChaveAcessoWbs: " + tokenAcessoHeader);

        return headers;
    }

    protected String getBaseUrl() {
        return HTTP_PROTOCOL + BuildConfig.DOMAIN;
    }


/*    protected String getBaseUrlMyID() {
        return BuildConfig.DOMAIN_MYID;
    }*/


    /**
     * @param typeRetorno
     * @param URLServico
     * @param objetoEnvio
     * @param <T>
     * @return
     * @throws ServiceException
     */

    protected <T> T executaPost(final Class<T> typeRetorno, String URLServico, Object objetoEnvio) throws ServiceException {
        try {


            if (!Build.FINGERPRINT.startsWith("generic")) {

                try {
                    final Class<?> activityThreadClass =
                            Class.forName("android.app.ActivityThread");
                    final Method method = activityThreadClass.getMethod("currentApplication");

                    Application application = (Application) method.invoke(null, (Object[]) null);

                    if (!UtilNetwork.isConnectedOrConnecting(application.getApplicationContext())) {

                        throw new HttpException(HttpException.CODIGO_ERRO_IO, "Sem conexão de dados, favor verificar...");
                    }

                } catch (final ClassNotFoundException e) {
                    // handle exception
                } catch (final NoSuchMethodException e) {
                    // handle exception
                } catch (final IllegalArgumentException e) {
                    // handle exception
                } catch (final IllegalAccessException e) {
                    // handle exception
                } catch (final InvocationTargetException e) {
                    // handle exception
                }
            }

            URL url = new URL(getBaseUrl() + URLServico);

            String result = httpMethods.doPost(url, getDefaultHeaders(), objetoEnvio);

            Log.i("HTTP_POST", "Result: " + result);

            T retorno = typeRetorno.newInstance();

            retorno = (T) GsonUtil.parseStringJsonToObject(result, retorno);

            if (((Retorno) retorno).getRetornoMensagem() != null && ((Retorno) retorno).getRetornoMensagem().getIdCamada() == CamadaType.SUCESSO) {
                return retorno;
            } else {
                throw new ServiceException(((Retorno) retorno).getRetornoMensagem());
            }
        } catch (Exception e) {
            if (e instanceof ServiceException) {
                throw (ServiceException) e;
            }
            throw new ServiceException(e);
        }
    }

    protected <T> T executaGet(final Class<T> typeRetorno, String urlServico) throws ServiceException {
        try {
            URL url = new URL(urlServico);

            String result = httpMethods.doGet(url, getDefaultHeaders());

            T retorno = typeRetorno.newInstance();

            retorno = (T) GsonUtil.parseStringJsonToObject(result, retorno);

            return retorno;

        } catch (Exception e) {
            if (e instanceof ServiceException) {
                throw (ServiceException) e;
            }
            throw new ServiceException(e);
        }
    }

}


A asynctask que gera o consumo do serviço:

    @Override
        public void onViewCreated(View view, Bundle savedInstanceState) {
            super.onViewCreated(view, savedInstanceState);
            ProfissionalVo profissionalVo = new ProfissionalVo();
            profissionalVo.setCdProfissional(4);
            new AsyncTaskListarAgendamentos(FragmentFilaAtendimento.this.getFragmentManager(), false).execute(profissionalVo);
        }
   
        private class AsyncTaskListarAgendamentos extends BaseAsyncTask<ProfissionalVo, Void, AsyncTaskResult<RetornoAgendamentoVo>> {
   
            private FragmentManager mFragmentManager;
            private ProfissionalVo profissionalVo;
   
            public AsyncTaskListarAgendamentos(FragmentManager fragmentManager, boolean isDialogShow) {
                super(fragmentManager, isDialogShow);
                this.mFragmentManager = fragmentManager;
            }
   
            @Override
            protected AsyncTaskResult doInBackground(ProfissionalVo... profissionalVos) {
   
                try {
                    profissionalVo = profissionalVos[0];
   
                    RetornoAgendamentoVo retorno = ServiceAgendamentoVo.getInstance(MyApplicationInstance.getInstanceApplicationSingleton().getDsChaveAcessoWbs())
                            .consultaAgendamentos1(profissionalVo);
   
                    return new AsyncTaskResult<RetornoAgendamentoVo>(retorno);
                } catch (Exception e) {
                    return new AsyncTaskResult<Retorno>(e);
                }
            }
   
            @Override
            protected void onPostExecute(AsyncTaskResult<Retorno> respProfissionalVO) {
                super.onPostExecute(respProfissionalVO);
   
                if (respProfissionalVO.getExceptionResult() == null && getActivity() != null) {
                    retornoAgendamentoVo = (RetornoAgendamentoVo) respProfissionalVO.getResult();
                    SavedPreferences.setQtdFilaAtendimento(view.getContext(), retornoAgendamentoVo.getRetorno().size());
                    retornoAgendamentoVo.getRetorno();
                    agendamentoVos = (ArrayList<AgendamentoVo>) retornoAgendamentoVo.getRetorno();
                    //
                    // specify an adapter (see also next example)
    /*        mAdapter = new CustomRecyclerViewAdapterFila(pacienteVos,
                    (AppCompatActivity) getActivity(), this);*/

   
                    // specify an adapter (see also next example)
                    if (agendamentoVos.size() == 0) {
                        txtNenhumAtendimento.setVisibility(View.VISIBLE);
                    } else {
                        mAdapter = new CustomRecyclerViewAdapterFila(agendamentoVos, (AppCompatActivity) getActivity(), this);
   
                        mRecyclerView.setAdapter(mAdapter);
                    }
                }
            }
        }


Meu gradle:

   apply plugin: 'com.android.application'
   
    android {
   
        compileSdkVersion 27
        buildToolsVersion "27.0.3"
   
        defaultConfig {
            applicationId "br.com.sisteplan.app.atendimento"
            minSdkVersion 16
            targetSdkVersion 27
            versionCode 1
            versionName "0.0.0.5"
            multiDexEnabled true
        }
   
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
   
        buildTypes {
            debug {
                debuggable true
            }
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                debuggable false
            }
        }
    }
    dependencies {
        implementation 'com.google.firebase:firebase-core:12.0.1'
        compile fileTree(include: ['*.jar'], dir: 'libs')
        compile 'com.android.support:appcompat-v7:27.1.0'
        compile 'com.android.support:design:27.1.0'
        compile 'com.android.support:cardview-v7:27.1.0'
        compile 'org.apache.commons:commons-lang3:3.5'
        compile 'com.detectlanguage:detectlanguage:1.0.5'
        compile 'com.android.support:multidex:1.0.0'
        compile 'com.google.apis:google-api-services-translate:v2-rev51-1.23.0'
        compile 'com.google.android.gms:play-services-analytics:12.0.1'
        compile 'de.hdodenhof:circleimageview:2.2.0'
        implementation project(':service_atendimento')
        implementation project(':communication_service')
        implementation 'com.android.support.constraint:constraint-layout:1.0.2'
        compile 'com.squareup.retrofit2:retrofit:2.4.0'
        compile 'com.google.code.gson:gson:2.8.2'
        compile 'com.squareup.retrofit2:converter-gson:2.4.0'
        // Room (use 1.1.0-beta3 for latest beta)
        implementation "android.arch.persistence.room:runtime:1.0.0"
        annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
    }
    apply plugin: 'com.google.gms.google-services'

Gradle do service:

    apply plugin: 'com.android.library'
   
    android {
        compileSdkVersion 27
   
        defaultConfig {
            minSdkVersion 16
            targetSdkVersion 27
            versionCode 1
            versionName "1.0"
        }
   
        buildTypes {
            debug {
                debuggable true
                minifyEnabled true
                buildConfigField "String", "DOMAIN", '"192.168.12.15:8084/overcare-ws/rest/"'
            }
            release {
                minifyEnabled true
                buildConfigField "String", "DOMAIN", '"177.124.62.221:8083/overcare-ws/rest/"'
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            }
        }
   
        compileOptions {
            sourceCompatibility JavaVersion.VERSION_1_8
            targetCompatibility JavaVersion.VERSION_1_8
        }
   
    }
   
    dependencies {
        implementation fileTree(include: ['*.jar'], dir: 'libs')
        implementation project(':communication_service')
        // Room (use 1.1.0-beta3 for latest beta)
        implementation "android.arch.persistence.room:runtime:1.0.0"
        annotationProcessor "android.arch.persistence.room:compiler:1.0.0"
        implementation 'com.google.code.gson:gson:2.8.2'
        implementation 'com.android.support:multidex:1.0.3'
    }


26 Abr 2018, 16:24
Perfil
Mostrar mensagens anteriores:  Organizar por  
Responder Tópico   [ 1 Mensagem ] 

Quem está online

Usuários vendo este fórum: afpcp, alexandrefett, anaguerra, Antonio Carlos, arilsonm, arkanjo, AT-AT, avsouza, berchielli, Bitetti, Bravox, BTalhadas, C-3PO, Caique, Cajux, car.demarco, cariabs8, Carla Luz, carlos rodrigues, Cassius, Celso Jr., cesao, Chefe Nass, Chewbacca, Comandante Cody, craudiao, Darth Maul, denisfln, dkclan, dnakamashi, Dorpho, dr.faro, ederson_4, edlinux, edwarvelarde, Eneias, espinhara.net, estratecnologia, Everton Moreira, EvertonLB, Felipe Ferreira, felipecomp19, fernandofsf, ferrodecaju, Flávio Robertgo, Gomes, Guilherme, guilhermepilotti, gutomilani, HAMSES, HanNiBaLSeTDf, henrique.cardoso, hostdesigner, Igor_M, igor_meneguzzo, JAndroid, jhhm_2008, jhonguitar, jhou, jlucasps, juliano, Juninhooooo, juniorfranca, lanlan, leofernandesmo, lkunta, luizneto79, mapis, marciosoliveira, marlovich, Matheus562, mauriciobreide, Mig, mtomazzi, nakahara, nandokanarski, neimarguerra, nina.rm, nq6, obitow, oliverlessa, pabarbosa, Padawan, Patricia, paulabr, paulo.weber, paulokiller, peixe, phpower1, PicsearchDroid, pingumanbr, pmzara, Portal Android, Rafael Alencar, rbenatti, renatodondoni, retardad0, Rodrigo, rogeriopgomes, romualdo, romuloff, romuloigor, Roney dos Santos, Shaman286, shibutani, Snappy [Bot], tavares767, Thelemita, tiago, viniciusluiz, vps_rj, wcaciano, weber, YaCy, Yoshihury, Yuri e 14 visitantes


Você não pode criar novos tópicos neste fórum
Você não pode responder tópicos neste fórum
Você não pode editar suas mensagens neste fórum
Você não pode excluir suas mensagens neste fórum
Você não pode enviar anexos neste fórum

Procurar por:

© 2007 - 2016 Portal Android - Comunidade de Desenvolvedores Android

Estamos no Linkedin    Siga-nos no twitter


Powered by phpBB - Hospedado por Bemobi