Android 从 local.properties 读取

eJo*_*Joe 5 android gradle build.gradle android-gradle-plugin

我的项目根目录中有 local.properties 文件。

sdk.dir=C\:\\Users\\vucet\\AppData\\Local\\Android\\Sdk
versionName='7.0'
Run Code Online (Sandbox Code Playgroud)

并在 app 模块中的 build gradle 中,我试图以这种方式获取 versionName

Properties properties = new Properties()
if (project.rootProject.file('local.properties').exists()) {
    properties.load(project.rootProject.file('local.properties').newDataInputStream())
}

def getVerCode = { ->
    def code = project.hasProperty("versionCode") ? project.versionCode.toInteger() : 1000
    return code
}

def getVerName = { ->
    def name = project.hasProperty("versionName") ? project.versionName.toString() : "5.0"
    return name
}
Run Code Online (Sandbox Code Playgroud)

但每次我得到 5.0 值。请任何人都可以帮助我吗?

gil*_*tsl 7

使用 gradle 读取 local.properties 并在您的 Android 应用程序 java 代码中使用它们。

local.properties:

TOKEN="yyyyy" SERVER_URL="https://foo.com"

构建.gradle:

Properties properties = new Properties()
if (project.rootProject.file('local.properties').canRead()) {
        properties.load(project.rootProject.file("local.properties").newDataInputStream())
}

buildConfigField 'String', 'TOKEN', properties.getProperty('TOKEN', '"xxx"')
buildConfigField 'String', 'SERVER_URL', properties.getProperty('SERVER_URL', '"https://example.com/"')
Run Code Online (Sandbox Code Playgroud)

安卓java代码

@Override
public void onCreate(Bundle savedInstanceState) {
    ...
    Log.d("TAG", "My 'token' is: " + BuildConfig.TOKEN);
    Log.d("TAG", "My 'server url' is: " + BuildConfig.SERVER_URL);

}

Run Code Online (Sandbox Code Playgroud)


Raf*_*ael 0

尝试打印 versionName 以检查到目前为止您是否没有做错任何事情:

def getVerName = { ->
    println project.versionName.toString()
    ...
}
Run Code Online (Sandbox Code Playgroud)

或者,如果可以的话,尝试使用 gradle.properties 文件,因为您可以直接从 build.gradle 访问属性:

gradle.属性:

versionName='7.0'
Run Code Online (Sandbox Code Playgroud)

构建.gradle:

task printProps << {
    println versionName
    ...
}
Run Code Online (Sandbox Code Playgroud)