2

Ich habe ein Bibliotheksmodul in einem Großprojekt, das Android-Tests angeschlossen hat, aber die Test APK verweist zu viele Methoden und muss multidexed oder ProGuard aktiviert werden.Multidex Andoird Bibliothek Modul

Gibt es eine Möglichkeit, Multidex oder ProGuard nur für die Anwendung des verbundenen Android-Tests zu aktivieren?

Es macht keinen Sinn, ProGuard zu ermöglichen direkt auf einer Bibliothek, aber wenn es eine Möglichkeit, es zu ermöglichen, nur für die Konfiguration androidTest, dass gut funktionieren würde.

Wir haben ProGuard für das Anwendungsmodul aktiviert, so dass es sicher von diesem Bibliotheksmodul abhängig ist und die APK der App erfolgreich erstellen kann.

Es war schwierig, nach Lösungen für diese Frage zu suchen, da ich nur Informationen über die Verwendung der Multidex-Unterstützungsbibliothek finden kann. Ich verstehe, wie ich es für eine typische Anwendung aktivieren kann.

+0

Soweit ich weiß, wird Proguard nur zur Codeverschleierung verwendet. Es gibt keine Beziehung mit Multidexing hier mit Proguard. –

+0

@ReazMurshed ProGuard kann Code verschleiern, aber auch unbenutzte Methoden und Klassen entfernen. https://developer.android.com/studio/build/shrink-code.html –

Antwort

1

Gibt es eine Möglichkeit, Multidex oder ProGuard nur für die Anwendung des angeschlossenen Android-Tests zu aktivieren?

Ja, Sie können ProGuard nur für Tests aktivieren, die einen dedizierten Testbuildtyp verwenden. Der Standardwert ist debug. Im folgenden Beispiel wird der dedizierte Testbuild-Typ minifiedTest genannt.

android { 

    defaultConfig { 

     /* Your configs here. */ 

     // Specify the name of the dedicated test build type. 
     testBuildType 'minifiedTest' 
    } 

    buildTypes { 
     debug { 
      // Your debug configurations. 
     } 

     release { 
      // Your release configurations. 
     } 

     minifiedTest { 
      // Use this to get the initial configurations from another build type. 
      // Some of them will be overridden from the configurations specified in this build type. 
      // You can avoid to use this or you can get them from your release build type for example. 
      initWith(debug) 
      // Enable proguard. 
      minifyEnabled true 
      // Specify the proguard file. 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 
+0

Danke für den Vorschlag. Leider verursacht dieser Ansatz einige Probleme mit neuen Versionen von Gradle (4.1+), wenn die Bibliothek von anderen Bibliotheksprojekten abhängt. Ich landete nur Multidex für das Bibliotheksmodul aktivieren. –