2015-06-21 8 views
7

Ich versuche, die v4-Unterstützungsbibliothek von der Quelle aus zu erstellen. Ich habe einen Teil der Bibliothek geändert. Ich versuche dies auf Ubuntu 13.10 mit Gradle zu tun. Ich folgte den Anweisungen in diesem answer, aber jetzt bin ich fest. Ich habe grandle 1.10 mit ubuntu benutzt, seit ich versucht habe, es unter windows zu erstellen, hieß es, Windows sei nicht unterstützt und auf ubuntu mit grddle 2.4 hieß es, dass grade 1.10 die Version war, die unterstützt wurde. Wenn ich versuche, mitSo erstellen Sie eine v4-Unterstützungsbibliothek aus der Quelle

gradle clean jar --stacktrace 

Gebäude halte ich eine Illegal bekommen: llvm-rs-cc fehlt, das ist ein Teil des die Stack-Trace, die ich erhalte immer

Caused by: java.lang.IllegalStateException: llvm-rs-cc is missing 
    at com.android.builder.AndroidBuilder.compileAllRenderscriptFiles(AndroidBuilder.java:1281) 
    at com.android.builder.AndroidBuilder$compileAllRenderscriptFiles.call(Unknown Source) 
    at com.android.build.gradle.tasks.RenderscriptCompile.taskAction(RenderscriptCompile.groovy:99) 
    at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:63) 
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:219) 
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:212) 
    at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:201) 
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:533) 
    at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:516) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80) 
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61) 

Die ganze Stacktrace ist here

Ich habe versucht, durch den Quellcode bei AndroidBuilder.java suchen und das hat kein Licht verloren. Ich habe sogar versucht, die genannte llvm-rs-cc-Datei von android-sdk-linux/build-tools in so viele Ordner wie möglich zu kopieren. Ich habe den Pfad zur llvm-rs-cc-Binärdatei zu meinem Pfad hinzugefügt, wie den Kommentar in BuildToolInfo.java und auch den Pfad zu build-tools, tools, and platform-tools, von dem ich glaube, dass ich ihn mit dem Android SDK-Manager heruntergeladen habe. Ich habe bestätigt, dass der Pfad nach dem Neustart mit dem Befehl printenv hinzugefügt wurde.

Was mache ich falsch?

Antwort

9

Es stellt sich heraus, dass das, was ich in plaform/frameworks/support die local.properties Datei bearbeiten benötigt das sdk Verzeichnis hinzuzufügen, dh

sdk.dir=/path/to/android-sdk-linux/ 

Addiert man diese tatsächlich machte die ganze llvm-rs-cc shenenigans verschwinden, aber ... es gibt mehr

Die Antwort, die ich Stackoverflow gesagt wurde nach diesem Befehl verwenden

platform\frameworks\support\v4\gradle clean jar 

, die ich mir interpretiert ein Navigieren Sie zu dem Verzeichnis v4 dann gradle rufen mit

gradle clean jar 

Hier sind die * vollständige Schritte, die ich gefolgt, falls jemand will auch die Unterstützung Bibliothek gebaut.

  1. Zuerst folgen Sie den Anweisungen in diesem answer:

Sie müssen von Repositorys zur Kasse https://android.googlesource.com:

  • Plattform/Frameworks/support
  • Plattform/prebuilts/gradle-plugin
  • Plattform/prebuilts/maven_repo/android
  • Plattform/prebuilts/sdk
  • Plattform/prebuilts/tools

Bitte halten Sie die Verzeichnisstruktur wie in Android-Repository.

  1. Installieren Sie die Pakete lib32stdc++6 und lib32z1, habe ich apt-get

    sudo apt-get install lib32stdc++6

    sudo apt-get install lib32z1

  2. die android sdk aus dem Android herunterladen Entwicklerwebsite here

  3. Entpacken Sie das Archiv an jedem Ort dann zu ihm navigieren dann zu tools\

  4. laufen ./android diese dann den sdk Manager lainch sollten diese packafes herunterladen, wenn sie

    • Alle Android api von api heruntergeladen nicht bereits sind 4 bis api 22 (Möglicherweise müssen Sie veraltete Pakete anzeigen).
    • Build-Tools 19.01 (Sie müssen möglicherweise veraltete Pakete zeigen)
    • Neue SDK-Tools
    • Neue Plattform-Tools und die neuesten Build-Tools

Normalerweise sollte dies ausreichend sein, Build die Support-Bibliothek mit Gradle, aber es stellt sich heraus, dass die JAR-Datei in der Git-Repository für API 22 ist eigentlich nicht auf dem neuesten Stand, da es nicht die neuen AccessibilityInfo-Methoden, die in API 22 hinzugefügt wurden, ja dekompiliert ich es sicher sein. Also noch ein paar Schritte.

  1. Ersetzen Sie die andoid.jar Datei in platform/prebuilts/sdk/current die Sie aus der Git-Repository mit den einem Download von android-sdk-linux/platforms/android-22/

Wir sind hier fast fertig, aber noch zwei weitere Fragen. Wenn Sie versuchen, die Bibliothek jetzt zu erstellen, gibt es zwei Kompilierungsfehler in Fragment.java und in FragmentActivity.java zögern Sie nicht, diese zu beheben, wie Sie möchten, da ich nicht sicher bin, wie richtig meine Lösung für diese war.

diese zu beheben, in Fragment.java on line #935 ich eine Besetzung so

result.setFactory(mChildFragmentManager.getLayoutInflaterFactory()); 

wurde dieses

result.setFactory((LayoutInflater.Factory)mChildFragmentManager.getLayoutInflaterFactory()); 

Für die anderen fix, in FragmentActivity.java on line #299 hinzugefügt ersetzt I

final View v = mFragments.onCreateView(name, context, attrs); 

mit diesem

final View v = mFragments.onCreateView(null, name, context, attrs); 

Der Grund für das Hinzufügen der Null war dort, weil in den vorherigen Versionen der erste Parameter, die View parent ist nicht der onCrateView Methode Elternteil wurde existieren und in deklariert und auf null initialisiert.

Die resultierende JAR-Datei kann in platform/out/host/gradle/frameworks/support/support-v4/build/libs/ gefunden werden * Einige Schritte fehlen möglicherweise, da dieser Prozess eine lange Zeit gedauert hat und ich vielleicht einige Dinge vergessen habe, die ich gemacht habe.

-1
+0

„Während diese Verbindung die Frage beantworten kann, ist es besser, die wesentliche Teile der Antwort hier aufzunehmen und den Link als Referenz bieten Link-geschützt. Antworten können ungültig werden, wenn sich die verknüpfte Seite ändert. " Weitere Informationen zum Erstellen von Qualitätsantworten finden Sie unter stackoverflow [Hilfeseite] (http://stackoverflow.com/help/how-to-answer) – Olumide

0

Versuchen Sie folgendes:

compile files('libs/your.jar') 
Verwandte Themen