[Bug]: Plugin call after navigation can be answered before reply proxy is updated
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 2/5
- Tempo estimado
- 1-3 horas
- Facilidade para iniciantes
- 84/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- android, java
- Domínio
- mobile-dev
Direção de pesquisa
Comece em MessageHandler.java e inspecione a ordem da atualização do proxy de resposta e da publicação da mensagem durante a navegação ou o recarregamento. Reproduza com uma leitura rápida de Preferences no Android e, em seguida, verifique se as chamadas de plugin da nova página usam o proxy atualizado e são resolvidas, em vez de serem descartadas silenciosamente.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Capacitor Version
@capacitor/cli: 8.4.0
@capacitor/core: 8.4.0
@capacitor/android: 8.4.0
Other API Details
npm: 11.0.0
node: 22.13.0
Platforms Affected
- iOS
- Android
- Web
Current Behavior
After a reload or navigation, a fast plugin call (e.g. a Preferences read, which is how the bug appeared for us) can potentially never resolve as it uses the previous proxy instead of the updated one. The cause are these lines in MessageHandler.java:
if (isMainFrame) {
postMessage(message.getData());
javaScriptReplyProxy = replyProxy;
}
In case of a fast plugin call, sendResponseMessage() is reached before the proxy is updated, and therefore still uses the previous proxy and is silently dropped. Later calls work, and there's also no issue upon first page load as, at this point, javaScriptReplyProxy is null and the old evaluateJavascript path is used instead.
Expected Behavior
All plugin calls of the new page should go through the updated proxy.
Project Reproduction
Reproduced in a private repo
Additional Information
The bug is avoidable with android.useLegacyBridge = true as this routes every response through evaluateJavascriptand avoids the proxy entirely.
I've locally fixed the bug by swapping the two lines above, i.e., making sure the proxy is updated before the message post.
- Linguagem predominante
- TypeScript
- Estrelas
- 16.7k
- Forks
- 1.3k
- Merge médio
- 3d 10h
- PRs com merge (30d)
- 10
Guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de ionic-team/capacitor
-
triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
ionic-team/capacitor#8601 ·
-
triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
ionic-team/capacitor#8574 ·
-
SystemBars: safe area CSS injection throws "Cannot read properties of null" on startup (Android 16) Abertatriage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
ionic-team/capacitor#8530 · 2 comentários ·
-
triage
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
ionic-team/capacitor#8529 ·
-
needs reproduction
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 68/100
ionic-team/capacitor#8472 · 2 comentários · 1 reação ·
Todas as issues de ionic-team/capacitor
Issues semelhantes
-
calcite-components needs triage refactor
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Esri/calcite-design-system#15203 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 91/100
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 95/100
-
Daemon passes --experimental-wasm-jspi unconditionally on Node >= 24; Node 26 rejects the flag Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Automattic/studio#4908 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 90/100