自己不经常写博客有意见需要大家提出谢谢!
首先大家可以根据这位朋友的介绍http://blog.csdn.net/x605940745/article/details/41242687进行gradle进行配置我介绍一下我在这个过程中我遇到的一些问题;
1.首先Execution failed for task ':mergeF1DebugResources'.并指向你自定义属性的文件,出现这个问题是因为自定义属性标签有重复
2.Error:Execution failed for task ':auction-app:proguardRelease'.
> java.io.IOException: Can't read [/auction-app/build/intermediates/exploded-aar/paimai-android/share/unspecified/libs/libammsdk.jar(;;;;;;!META-INF/MANIFEST.MF)] (Can't process class [com/tencent/wxop/stat/al.class] (Unknown verification type [95] in stack map frame))
会在混淆一些第三方包的时候报错打包不成功,解决办法找到proguard源码中proguard\src\proguard\classfile\ClassConstants.java类,然后修改ATTR_StackMapTable的值,将原来的的StackMapTable改为dummy.重新打包进行替换原来的包,但是有点需要注意的时gradle 没有使用android 中的jar我以前一直替换SDK的jar导致始终不成功,C:\Users\用户\.gradle\caches\modules-2\files-2.1\net.sf.proguard\proguard-base\4.11\76730af417bb42da22b16e49f49e67863382b9bd\这是gradle使用jarde 路径进proguard-base-4.11.jar
3.还有一种就是如何针对打不同的包如何加载不同的String文件和icon图标,例如我想打一个别的如主包名+.area,你在src下创建area文件夹包含你所需要修改的信息。
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
}
}
apply plugin: 'android'
compile fileTree(dir: 'libs', include: '*.jar')
}
compileSdkVersion 20
buildToolsVersion "21.1.2"
useOldManifestMerger true
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
//添加内容
signingConfigs {
myConfig {
//绝对路径和相对路径都可以
storeFile file("签名文件地址")
//密码
//storePassword System.console().readLine('Keystore password:' )//保密通过键盘输入密码
storePassword "签名密码"
//别名
keyAlias "名称"
//密码
//storePassword System.console().readLine('keyAlias password:' )
keyPassword "密码"
}
}
buildTypes{
release {
//1.添加签名
signingConfig signingConfigs.myConfig
//2.runProguard 执行混淆代码
runProguard true
//加载默认混淆配置文件 progudard-android.txt在sdk目录里面,不用管,proguard.cfg是我们自己配<span></span>的混淆文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
area {
res.srcDirs = ['area\\res']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
productFlavors {
nationwide {
packageName= "主包名"
}
area {
packageName= "分支.area"
}
}
lintOptions {
abortOnError false
}
}