Descrição
Ao montar o aplicativo de teste Android usando ./gradlew assembleAndroidTest
, a fusão de manifesto falha com os seguintes erros:
> Task :react-native-onesignal:processDebugAndroidTestManifest FAILED
/…/react-native-onesignal/examples/RNOneSignal/node_modules/react-native-onesignal/android/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger8422387923641009676.xml Error:
Attribute meta-data#onesignal_app_id<strong i="9">@value</strong> at manifestMerger8422387923641009676.xml requires a placeholder substitution but no value for <onesignal_app_id> is provided.
/…/react-native-onesignal/examples/RNOneSignal/node_modules/react-native-onesignal/android/build/intermediates/tmp/manifest/androidTest/debug/manifestMerger8422387923641009676.xml Error:
Attribute meta-data#onesignal_google_project_number<strong i="10">@value</strong> at manifestMerger8422387923641009676.xml requires a placeholder substitution but no value for <onesignal_google_project_number> is provided.
See http://g.co/androidstudio/manifest-merger for more information about the manifest merger.
Um problema semelhante foi relatado com # 579 em julho de 2018 e posteriormente encerrado em janeiro de 2019 sem qualquer resolução aparente.
Meio Ambiente
O projeto de exemplo em examples/RNOneSignal@31b5242
que usa react-native-onesignal v3.2.14.
Passos para reproduzir
git clone https://github.com/geektimecoil/react-native-onesignal.git
cd react-native-onesignal
git checkout 31b52420c807c22405e70b44800e20f3a8e3456e
cd examples/RNOneSignal
yarn
cd android
./gradlew assembleAndroidTest
Correndo para isso também.
@sonicdoe Você está usando productFlavors
? Nesse caso, você precisará alterar o comando como:
buildType = "debug"
productFlavor = "dev"
./gradlew assembleDevDebugAndroidTest
Não, o projeto de exemplo em examples/RNOneSignal@31b5242
(que usei para reproduzir isso) não usa variações de produto.
Também estou encontrando isso - uma pesquisa aleatória do Google mostrou esse problema https://github.com/crosswalk-project/cordova-plugin-crosswalk-webview/issues/207, que sugere o uso de buildToolsVersion: 28.0.0.
Já fazemos isso, mas então percebi um aviso durante a compilação
<br i="8"/>
OneSignalPlugin: WARNING: OneSignalPlugin: Downgraded 'com.android.support:28.0.0' -> 27.+ to prevent compile errors! Recommend updating your project's compileSdkVersion!<br i="9"/>
onde este projeto está forçando o downgrade; (
Meu problema pessoal foi resolvido quando eu construí usando o task-name
apropriado após o comando gradlew
(descrito acima).
FWIW, aqui está parte do meu arquivo android/build.gradle
:
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 28
buildToolsVersion '28.0.3'
}
}
}
project.configurations.all {
resolutionStrategy.eachDependency { details ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('multidex') ) {
details.useVersion "28.0.0"
}
}
}
}
Agradecemos sua paciência enquanto investigamos o problema.
Olá a todos,
Não temos certeza de como consertar isso permanentemente. Enquanto isso, você pode executar:
./gradlew app:assembleAndroidTest
Também percebemos que estávamos tendo problemas com ./gradlew build
portanto, estamos criando um PR que também corrigirá isso.
Obrigado por trazer esse assunto a nossa atenção.
Consegui fazer assembleAndroidTest
funcionar injetando os marcadores de posição do manifesto no próprio react-native-onesignal (semelhante a https://github.com/geektimecoil/react-native-onesignal/issues/579#issuecomment- 442504553) e removendo a classe ApplicationTest
em android/src/androidTest
(que parece não ter efeito de qualquer maneira). Veja minha filial gradle-android-test
para todas as mudanças.
Infelizmente, não consegui descobrir por que esse problema ocorre e por que essas alterações são necessárias. Pelo que pude descobrir, androidTest
resolve para uma árvore de dependência diferente, que é o motivo pelo qual a fusão de manifesto se comporta de maneira diferente nesse caso.
@rgomezp Deixe-me saber se você tiver mais informações e se as alterações acima seriam adequadas. Nesse caso, abriria uma solicitação pull.
@sonicdoe ,
Obrigado pela correção @sonicdoe! Por favor, crie o PR
@rgomezp adicionando minha pergunta aqui desde que você fechou o outro tíquete
Esse diretório é necessário para ser incluído no pacote npm ou pode residir apenas no repositório GitHub?
Porque se a resposta for não, então esse problema está resolvido para mim.
Estou perguntando porque não sei quais são as boas práticas, mas não vejo outros pacotes RN com este diretório androidTest, então acho que ninguém está testando ou eles não incluem testes no pacote npm?
@ mtt87 ,
Não é necessário. Os criadores originais devem tê-lo incluído acidentalmente. Vamos removê-lo no próximo lançamento do RN OneSignal SDK. Obrigado!
Fantástico 😄 Obrigado
Olá a todos,
Estaremos lançando a versão mais recente do SDK react-native com correções em breve. Se você gostaria de testar as mudanças agora, simplesmente altere o seu react-native-onesignal em seu package.json para apontar para este repositório.
"react-native-onesignal":"geektimecoil/react-native-onesignal"
Gostaríamos muito de ouvir seus comentários antes do lançamento. Saúde!
EDITAR: IGNORE ESTAS INSTRUÇÕES COMO O PLUGIN FOI ENVIADO PARA NPM
Vejo que você já lançou a versão mais recente, v3.3.0 . Esta versão deve mudar alguma coisa sobre esse problema? Se eu repetir as etapas de reprodução da postagem original , estou executando exatamente o mesmo erro.
@sonicdoe ,
Tem certeza de que o reinstalou corretamente?
Editar: acabei de testar. Você está certo. Minhas desculpas aqui. Achei que o # 791 corrigisse isso. Vou discutir com @ jkasten2 sobre # 789
Comentários muito úteis
Agradecemos sua paciência enquanto investigamos o problema.