'provided' 个子项目与 android gradle 的用法
Usage of 'provided' sub-projects with android gradle
我有一个带有子项目的项目,它应该只在 编译时 类路径中。
root-project
|- classic-subproject
`- compile-time-subproject
根项目使用
[...]
apply plugin: 'com.android.application'
dependencies {
[...]
compile project(':classic-subproject')
provided project(':compile-time-subproject')
}
android {
[...]
}
两个子项目都使用
[...]
apply plugin: 'com.android.library'
android {
[...]
}
我使用 gradle 2.1 和 android-gradle 0.14.4.
根据我的理解,给定的配置应该在编译时将 compile-time-subproject 放在类路径中,而不应该放在生成的 apk 中。但是我注意到它在运行时也可用(= 在 apk 中)。
这是 android-gradle 的错误还是我的配置有问题?
显然,要按提供的方式使用 android 库并不容易。但是 java 可以按提供的方式提供库。
只要您在编译插件时只希望 Android 标准库位于您的类路径中并且不需要资源或 AndroidManifest.xml 处理,您可以将您的库设为 java项目使用以下
apply plugin: 'java'
def sdkVer = 23
def sdkDir = System.env.ANDROID_HOME
if (!sdkDir) {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
sdkDir = properties.getProperty('sdk.dir')
}
sourceSets.main.compileClasspath += project.rootProject.files("$sdkDir/platforms/android-$sdkVer/android.jar")
我有一个带有子项目的项目,它应该只在 编译时 类路径中。
root-project
|- classic-subproject
`- compile-time-subproject
根项目使用
[...]
apply plugin: 'com.android.application'
dependencies {
[...]
compile project(':classic-subproject')
provided project(':compile-time-subproject')
}
android {
[...]
}
两个子项目都使用
[...]
apply plugin: 'com.android.library'
android {
[...]
}
我使用 gradle 2.1 和 android-gradle 0.14.4.
根据我的理解,给定的配置应该在编译时将 compile-time-subproject 放在类路径中,而不应该放在生成的 apk 中。但是我注意到它在运行时也可用(= 在 apk 中)。
这是 android-gradle 的错误还是我的配置有问题?
显然,要按提供的方式使用 android 库并不容易。但是 java 可以按提供的方式提供库。
只要您在编译插件时只希望 Android 标准库位于您的类路径中并且不需要资源或 AndroidManifest.xml 处理,您可以将您的库设为 java项目使用以下
apply plugin: 'java'
def sdkVer = 23
def sdkDir = System.env.ANDROID_HOME
if (!sdkDir) {
Properties properties = new Properties()
properties.load(project.rootProject.file('local.properties').newDataInputStream())
sdkDir = properties.getProperty('sdk.dir')
}
sourceSets.main.compileClasspath += project.rootProject.files("$sdkDir/platforms/android-$sdkVer/android.jar")