通过gradle签署apk - 特殊字符的无效编码

时间:2014-05-30 21:46:28

标签: android encoding gradle android-studio apk

根据有关配置gradle to sign apk的许多主题,我使用了这个solution。 它似乎需要适当的价值,但我不能成功整个运作。可能是字母“ł”的问题甚至在终端显示错误。我需要帮助,因为我现在不知道该怎么做。我花了大约4个小时......

这是主要项目app gradle properites文件:

apply plugin: 'android'

android {
    compileSdkVersion 19
    buildToolsVersion "19.1.0"    

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 19
    }

    signingConfigs {
        release {
            storeFile file(RELEASE_STORE_FILE)

            storePassword RELEASE_KEY_ALIAS

            keyAlias RELEASE_KEY_ALIAS

            keyPassword RELEASE_KEY_PASSWORD
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }

}

dependencies {
    //...
}

此文件从Window的用户目录中的~/.gradle/gradle.properties文件中获取数据。

org.gradle.parallel=true
org.gradle.daemon=false

    RELEASE_STORE_FILE=C:/users/xxx/f1/f1/android_market_key
    RELEASE_STORE_PASSWORD=lololo
    RELEASE_KEY_ALIAS=łłłł
    RELEASE_KEY_PASSWORD=lololo

我尝试过使用:

compileOptions.encoding = "UTF-8"

tasks.withType(Compile) {
    options.encoding = "UTF-8"
}

甚至为{D}添加了gradlew.bat -D *的一些选项来设置编码但仍然失败。

请帮忙,我坚持了。

3 个答案:

答案 0 :(得分:0)

检查gradle.properties文件的编码并确保它是UTF-8。

某些编辑器(如记事本)默认为ANSI编码,如果文件包含非ASCII字符,则会导致问题。

(示例:在记事本中:文件 - >另存为 - >编码)

答案 1 :(得分:0)

所以我发现了部分解决方案,我需要使用从控制台读取的特殊字符的每个地方,它终于有效了:

解决方案:

apply plugin: 'android'

android {


    compileSdkVersion 19
    buildToolsVersion '19.1.0'

    defaultConfig {
        minSdkVersion 10
        targetSdkVersion 19
    }

    signingConfigs {
        release {
            storeFile file(RELEASE_STORE_FILE)
            storePassword RELEASE_STORE_PASSWORD

            def console = System.console()
            if (console != null) {
                keyAlias System.console().readLine("\n\$ Enter key alias: ")
            }

            keyPassword RELEASE_KEY_PASSWORD
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release
        }
    }

    productFlavors {
    }
}

dependencies {
    //my dependencies
}

答案 2 :(得分:0)

在遇到相同的问题并花了几个小时之后,我设法成功构建如下:

  1. 按照here所述的说明操作。因此,我没有使用gradle.properties来存储值,而是将它们存储在自定义文件signing.properties中。

  2. 更改文件读取部分如下:

    props.load(new InputStreamReader(new FileInputStream(propFile)," UTF-8"))

  3. 我希望它有所帮助。