es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo eliminar un archivo .so en Android Studio?

He agregado scanLibrary y OpenCV a mi proyecto, así que tengo que agregar algunas librías (ver imagen).

Ahora no necesito los dos módulos anteriores, así que los elimino y borro.

Pero cuando genero el APK, aún se incluye el archivo “.so”.

He eliminado estos archivos de la carpeta libs, ¿por qué aún se incluyen el archivo “.so”?

He eliminado todas las dependencias relacionadas con estas libs.

¿Este archivo es necesario por defecto para el proyecto?

¿Cómo puedo evitar incluir este archivo “.so”?

analizar el APK

build.gradle

...
dependencies{
//    implementation fileTree(dir: "libs", excludes: ["*.jar"])
    implementation 'androidx.appcompat:appcompat:1.4.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.2'
//    implementation project(path: ':openCVLibrary3410')
//    implementation project(':scanlibrary')
    implementation 'com.google.android.material:material:1.6.0-alpha01'
    implementation files('libs/poi-3.7.jar')
    testImplementation 'junit:junit:4.13.1'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'

... otras dependencias
}

La dependencia comentada la he eliminado.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Hay algunas posibles razones por las que el archivo “.so” todavía está incluido en el APK a pesar de haber eliminado los módulos y dependencias de scanLiabray y OpenCV:

    1. El archivo “.so” puede estar aún listado en la carpeta “jniLibs” de tu proyecto de Android. Gradle automáticamente incluye todos los archivos de esta carpeta en el APK. Puedes verificar si este es el caso buscando la carpeta “jniLibs” en la estructura de directorios de tu proyecto.
    2. El archivo “.so” puede ser una dependencia transitiva de algún otro módulo que aún está incluido en tu proyecto. Esto significa que aunque hayas eliminado las dependencias directas de scanLiabray y OpenCV, es posible que alguna otra biblioteca que estés utilizando aún dependa de ellas, y por lo tanto los archivos relacionados se incluyan en el APK. Puedes utilizar el comando de árbol de dependencias de Gradle (“./gradlew app:dependencies”) para ver la lista completa de dependencias y sus dependencias transitivas.

    3. El archivo “.so” puede ser necesario para alguna otra biblioteca nativa que estés utilizando en tu proyecto. En este caso, es posible que necesites investigar qué biblioteca lo requiere y decidir si puedes eliminar esa biblioteca o encontrar una solución alternativa.

    Para eliminar el archivo “.so” de tu APK, puedes intentar los siguientes pasos:

    1. Elimina la carpeta “jniLibs” de la estructura de directorios de tu proyecto si contiene el archivo “.so”.

    2. Utiliza el comando de árbol de dependencias de Gradle para localizar cualquier dependencia transitiva que aún podría requerir el archivo .so y elimina esas dependencias si es posible.

    3. Si el archivo “.so” es necesario para alguna otra biblioteca en tu proyecto, es posible que necesites incluir esa biblioteca como un binario precompilado en lugar de compilarlo desde el código fuente. Esto te permitirá incluir solo los archivos necesarios en tu APK y excluir cualquier biblioteca o archivo no deseado.

Comments are closed.