Android使用Gradle构建的一些遇到的问题

来源:互联网 发布:诺基亚3500c软件 编辑:程序博客网 时间:2024/06/05 00:30

对于AndroidStudio下的项目结构可以参考这篇博文AndroidStudio工程结构及gradle介绍。

其中最重要的是主模块(通常是app)下的build.gradle文件,下面贴出我做过的一个项目的完整gradle文件:

apply plugin: 'com.android.application'android {    compileSdkVersion 19    buildToolsVersion "21.0.2"    compileOptions{        sourceCompatibility org.gradle.api.JavaVersion.VERSION_1_7        targetCompatibility org.gradle.api.JavaVersion.VERSION_1_7    }    lintOptions {//在build apk 时Android Lint产生的错误不会导致中断生成APK        abortOnError false    }    packagingOptions {        exclude 'META-INF/LICENSE.txt'    }    defaultConfig {        applicationId "cn.llzg.plotwiki"//下面这些原本在Manifest.xml中配置的东西都转移到了这里        minSdkVersion 11        targetSdkVersion 21        versionCode 26        versionName "3.2.0"        manifestPlaceholders = [ CHANNEL_NAME:"plotwiki"]//默认的渠道配置    }    signingConfigs{        release{            storeFile file("plotwiki.keystore");            storePassword "plotwiki"            keyAlias "plotwiki"            keyPassword "plotwiki"        }        debug{            storeFile file("plotwiki.keystore");            storePassword "plotwiki"            keyAlias "plotwiki"            keyPassword "plotwiki"        }    }    buildTypes {        release {            minifyEnabled false//proguard的开关            shrinkResources true            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'            signingConfig signingConfigs.release        }        debug{            signingConfig signingConfigs.debug        }    }    productFlavors {//多渠道的配置,可以查看AndroidManifest.xml中的meta-data参考        yingyongbao {            manifestPlaceholders = [ CHANNEL_NAME:"YINGYONGBAO"]        }        umeng {            manifestPlaceholders = [ CHANNEL_NAME:"UMENG" ]        }        wandoujia {            manifestPlaceholders = [ CHANNEL_NAME:"WANDOUJIA" ]        }        anzhuo{            manifestPlaceholders=[CHANNEL_NAME:"anzhuo"]        }        qihu360{            manifestPlaceholders=[CHANNEL_NAME:"360"]        }        xiaomi{            manifestPlaceholders=[CHANNEL_NAME:"xiaomi"]        }        jiuyi{            manifestPlaceholders=[CHANNEL_NAME:"91"]        }    }}tasks.withType(JavaCompile) {    options.encoding = "UTF-8"}dependencies {    compile fileTree(include: ['*.jar'], dir: 'libs')    compile project(':cropper')    compile files('libs/alipaysdk.jar')    compile files('libs/alipayutdid.jar')    compile files('libs/alipaysecsdk.jar')    compile files('libs/android-support-v4.jar')    compile files('libs/jsoup-1.8.1.jar')}
其中遇到的一些问题有

  1. .多渠道打包,这个问题可以参考这篇文章:gradle解决多渠道打包apk,我在这里用的是后一种方法,这样更容易管理
  2. 生成release版本的apk时总出现missingTranslation的错误导致无法生成apk,这里在android节点下加lintOption并配置好abortOnError就可以正常生成release的apk了
  3. 中文乱码,这个记不清当时怎么解决了,总之在加上tasks.withType那一小段指定编码肯定是不会错的
  4. 代码混淆,可以参考buildType节点里面的release
  5. jdk版本,可以在android节点下配置compileOptions来实现,我试过改为jdk1.8,然后代码里面就可以用lamda表达式之类的新特性了,但是,不知怎么回事生成apk时总报错,搜索这个问题却找不到资料最后只好做罢,希望有知道解决方案的同学能分享出自己的解决方法



0 0