原文地址:http://blog.csdn.net/maxdavid/article/details/46710083
在此感谢帮助过我的楼主:
最近想把一个Android Studio下的Library发布到JCenter,运行bintrayUpload时出现了“编码GBK的不可映射字符”的错误。
估计是编码的错误,百度“android studio 编码GBK的不可映射字符”的解决办法是将如下代码添加到Library目录下的build.gradle文件中:
- tasks.withType(Compile) {
- options.encoding = "UTF-8"
- }
task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) options.encoding = "UTF-8" }
library下的build.gradle:
apply plugin: 'com.android.library' apply plugin: 'com.github.dcendents.android-maven' apply plugin: 'com.jfrog.bintray' version = "2.0.1" android { compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION) buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION defaultConfig { minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION) targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION) versionName project.VERSION_NAME versionCode Integer.parseInt(project.VERSION_CODE) } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } lintOptions{ abortOnError false } } def siteUrl = 'https://github.com/hongyangAndroid/okhttp-utils' def gitUrl = 'https://github.com/hongyangAndroid/okhttp-utils.git' install { repositories.mavenInstaller { // This generates POM.xml with proper parameters pom { project { packaging 'aar' name 'okhttputils' // #CONFIG# // project title url siteUrl // Set your license licenses { license { name 'The Apache Software License, Version 2.0' url 'http://www.apache.org/licenses/LICENSE-2.0.txt' } } developers { developer { id 'hongyangAndroid' name 'ZhangHongyang' email '623565791@qq.com' } } scm { connection gitUrl developerConnection gitUrl url siteUrl } } } } } tasks.withType(JavaCompile) { options.encoding = "utf-8" } task sourcesJar(type: Jar) { from android.sourceSets.main.java.srcDirs classifier = 'sources' } task javadoc(type: Javadoc) { source = android.sourceSets.main.java.srcDirs classpath += project.files(android.getBootClasspath().join(File.pathSeparator)) options.encoding = "UTF-8" } task javadocJar(type: Jar, dependsOn: javadoc) { classifier = 'javadoc' from javadoc.destinationDir } artifacts { archives javadocJar archives sourcesJar } Properties properties = new Properties() properties.load(project.rootProject.file('local.properties').newDataInputStream()) bintray { user = properties.getProperty("bintray.user") key = properties.getProperty("bintray.apikey") configurations = ['archives'] pkg { repo = "maven" name = "okhttputils" // #CONFIG# project name in jcenter websiteUrl = siteUrl vcsUrl = gitUrl licenses = ["Apache-2.0"] publish = true } } //定义一个函数,target是生成jar包的文件名,classDir是class文件所在的文件夹 def makeJar(String target,String classDir){ exec{ executable "jar" //调用jar args "cvf",target args "-C", classDir args "","." } } //新建一个task,名为buildLib,依赖build(build是一个自带的task) task buildLib(dependsOn:['build'])<< { makeJar("okhttputils.jar","build/intermediates/classes/release") } task clearJar(type: Delete) { delete 'build/outputs/okhttputils.jar' } task makeJar(type: Copy) { from('build/intermediates/bundles/release/') into('build/outputs/') include('classes.jar') rename ('classes.jar', 'okhttputils.jar') } makeJar.dependsOn(clearJar, build) dependencies { compile 'com.squareup.okhttp:okhttp:2.7.2' }