3

nicht erhalten. Ich habe ein Projekt, das React-Native verwendet. Ich bin building the RN module from source, also hat mein Projekt das ReactAndroid-Modul als Abhängigkeit.Konnte die Eigenschaft 'repositoryUrl' für das Projekt

Ich habe versucht, das Projekt zu aktualisieren gradle Build-Tools> = 2.3.2, auf Android, so konnte ich intant-run verwenden:

buildscript { 
    repositories { 
     jcenter() 
     mavenLocal() 
     maven { url 'https://maven.fabric.io/public' } 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:2.3.2' 
     ... 
    } 
} 

Diese Veränderung zwang mich gradle selbst 3,1-3,5 zu aktualisieren (letzter Stall).

das Projekt Aufbau erzeugt plötzlich folgendes gradle Fehler

konnte nicht unbekannte Eigenschaft ‚repositoryUrl‘ für Projekt bekommen ‚: ReactAndroid‘ vom Typ org.gradle.api.Project.

Kann jemand helfen?

Antwort

8

Nun, das erwies sich als interessant.

Der Grund

Der Fehler auf die dieser Linie an der release.gradle des Reaktivierungsindia Modul zeigte:

def getRepositoryUrl() { 
    return hasProperty('repositoryUrl') ? property('repositoryUrl') : 'https://oss.sonatype.org/service/local/staging/deploy/maven2/' 
} 

Merkwürdigerweise ist das Problem, dass hasProperty('repositoryUrl') kehrt true, während property('repositoryUrl') den Fehler verursacht.

Auf Gerät 3.1, hasProperty('repositoryUrl') gibt false zurück.

Offenbar in Gradle 3.5, hasProperty() gibt true in Fällen zurück, in denen die Eigenschaft tatsächlich fehlt, aber immer noch einen Getter hat. In unserem Fall ist der Getter

def getRepositoryUrl() {...} 

Diese vage ist here erklärt.

Es gibt jedoch eine andere Methode zur Prüfung auf Eigenschaften, die Getter ignoriert, mit dem Namen findProperty.

Das Update

So das Update den folgenden Block von release.gradle zu ändern war:

def getRepositoryUrl() { 
    return hasProperty('repositoryUrl') ? property('repositoryUrl') : 'https://oss.sonatype.org/service/local/staging/deploy/maven2/' 
} 

def getRepositoryUsername() { 
    return hasProperty('repositoryUsername') ? property('repositoryUsername') : '' 
} 

def getRepositoryPassword() { 
    return hasProperty('repositoryPassword') ? property('repositoryPassword') : '' 
} 

Um dies:

def getRepositoryUrl() { 
    return findProperty('repositoryUrl') != null ? property('repositoryUrl') : 'https://oss.sonatype.org/service/local/staging/deploy/maven2/' 
} 

def getRepositoryUsername() { 
    return findProperty('repositoryUsername') !=null ? property('repositoryUsername') : '' 
} 

def getRepositoryPassword() { 
    return findProperty('repositoryPassword') != null ? property('repositoryPassword') : '' 
} 

Weitere Schmerzen erfahren beim Aufbau der RN-Modul von der Quelle here .

Verwandte Themen