Я хотел бы создать Jar из проекта библиотеки Android. Он устроен следующим образом:
ProjectName
\- lib
| \- lib
| \- armeabi
| \- libNativeFirst.so
| \- libNativeSecond.so
\- src
\- main
\- java
\- com.package.sdk
\- PackageSDK.java
Я хотел бы, чтобы все это было упаковано в Jar, но без раскрытия исходного кода, присутствующего в PackageSDK.java
.
Я настроил свой файл build.gradle
следующим образом:
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
}
Когда я запускаю gradlew clean jar
в каталоге проекта, файл Jar создается в ProjectName\build\libs
с именем ProjectName.jar
. Его структура следующая:
ProjectName.jar
\- lib
| \- armeabi
| \- libNativeFirst.so
| \- libNativeSecond.so
\- com
\- package
\- sdk
\- PackageSDK.java
Я хотел бы, чтобы скомпилированный PackageSDK.class
был включен вместо файла PackageSDK.java
при выполнении задачи jar
. Что я могу изменить, чтобы добиться этого?
Редактировать:
По предложению Бена Манеса я изменил конфигурацию sourceSets
на следующую:
sourceSets {
main {
java {
srcDir 'src/main/java'
}
resources {
srcDir 'src/../lib'
}
output {
classesDir 'build/classes'
resourcesDir 'build/javaResources'
}
}
}
А задача jar
к следующему:
task jar(type: Jar) {
from android.sourceSets.main.output
}
Gradle теперь дает мне этот вывод:
Could not find method output() for arguments [build_25r1m0a3etn5cudtt5odlegprd$_run_closure2_closure9_closure10_closure13@138532dc] on source set main.
android.sourceSets.main.output
для файлов классов вместо источников, чтобы создать банку из - person Ben Manes   schedule 26.09.2013sourceSets { main { output { srcDir '_____' } } }
? - person BVB   schedule 26.09.2013output.dirs
. Взгляните на руководство пользователя Gradle а> - person Ben Manes   schedule 26.09.2013.dirs
, но у него была та же проблема. Я обнаружил, что могу просто использовать файлclasses.jar
изbuild/bundles/release
и переименовать его вProjectName.jar
, но я бы хотел, чтобы мне не приходилось этого делать. - person BVB   schedule 26.09.2013