使用gradle构建android的默认project结构:

src/main----java/----res/----assets/----aidl/----rs/----jni/----AndroidManifest.xmlsrc/androidTest/----java/


问题一、因为sourceSets配置而导致的:specified for property 'manifest' does notexist.

官方的配置:

android{sourceSets{main{manifest.srcFile'AndroidManifest.xml'java.srcDirs=['src']resources.srcDirs=['src']aidl.srcDirs=['src']renderscript.srcDirs=['src']res.srcDirs=['res']assets.srcDirs=['assets']}}}

我的配置:

sourceSets{main{manifest.srcFile'src/main/AndroidManifest.xml'java.srcDirs=['src/main/java']/*resources.srcDirs=['src/main/res']aidl.srcDirs=['src']renderscript.srcDirs=['src']*/res.srcDirs=['src/main/res']assets.srcDirs=['src/main/assets']}}

问题二、当你main版本和GooglePlay版本的Manifest配置一样时,出现:

declaredatAndroidManifest.xml:157:5Error:(3,5)Attributemanifest@versionCodevalue=(12)fromAndroidManifest.xml:3:5Error:(4,5)Attributemanifest@versionNamevalue=(2.1)fromAndroidManifest.xml:4:5isalsopresentatAndroidManifest.xml:4:5value=(2.0-debug)Suggestion:add'tools:replace="android:versionName"'to<manifest>elementatAndroidManifest.xml:1:1tooverride:app:processGooglePlayDebugManifestFAILEDError:Executionfailedfortask':app:processGooglePlayDebugManifest'.>Manifestmergerfailedwithmultipleerrors,seelogs

解决:

1.Suggestion: add 'tools:replace="android:versionName"' to <manifest> element at AndroidManife 这句话就是叫你在AndroidManifest.xml里面加这个东西,

2.网上还有种方法在build.gradle根标签上加上useOldManifestMerger true, 我试了下不行。所以只能老老实有第一种。

<manifestxmlns:tools="http://schemas.android.com/tools"xmlns:android="http://schemas.android.com/apk/res/android"tools:replace="android:versionName,android:versionCode"

最后上一个我自己的最终版的配置信息:

applyplugin:'com.android.application'android{compileSdkVersion21buildToolsVersion"21.1.1"defaultConfig{applicationId"com.deetech"minSdkVersion8targetSdkVersion21versionCode2versionName"2.0"//AndroidManifest.xml里面UMENG_CHANNEL的value为${UMENG_CHANNEL_VALUE}//manifestPlaceholders=[UMENG_CHANNEL_VALUE:"channel_name"]}packagingOptions{exclude'META-INF/NOTICE'exclude'META-INF/LICENSE'exclude'META-INF/DEPENDENCIES'}/*buildTypes{release{minifyEnabledfalseproguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.txt'}}*///执行lint检查,有任何的错误或者警告提示,都会终止构建,我们可以将其关掉。lintOptions{abortOnErrorfalse}//签名signingConfigs{debug{storeFilefile("C:/Users/Administrator/.android/debug.keystore")}relealse{storeFilefile("F:/gradle.jks")//AndroidStudio-->Build-->GenerateSignedAPK-->CreateNew可以生成storePassword"gradle"//在生成.jks文件时需要填入的参数一一对应即可keyAlias"gradle"keyPassword"gradle"}}buildTypes{debug{//显示LogbuildConfigField"boolean","LOG_DEBUG","true"versionNameSuffix"-debug"minifyEnabledfalsezipAlignEnabledfalseshrinkResourcesfalsesigningConfigsigningConfigs.debug}release{//不显示LogbuildConfigField"boolean","LOG_DEBUG","false"//混淆minifyEnabledtrue//Zipalign优化zipAlignEnabledtrue//移除无用的resource文件shrinkResourcestrue//加载默认混淆配置文件progudard-android.txt在sdk目录里面,不用管,proguard.cfg是我们自己配<span></span>的混淆文件proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard.cfg'//签名signingConfigsigningConfigs.relealse}}sourceSets{main{manifest.srcFile'src/main/AndroidManifest.xml'java.srcDirs=['src/main/java']/*resources.srcDirs=['src/main/res']aidl.srcDirs=['src']renderscript.srcDirs=['src']*/res.srcDirs=['src/main/res']assets.srcDirs=['src/main/assets']}//Movetheteststotests/java,tests/res,etc...instrumentTest.setRoot('tests')//Movethebuildtypestobuild-types/<type>//Forinstance,build-types/debug/java,build-types/debug/AndroidManifest.xml,...//Thismovesthemoutofthemdefaultlocationundersrc/<type>/...whichwould//conflictwithsrc/beingusedbythemainsourceset.//Addingnewbuildtypesorproductflavorsshouldbeaccompanied//byasimilarcustomization.debug.setRoot('build-types/debug')release.setRoot('build-types/release')GooglePlay{//设置GooglePlay渠道的配置文件位置manifest.srcFile'src/main/googlePlay/AndroidManifest.xml'}/*xiaomi{manifest.srcFile'AndroidManifest.xml'}umeng{manifest.srcFile'AndroidManifest.xml'}*/}//渠道Flavors,我这里写了一些常用的productFlavors{GooglePlay{//packageName="com.deetech"//这里可以配置不同的包名}xiaomi{//packageName="com.deetech"}umeng{//packageName="com.deetech"}}compileOptions{sourceCompatibilityJavaVersion.VERSION_1_7targetCompatibilityJavaVersion.VERSION_1_7}/*productFlavors.all{flavor->flavor.manifestPlaceholders=[UMENG_CHANNEL_VALUE:name]}*///在生成的apk文件,修改下命名而已applicationVariants.all{variant->variant.outputs.each{output->defoutputFile=output.outputFileif(outputFile!=null&&outputFile.name.endsWith('.apk')){deffileName=outputFile.name.replace(".apk","-${defaultConfig.versionName}.apk")output.outputFile=newFile(outputFile.parent,fileName)}}}}dependencies{//compile'com.android.support:support-v4:20.0.0'compilefileTree(dir:'libs',include:['*.jar'])compile'com.google.code.gson:gson:2.2.4'}


更多相关文章

  1. Android 下载网络url文件并显示进度
  2. 【Android】向sdcard中写入文件
  3. Android 解析CSV文件,中文乱码
  4. android 打开各种文件的方式
  5. iOS、Android获取文件头信息
  6. Android通过Uri获取文件的路径的方法
  7. 【Android】使用Git控制Android程序的gitignore文件
  8. Android ListActivity实现遍历文件列表,查看文档类文件
  9. Android 后台保活设计2019,最新版本

随机推荐

  1. Read-only file system:android
  2. android 系统配置 常用命令 - linux
  3. android 查看电量情况,手机信息,电池历史记
  4. Android(安卓)PullToRefresh 详解
  5. [Android]读写fb0测试
  6. Android(安卓)中文 API (25) —— ZoomCont
  7. TextView和EditText中添加图片(ImageSpan)
  8. Poco库使用 CMake 编译,支持 NetSSL
  9. Android(安卓)appt使用小结
  10. 错误:Android(安卓)requires compiler com