Android库:在可分发的JAR文件中包含属性文件

时间:2017-03-07 06:36:44

标签: java android gradle

我有一个可以在不同项目中使用的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中拥有资源。

1 个答案:

答案 0 :(得分:1)

如果要访问这样的资源文件,您可能需要构建aar而不是jar。 aar包括所有资源,资产和清单。

但是,请考虑在build.gradle中定义变量并直接从那里引用它。

尝试使用buildConfigField

在MyLibrary /的build.gradle

release {
    buildConfigField "String", "LIB_VERSION", "1.0.1"
}

然后在代码中以

的形式访问它
Log.d(TAG + ":" + BuildConfig.LIB_VERSION, "Something happened");