7
votes

Existe-t-il un moyen de modifier le fichier gradle.properties dans Unity

Unity a un fichier gradle.properties par défaut qui est ajouté pendant le processus de construction. Bien qu'il soit possible de modifier les fichiers build.gradle et settings.gradle comme mentionné ici https://docs.unity3d.com/Manual/android-gradle-overview. html il n'est pas fait mention de la possibilité de modifier gradle.properties dans les documents unit. Le fichier est également recréé à chaque tentative de construction, donc le modifier dans temp / gradleOut après une construction et une nouvelle construction ne fonctionne pas. Je sais que l'exportation du projet est également possible, mais je recherche une solution où le projet peut être exécuté directement à partir d'unité.

D'ailleurs, cette question n'est PAS une copie de cette question Comment utiliser Gradle dans Unity < / a> La réponse ici n'a rien à voir avec la modification du fichier gradle.properties.

Ceci est un double de cette question qui a été incorrectement marqué comme doublon comment changer le gradle.properties par défaut de Unity?


2 commentaires

Bienvenue dans StackOverflow. Je pense donc que votre question ne convient pas à ce site. À mon avis, il devrait être demandé sur le site Web Game Development


Cela a-t-il été demandé ailleurs?


5 Réponses :


0
votes

Bien que ce ne soit pas une solution parfaite, vous pouvez utiliser l'option "Exporter le projet".

Paramètres de compilation

Après avoir exporté le projet, vous pouvez modifier gradle.properties et construire à l'aide d'AndroidStudio ou de la ligne de commande.


1 commentaires

Pas vraiment utile. L'affiche mentionne explicitement que la solution n'est pas durable. Pensez simplement au nombre de fois que vous devrez exporter le projet, modifier le fichier et installer l'APK sur un appareil pendant le développement.



9
votes

C'était quelque chose qui était un peu difficile à découvrir. J'allais faire un processeur de post-construction régulier comme je l'avais fait pour ma version iOS, mais comme je cherchais un moyen de charger et de déterminer où se trouvait le fichier de propriétés, j'ai parcouru l'interface suivante dans la documentation: IPostGenerateGradleAndroidProject .

D'après la documentation :

Implémentez cette interface pour recevoir un rappel après Android Le projet Gradle est généré.

Voici donc mon implémentation initiale de force brute pour activer androidX et jetifier.

public class AndroidPostBuildProcessor : IPostGenerateGradleAndroidProject
{
    public int callbackOrder
    {
        get
        {
            return 999;
        }
    }


    void IPostGenerateGradleAndroidProject.OnPostGenerateGradleAndroidProject(string path)
    {
        Debug.Log("Bulid path : " + path);
        string gradlePropertiesFile = path + "/gradle.properties";
        if (File.Exists(gradlePropertiesFile))
        {
            File.Delete(gradlePropertiesFile);
        }
        StreamWriter writer = File.CreateText(gradlePropertiesFile);
        writer.WriteLine("org.gradle.jvmargs=-Xmx4096M");
        writer.WriteLine("android.useAndroidX=true");
        writer.WriteLine("android.enableJetifier=true");
        writer.Flush();
        writer.Close();

    }
}

Théoriquement, vous devriez être capable de manipuler le projet gradle généré dans n'importe quel manière à votre choix lors du processeur de post-construction. Certains outils supplémentaires peuvent être utiles, comme la prise en charge de PBXProject sur iOS, mais d'ici là, cela fonctionnera.


3 commentaires

où dois-je mettre ce fichier?


@LenaBru Je crois que vous pouvez le placer où vous voulez, mais comme les extensions d'éditeur vont généralement dans un dossier appelé "Editor", c'est là que j'ai placé le mien. Vous pouvez consulter le pipeline de compilation et les extensions de l'éditeur ici: docs.unity3d.com/Manual/AdvancedEditor .html


peut-être voulez-vous ajouter writer.WriteLine ("org.gradle.parallel = true"); à cela



4
votes

IPostGenerateGradleAndroidProject est une nouvelle interface ajoutée après Unity2018.

Comme mon projet basé sur Unity2017, ce n'est pas une bonne solution. Ensuite, j'ai trouvé ceci . Une solution avec Gradle.

([rootProject] + (rootProject.subprojects as List)).each {
    ext {
        it.setProperty("android.useAndroidX", true)
        it.setProperty("android.enableJetifier", true)
    }
}


0 commentaires

0
votes

Dans les versions plus récentes de Unity (2019.4+), il est possible de générer un modèle de propriétés de dégradé personnalisé en accédant à Paramètres du projet> Lecteur> (onglet Android)> Autres paramètres> et en sélectionnant "Modèle de propriétés de dégradé personnalisé".

Après avoir sélectionné qu'un fichier gradleTemplate.properties est généré dans "Assets / Plugins / Android / gradleTemplate.properties".

C'est la meilleure façon de générer le fichier car il est convivial et préserve les autres paramètres.


0 commentaires

2
votes

Peut-être que ma réponse est un peu dépassée, mais dans Unity 2020, vous pouvez le faire dans:

Paramètres du lecteur -> Onglet Android (avec robot évidemment) -> Paramètres de publication -> Modèle de propriétés Gradle personnalisées (case à cocher) .

Après avoir coché la case, vous verrez le chemin vers le fichier gradleTemplate.properties (généralement il apparaît dans le répertoire Assets / Plugins / Android) qui sera fusionné avec final gradle.properties .

Tout ce dont vous avez besoin, vous pouvez écrire à la fin du fichier après la chaîne ** ADDITIONAL_PROPERTIES ** .

Exemple:

org.gradle.jvmargs=-Xmx**JVM_HEAP_SIZE**M
org.gradle.parallel=true
android.enableR8=**MINIFY_WITH_R_EIGHT**
**ADDITIONAL_PROPERTIES**

android.useAndroidX = true // I added this property to fix error:  This project uses AndroidX dependencies, but the 'android.useAndroidX' property is not enabled. Set this property to true in the gradle.properties file and retry.

Également sur la capture d'écran:

 Comment modifier le fichier gradle.properties dans Unity p >


1 commentaires

avec Unity 2018 sans case à cocher