您的位置:首页 > 编程语言 > Java开发

Eclipse中使用Gradle进行打包APK问题总结

2015-09-23 14:47 393 查看
自己不经常写博客有意见需要大家提出谢谢!

首先大家可以根据这位朋友的介绍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文件夹包含你所需要修改的信息。

buildscript {

    repositories {

        mavenCentral()

    }

    dependencies {

        classpath 'com.android.tools.build:gradle:0.12.+'

    }

}

apply plugin: 'android'

dependencies {

    compile fileTree(dir: 'libs', include: '*.jar')

}

android {

    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')

        // Move the build types to build-types/<type>

        // 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

    }

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: