我有一个可以在不同项目中使用的Android库,现在我的问题是我想在编译的jar中包含我的version.properties。但是当我使用gradlew jarRelease
编译我的库时, build / libs 文件夹中生成的app.jar只包含META-INF文件夹和我的java类(在包中)。
下面是我的build.gradle文件的android部分
apply plugin: 'com.android.library'
android {
packagingOptions {
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
exclude 'META-INF/NOTICE.txt'
}
compileSdkVersion 22
buildToolsVersion '23.0.1'
defaultConfig {
minSdkVersion 19
targetSdkVersion 19
multiDexEnabled true
versionCode 1
versionName "1.0"
}
buildTypes {
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro', 'proguard-rules-test.pro'
}
}
configurations.all {
resolutionStrategy {
force 'com.android.support:support-annotations:23.0.1'
}
}
sourceSets {
defaultConfig {
testInstrumentationRunner 'android.support.test.runner.AndroidJUnitRunner'
}
main {
java {
srcDir 'src/main/java/'
}
resources {
srcDir 'src/main/resources/'
}
}
}
}
我正在尝试用我编译的jar获得的东西是这样的
app.jar
\- META-INF
| \- ....(Files)
\- com
\- package
\- sdk
\- PackageSDK.class
\- resources
\- version.properties
目前得到的只是
app.jar
\- META-INF
| \- ....(Files)
\- com
\- package
\- sdk
\- PackageSDK.class
我需要在我编译的jar中拥有资源。
答案 0 :(得分:1)
如果要访问这样的资源文件,您可能需要构建aar而不是jar。 aar包括所有资源,资产和清单。
但是,请考虑在build.gradle中定义变量并直接从那里引用它。
尝试使用buildConfigField
release {
buildConfigField "String", "LIB_VERSION", "1.0.1"
}
然后在代码中以
的形式访问它Log.d(TAG + ":" + BuildConfig.LIB_VERSION, "Something happened");