0
votes

Je veux utiliser différentes bibliothèques dans le mode de débogage et de sortie dans Android

débogage: xxx

version: xxx

Je veux utiliser A.SO en mode de débogage et B.SO en mode de libération, comment puis-je faire dans build.gradle ou autre?

La bibliothèque .so est la bibliothèque de la troisième bibliothèque, placée dans Jnilibs / Armeabi / . Je ne connais pas le chronométrage spécifique, donc je ne peux donc pas utiliser system.loadlibrary () méthode.

merci!


4 commentaires

Utilisez-vous ce système.LoadLibrary () pour charger vos fichiers afin?


Si oui, vérifiez ma réponse.


@ user1506104 La bibliothèque SO est une troisième bibliothèque, placée dans Jnilibs / Armeabi /. Je ne connais pas le calendrier des appels spécifiques, je ne peux donc pas utiliser la méthode System.LoadLibrary.


Voir Stackoverflow.com/a/52048933/8034839 pour une solution alternative.


3 Réponses :


0
votes

Si vous utilisez System.LoadLibrary () code> Pour charger vos fichiers, faites-le:

public final static boolean IS_DEBUG = BuildConfig.BUILD_TYPE.equalsIgnoreCase("debug");

static {
    if(IS_DEBUG) {
        System.loadLibrary("yourdebugso");
    }
    else {
        System.loadLibrary("yourreleaseso");
    }
}


2 commentaires

La bibliothèque de SO est la bibliothèque tiers, placée dans Jnilibs / Armeabi /. Je ne connais pas le calendrier des appels spécifiques, je ne peux donc pas utiliser la méthode System.LoadLibrary.


J'ai ajouté une réponse alternative. Je ne supprime pas cette réponse originale car c'est une autre façon de charger différentes donc en fonction du type de construction.



2
votes

Voici une autre alternative. Ajoutez votre débogage alors fichier comme:

app/src/main/jniLibs/armeabi/<yourrelease>.so


1 commentaires

Cela mérite tous les upvotes! Cela semble également être le chemin attendu par défaut également, pas besoin de modifier des chemins dans la version.Gradle



0
votes

Historiquement, le NDK a pris en charge ARMV5 ( armée code>), et 32 ​​bits et 64 bits> mips code>, mais la prise en charge de ces abis a été supprimée dans Ndk r17 em> strong>.

Aussi, note ci-dessous l'anoncement de Google: P>

À partir du 1 er août 2019, vos applications publiées sur Google Play devront prendre en charge les architectures 64 bits. Les processeurs 64 bits livrent des expériences plus rapides et plus riches pour vos utilisateurs. L'ajout d'une version 64 bits de votre application fournit des améliorations de performance, crée une place à une innovation future et vous permet de vous préparer à des appareils avec du matériel de 64 bits uniquement. P> BlockQuote>

Donc, vous devez arrêter d'utiliser le hérité armée code> pour vos applications Android. Et commencez à utiliser les ABIS 64 bits. Voir https://developer.android.com/distribute/best-practices / Développer / 64 bit et https://developer.android.com/ndk/guides/abis pour plus des détails. p>

pour organiser le type STR> Débogou STRAND> et Type de construction STRAND>, théoriquement, vous pouvez mettre le mynative-lib.so code> n'importe où que tu aimes, par exemple Ils sont sous / utilisateurs / / android / jnilibs code>. Mais, j'aimerais vous recommander de vous recommander de disposer de vos types de débogage forts> et version fort> comme ci-dessous ( par chacun supporté abi em> strong> ): p> xxx pré>

puis configure votre fichier app / build.gradle code> fichier pour pointer sur les types de construction corrects, c'est-à-dire p>

android {
    ...
    sourceSets {
        main {
            // put your jni libs that do not distinguish debug and release.
            jniLibs.srcDirs += "/Users/<your-usr-name>/android/jniLibs"]
        }
        debug {
            // put your debug version jni libs.
            jniLibs.srcDirs += "/Users/<your-usr-name>/android/jniLibs/debug"]
        }
        release {
            // put your release version jni libs.
            jniLibs.srcDirs += "/Users/<your-usr-name>/android/jniLibs/release"]
        }
    }
    ...
}


2 commentaires

Bon! Merci.


Veuillez voter la réponse si vous pensez que c'est «bien». Merci.