Пользовательский сертификат TLS не найден в многомодульном проекте KotlinAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Пользовательский сертификат TLS не найден в многомодульном проекте Kotlin

Сообщение Anonymous »

Я разрабатывал многомодульное приложение, в котором у меня есть модуль, представляющий веб-сервер в основном приложении, и я хотел бы добавить сертификат на этот сервер, который я настраиваю следующим образом:
AsyncHttpEmbeddedServer.kt

Код: Выделить всё

class AsyncHttpEmbeddedServer(
private val taskScope: CoroutineScope,
logger: ILog,
appConfig: HttpApplication.Configurator,
listeningPort: Int,
timeoutSecs: Int,
private val context: Context
) : EmbeddedServer(logger, appConfig, listeningPort, timeoutSecs) {
private var server: AsyncHttpServer? = null
private var app = HttpApplication()

override fun start(https: Boolean) {
appConfig.configureOn(app)

val server = AsyncHttpServer()
this.server = server
setupErrorHandler(server)

for (route in app.routing.routes) {
val method = when (route.method.uppercase()) {
"GET" -> AsyncHttpGet.METHOD
"POST" -> AsyncHttpPost.METHOD
else -> throw NotSupportedException("Method ${route.method} not supported in ${route.path}")
}
val routeRegex = buildPathRegex(route)
addActionCORS(server, routeRegex)
// IMPORTANT: Regex is incomplete because addAction adds an extra "^" at the beginning
server.addAction(method, routeRegex, { request, response ->
request.headers.get("Origin")?.let {
response.headers.add("Access-Control-Allow-Origin", it)
}
response.headers.add("Access-Control-Allow-Methods", request.method.uppercase())
handleRequest(route, request, response)
}, newRequestBodyProvider())
}
//Install openssl: https://bonguides.com/how-to-download-and-install-openssl-in-windows-11/
//Create custom certificate: https://www.baeldung.com/openssl-self-signed-cert
// https://dev.to/deathroll/trusted-self-signed-tls-certificates-for-dummies-w-thorough-explanations-included-da7
if (https) {
configureSSLServerCertificate()
} else {
server.listen(listeningPort)
}
}

// ssl configuration: https://medium.com/yellowme/adding-ssl-certificates-into-your-android-app-with-retrofit-1a6ea9bd3b27
//                    https://developer.android.com/privacy-and-security/security-ssl?hl=es-419
private fun configureSSLServerCertificate() {
// Generate a CA certificate
val caCert = CertificateFactory.getInstance("TLS").generateCertificate(
context.resources.openRawResource(
R.raw.ca_cert
)
)
// Create a keystore
val keyStore = KeyStore.getInstance(KeyStore.getDefaultType())
keyStore.load(null)
// Set the CA certificate in the keystore
keyStore.setCertificateEntry(
"ca",
caCert
)
// Create a KeyManagerFactory
val kmf =
KeyManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
kmf.init(keyStore, "123456".toCharArray())
// Create a TrustManagerFactory
val trustManagerFactory =
TrustManagerFactory.getInstance(TrustManagerFactory.getDefaultAlgorithm())
trustManagerFactory.init(keyStore)

// Create an SSLContext
val sslContext = SSLContext.getInstance("TLS")
sslContext.init(
kmf.keyManagers,
trustManagerFactory.trustManagers,
SecureRandom()
)
// Set the SSL socket factory
HttpsURLConnection.setDefaultSSLSocketFactory(sslContext.socketFactory)
// Start the server
server?.listenSecure(listeningPort, sslContext)
logger.info("SSL server started on port $listeningPort")
}

Что касается файла network_security_config.xm, то следующее: Итак, при попытке запустить сервер я получаю следующую ошибку:

Код: Выделить всё

AGPBI: {"kind":"error","text":"Android resource linking failed","sources":[{"file":"C:\\Users\\manul\\AndroidStudioProjects\\******\\android\\webserver\\build\\intermediates\\packaged_res\\debug\\xml\\network_security_config.xml","position":{"startLine":4}}],"original":"ERROR:C:\\Users\\manul\\AndroidStudioProjects\\******\\android\\webserver\\build\\intermediates\\packaged_res\\debug\\xml\\network_security_config.xml:5: AAPT: error: resource raw/ca_cert.pem (aka es.*******:raw/ca_cert.pem) not found.\n    ","tool":"AAPT"}

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDebugResources'.
> A failure occurred while executing com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction
> Android resource linking failed
ERROR:C:\Users\manul\AndroidStudioProjects\*******\android\webserver\build\intermediates\packaged_res\debug\xml\network_security_config.xml:5: AAPT: error: resource raw/ca_cert.pem (aka es.******:raw/ca_cert.pem) not found.

* Try:
> Run with --info or --debug option to get more log output.
>  Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:processDebugResources'.
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:145)
at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:143)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:131)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:402)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:389)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:382)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:368)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
Caused by: org.gradle.workers.internal.DefaultWorkerExecutor$WorkExecutionException:  A   f a i l u r e   o c c u r r e d   w h i l e   e x e c u t i n g   c o m . a n d r o i d . b u i l d . g r a d l e . i n t e r n a l . r e s . L i n k A p p l i c a t i o n A n d r o i d R e s o u r c e s T a s k $ T a s k A c t i o n < b r   / >         a t   o r g . g r a d l e . w o r k e r s . i n t e r n a l . D e f a u l t W o r k e r E x e c u t o r $ W o r k I t e m E x e c u t i o n . w a i t F o r C o m p l e t i o n ( D e f a u l t W o r k e r E x e c u t o r . j a v a : 3 4 2 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . w o r k . D e f a u l t A s y n c W o r k T r a c k e r . w a i t F o r I t e m s A n d G a t h e r F a i l u r e s ( D e f a u l t A s y n c W o r k T r a c k e r . j a v a : 1 4 2 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . w o r k . D e f a u l t A s y n c W o r k T r a c k e r . w a i t F o r I t e m s A n d G a t h e r F a i l u r e s ( D e f a u l t A s y n c W o r k T r a c k e r . j a v a : 9 4 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . w o r k . D e f a u l t A s y n c W o r k T r a c k e r . w a i t F o r A l l ( D e f a u l t A s y n c W o r k T r a c k e r . j a v a : 8 0 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . w o r k . D e f a u l t A s y n c W o r k T r a c k e r . w a i t F o r C o m p l e t i o n ( D e f a u l t A s y n c W o r k T r a c k e r . j a v a : 6 8 ) < b r   / >         a t   o r g . g r a d l e . a p i . i n t e r n a l . t a s k s . e x e c u t i o n . T a s k E x e c u t i o n $ 2 . r u n ( T a s k E x e c u t i o n . j a v a : 2 4 7 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r $ 1 . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 2 9 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r $ 1 . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 2 6 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r $ 2 . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 6 6 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r $ 2 . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 5 9 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 1 5 7 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 5 9 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r . r u n ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 4 7 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n E x e c u t o r . r u n ( D e f a u l t B u i l d O p e r a t i o n E x e c u t o r . j a v a : 6 8 ) < b r   / >         a t   o r g . g r a d l e . a p i . i n t e r n a l . t a s k s . e x e c u t i o n . T a s k E x e c u t i o n . e x e c u t e A c t i o n ( T a s k E x e c u t i o n . j a v a : 2 2 4 ) < b r   / >         a t   o r g . g r a d l e . a p i . i n t e r n a l . t a s k s . e x e c u t i o n . T a s k E x e c u t i o n . e x e c u t e A c t i o n s ( T a s k E x e c u t i o n . j a v a : 2 0 7 ) < b r   / >         a t   o r g . g r a d l e . a p i . i n t e r n a l . t a s k s . e x e c u t i o n . T a s k E x e c u t i o n . e x e c u t e W i t h P r e v i o u s O u t p u t F i l e s ( T a s k E x e c u t i o n . j a v a : 1 9 0 ) < b r   / >         a t   o r g . g r a d l e . a p i . i n t e r n a l . t a s k s . e x e c u t i o n . T a s k E x e c u t i o n . e x e c u t e ( T a s k E x e c u t i o n . j a v a : 1 6 8 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . E x e c u t e S t e p . e x e c u t e I n t e r n a l ( E x e c u t e S t e p . j a v a : 8 9 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . E x e c u t e S t e p . a c c e s s $ 0 0 0 ( E x e c u t e S t e p . j a v a : 4 0 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . E x e c u t e S t e p $ 1 . c a l l ( E x e c u t e S t e p . j a v a : 5 3 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . E x e c u t e S t e p $ 1 . c a l l ( E x e c u t e S t e p . j a v a : 5 0 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r $ C a l l a b l e B u i l d O p e r a t i o n W o r k e r . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 2 0 4 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r $ C a l l a b l e B u i l d O p e r a t i o n W o r k e r . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 1 9 9 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r $ 2 . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 6 6 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r $ 2 . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 5 9 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 1 5 7 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r . e x e c u t e ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 5 9 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n R u n n e r . c a l l ( D e f a u l t B u i l d O p e r a t i o n R u n n e r . j a v a : 5 3 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . o p e r a t i o n s . D e f a u l t B u i l d O p e r a t i o n E x e c u t o r . c a l l ( D e f a u l t B u i l d O p e r a t i o n E x e c u t o r . j a v a : 7 3 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . E x e c u t e S t e p . e x e c u t e ( E x e c u t e S t e p . j a v a : 5 0 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . E x e c u t e S t e p . e x e c u t e ( E x e c u t e S t e p . j a v a : 4 0 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . R e m o v e P r e v i o u s O u t p u t s S t e p . e x e c u t e ( R e m o v e P r e v i o u s O u t p u t s S t e p . j a v a : 6 8 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . R e m o v e P r e v i o u s O u t p u t s S t e p . e x e c u t e ( R e m o v e P r e v i o u s O u t p u t s S t e p . j a v a : 3 8 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . R e s o l v e I n p u t C h a n g e s S t e p . e x e c u t e ( R e s o l v e I n p u t C h a n g e s S t e p . j a v a : 4 8 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . R e s o l v e I n p u t C h a n g e s S t e p . e x e c u t e ( R e s o l v e I n p u t C h a n g e s S t e p . j a v a : 3 6 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . C a n c e l E x e c u t i o n S t e p . e x e c u t e ( C a n c e l E x e c u t i o n S t e p . j a v a : 4 1 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . T i m e o u t S t e p . e x e c u t e W i t h o u t T i m e o u t ( T i m e o u t S t e p . j a v a : 7 4 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . T i m e o u t S t e p . e x e c u t e ( T i m e o u t S t e p . j a v a : 5 5 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . C r e a t e O u t p u t s S t e p . e x e c u t e ( C r e a t e O u t p u t s S t e p . j a v a : 5 1 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . C r e a t e O u t p u t s S t e p . e x e c u t e ( C r e a t e O u t p u t s S t e p . j a v a : 2 9 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . C a p t u r e S t a t e A f t e r E x e c u t i o n S t e p . e x e c u t e ( C a p t u r e S t a t e A f t e r E x e c u t i o n S t e p . j a v a : 6 1 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . C a p t u r e S t a t e A f t e r E x e c u t i o n S t e p . e x e c u t e ( C a p t u r e S t a t e A f t e r E x e c u t i o n S t e p . j a v a : 4 2 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . B r o a d c a s t C h a n g i n g O u t p u t s S t e p . e x e c u t e ( B r o a d c a s t C h a n g i n g O u t p u t s S t e p . j a v a : 6 0 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . B r o a d c a s t C h a n g i n g O u t p u t s S t e p . e x e c u t e ( B r o a d c a s t C h a n g i n g O u t p u t s S t e p . j a v a : 2 7 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . B u i l d C a c h e S t e p . e x e c u t e W i t h o u t C a c h e ( B u i l d C a c h e S t e p . j a v a : 1 8 8 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . B u i l d C a c h e S t e p . l a m b d a $ e x e c u t e $ 1 ( B u i l d C a c h e S t e p . j a v a : 7 5 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . E i t h e r $ R i g h t . f o l d ( E i t h e r . j a v a : 1 7 5 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . c a c h i n g . C a c h i n g S t a t e . f o l d ( C a c h i n g S t a t e . j a v a : 5 9 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . B u i l d C a c h e S t e p . e x e c u t e ( B u i l d C a c h e S t e p . j a v a : 7 3 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . B u i l d C a c h e S t e p . e x e c u t e ( B u i l d C a c h e S t e p . j a v a : 4 8 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . S t o r e E x e c u t i o n S t a t e S t e p . e x e c u t e ( S t o r e E x e c u t i o n S t a t e S t e p . j a v a : 3 8 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . S t o r e E x e c u t i o n S t a t e S t e p . e x e c u t e ( S t o r e E x e c u t i o n S t a t e S t e p . j a v a : 2 7 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . R e c o r d O u t p u t s S t e p . e x e c u t e ( R e c o r d O u t p u t s S t e p . j a v a : 3 6 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . R e c o r d O u t p u t s S t e p . e x e c u t e ( R e c o r d O u t p u t s S t e p . j a v a : 2 2 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . S k i p U p T o D a t e S t e p . e x e c u t e B e c a u s e ( S k i p U p T o D a t e S t e p . j a v a : 1 0 9 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . S k i p U p T o D a t e S t e p . l a m b d a $ e x e c u t e $ 2 ( S k i p U p T o D a t e S t e p . j a v a : 5 6 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . S k i p U p T o D a t e S t e p . e x e c u t e ( S k i p U p T o D a t e S t e p . j a v a : 5 6 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . S k i p U p T o D a t e S t e p . e x e c u t e ( S k i p U p T o D a t e S t e p . j a v a : 3 8 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . R e s o l v e C h a n g e s S t e p . e x e c u t e ( R e s o l v e C h a n g e s S t e p . j a v a : 7 3 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . R e s o l v e C h a n g e s S t e p . e x e c u t e ( R e s o l v e C h a n g e s S t e p . j a v a : 4 4 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . l e g a c y . M a r k S n a p s h o t t i n g I n p u t s F i n i s h e d S t e p . e x e c u t e ( M a r k S n a p s h o t t i n g I n p u t s F i n i s h e d S t e p . j a v a : 3 7 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . l e g a c y . M a r k S n a p s h o t t i n g I n p u t s F i n i s h e d S t e p . e x e c u t e ( M a r k S n a p s h o t t i n g I n p u t s F i n i s h e d S t e p . j a v a : 2 7 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . R e s o l v e C a c h i n g S t a t e S t e p . e x e c u t e ( R e s o l v e C a c h i n g S t a t e S t e p . j a v a : 8 9 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . R e s o l v e C a c h i n g S t a t e S t e p . e x e c u t e ( R e s o l v e C a c h i n g S t a t e S t e p . j a v a : 5 0 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . V a l i d a t e S t e p . e x e c u t e ( V a l i d a t e S t e p . j a v a : 1 1 4 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . V a l i d a t e S t e p . e x e c u t e ( V a l i d a t e S t e p . j a v a : 5 7 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . C a p t u r e S t a t e B e f o r e E x e c u t i o n S t e p . e x e c u t e ( C a p t u r e S t a t e B e f o r e E x e c u t i o n S t e p . j a v a : 7 6 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . C a p t u r e S t a t e B e f o r e E x e c u t i o n S t e p . e x e c u t e ( C a p t u r e S t a t e B e f o r e E x e c u t i o n S t e p . j a v a : 5 0 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . S k i p E m p t y W o r k S t e p . l a m b d a $ e x e c u t e $ 2 ( S k i p E m p t y W o r k S t e p . j a v a : 9 3 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . S k i p E m p t y W o r k S t e p . e x e c u t e ( S k i p E m p t y W o r k S t e p . j a v a : 9 3 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . S k i p E m p t y W o r k S t e p . e x e c u t e ( S k i p E m p t y W o r k S t e p . j a v a : 3 4 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . l e g a c y . M a r k S n a p s h o t t i n g I n p u t s S t a r t e d S t e p . e x e c u t e ( M a r k S n a p s h o t t i n g I n p u t s S t a r t e d S t e p . j a v a : 3 8 ) < b r   / >         a t   o r g . g r a d l e . i n t e r n a l . e x e c u t i o n . s t e p s . L o a d P r e v i o u s E x e c u t i o n S t a t e S t e p . e x e c u t e ( L o a d P r e v i o u s E x e c u t i o n S t a t e S t e p . j a v a : 4 3 )
at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
at org.gradle.api.internal.tasks.execution.TaskExecution$3.withWorkspace(TaskExecution.java:284)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:142)
at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:131)
at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:402)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:389)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:382)
at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:368)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
Caused by:  com.android.builder.internal.aapt.v2.Aapt2Exception: Android resource linking failed
ERROR:C:\Users\manul\AndroidStudioProjects\******\android\webserver\build\intermediates\packaged_res\debug\xml\network_security_config.xml:5: AAPT: error: resource raw/ca_cert.pem (aka es.******.******:raw/ca_cert.pem) not found.

at com.android.builder.internal.aapt.v2.Aapt2Exception$Companion.create(Aapt2Exception.kt:45)
at com.android.builder.internal.aapt.v2.Aapt2Exception$Companion.create$default(Aapt2Exception.kt:33)
at com.android.build.gradle.internal.res.Aapt2ErrorUtils.rewriteException(Aapt2ErrorUtils.kt:260)
at com.android.build.gradle.internal.res.Aapt2ErrorUtils.rewriteLinkException(Aapt2ErrorUtils.kt:133)
at com.android.build.gradle.internal.res.Aapt2ProcessResourcesRunnableKt.processResources(Aapt2ProcessResourcesRunnable.kt:76)
at com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$Companion.invokeAaptForSplit(LinkApplicationAndroidResourcesTask.kt:898)
at com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$Companion.access$invokeAaptForSplit(LinkApplicationAndroidResourcesTask.kt:745)
at com.android.build.gradle.internal.res.LinkApplicationAndroidResourcesTask$TaskAction.run(LinkApplicationAndroidResourcesTask.kt:375)
at com.android.build.gradle.internal.profile.ProfileAwareWorkAction.execute(ProfileAwareWorkAction.kt:74)
at org.gradle.workers.internal.DefaultWorkerServer.execute(DefaultWorkerServer.java:63)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:66)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1$1.create(NoIsolationWorkerFactory.java:62)
at org.gradle.internal.classloader.ClassLoaderUtils.executeInClassloader(ClassLoaderUtils.java:97)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.lambda$execute$0(NoIsolationWorkerFactory.java:62)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:44)
at org.gradle.workers.internal.AbstractWorker$1.call(AbstractWorker.java:41)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
at org.gradle.workers.internal.AbstractWorker.executeWrappedInBuildOperation(AbstractWorker.java:41)
at org.gradle.workers.internal.NoIsolationWorkerFactory$1.execute(NoIsolationWorkerFactory.java:59)
at org.gradle.workers.internal.DefaultWorkerExecutor.lambda$submitWork$2(DefaultWorkerExecutor.java:206)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runExecution(DefaultConditionalExecutionQueue.java:214)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.runBatch(DefaultConditionalExecutionQueue.java:164)
at org.gradle.internal.work.DefaultConditionalExecutionQueue$ExecutionRunner.run(DefaultConditionalExecutionQueue.java:131)
...  3 more
Поэтому я предполагаю, что ошибка вызвана тем, что сертификат находится в папке raw пользовательского веб-сервера, но пытается найти его в модуле основного приложения.Есть ли какой-нибудь способ указать в файле network_security_config.xml правильный маршрут для поиска сертификата?
Заранее спасибо!
[EDIT]
Я изменяю файл network_security_config.xml следующим образом, хотя получаю ту же ошибку:

Код: Выделить всё









es.paytef.webserver


А вот изображение структуры проекта:
[img]https:/ /i.sstatic.net/gEw9E3Iz.png[/img]

обратите внимание, что домен модуля веб-сервера отличается от модуля приложения:
es.paytef.webserver // es.paytef.paytefmobile

Подробнее здесь: https://stackoverflow.com/questions/785 ... in-project
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»