Wie erstelle ich ein Android Library Jar mit gradle, ohne den Quellcode öffentlich preiszugeben?
Ich möchte ein Jar aus einem Android-Bibliotheksprojekt erstellen. Es wird folgendermaßen eingerichtet:
ProjectName
\- lib
| \- lib
| \- armeabi
| \- libNativeFirst.so
| \- libNativeSecond.so
\- src
\- main
\- java
\- com.package.sdk
\- PackageSDK.java
Ich möchte, dass all dies in einem Jar verpackt wird, ohne jedoch den Quellcode preiszugeben, der in enthalten istPackageSDK.java
.
Ich habe meinebuild.gradle
Datei wie folgt:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5.+'
}
}
apply plugin: 'android-library'
repositories {
mavenCentral()
}
android {
compileSdkVersion 18
buildToolsVersion "18.0.1"
defaultConfig {
minSdkVersion 10
targetSdkVersion 18
}
sourceSets {
main {
java {
srcDir 'src/main/java'
}
resources {
srcDir 'src/../lib'
}
}
}
}
task jar(type: Jar) {
from android.sourceSets.main.allSource
}
Wenn ich rennegradlew clean jar
Im Projektverzeichnis wird eine Jar-Datei in erstelltProjectName\build\libs
namensProjectName.jar
. Die Struktur ist wie folgt:
ProjectName.jar
\- lib
| \- armeabi
| \- libNativeFirst.so
| \- libNativeSecond.so
\- com
\- package
\- sdk
\- PackageSDK.java
Ich hätte gerne für die zusammengestelltPackageSDK.class
enthalten sein anstelle derPackageSDK.java
Datei beim Ausführen derjar
Aufgabe. Was kann ich ändern, um dies zu erreichen?
Per Vorschlag von Ben Manes änderte ich die Konfiguration dersourceSets
Zu dem Folgendem:
sourceSets {
main {
java {
srcDir 'src/main/java'
}
resources {
srcDir 'src/../lib'
}
output {
classesDir 'build/classes'
resourcesDir 'build/javaResources'
}
}
}
Und dasjar
Aufgabe zu Folgendem:
task jar(type: Jar) {
from android.sourceSets.main.output
}
Gradle gibt mir jetzt folgende Ausgabe:
Could not find method output() for arguments [build_25r1m0a3etn5cudtt5odlegprd$_run_closure2_closure9_closure10_closure13@138532dc] on source set main.