您的位置:首页 > 移动开发 > Android开发

记录第一次使用android studio签名打包

2016-08-16 21:53 603 查看
现在做的这个项目,之前是在eclipse上先开发的,但是中间由于需求太多,要导入各种第三方库,我以为没啥,就一个一个加,都没啥事,直到有一天早上,突然用eclipse编译出现了超过64k的方法数,我去,没有接触过,就百度,goolge,得到的方法是一个插件化,还有就是分包,查了资料,都说在ec上分包比较麻烦,android studio上比较简单,所以我就把项目迁移到了as上 了 。

不说废话了,迁移了之后编译啥的都可以 了,我也一直没管,最近项目快开发完了,我就准备签名打包,签名都没啥问题,就是打包的时候出现了各种各样的错:

1.Error:(808) Error: Expected resource of type drawable

[ResourceType]:

这个原因是,我把资源类型弄错了,总的来说这是我的不规范编程导致的,怎么说呢,我上面是设置textcolor,那说明我应该使用一个color资源,单色值的应该来源于colors.xml中定义的,但是我上面是使用的一个colorstate,是一个自定义的selector,一个xml文件,这个时候我们应该把这个文件放在res/color目录中,而不是res/drawable目录中,然后使用R.color.xxx去引用,这样就没问题了。详见官方说明:https://developer.android.com/guide/topics/resources/available-resources.html ,我本来准备把资源正确的这样改一遍,然后我发现是导入的环信第三方,改的话太多了

解决方法:你可以在使用这些资源的方法上加上@SuppressWarnings(“ResourceType”),忽略警告,禁用资源类型检测。当然太多方法这样太麻烦,我们可以在在build.gradle文件中增加一下信息:

lintOptions {

disable “ResourceType”

},

参考文章:http://blog.csdn.net/olevin/article/details/51834239

解决了这个问题,我以为这次可以了,当然,这次是没这个问题了,但是又出现又一个问题

2:error:The number of method references in a .dex file cannot exceed 64K.

Error:Execution failed for task ‘:app:transformClassesWithDexForRelease’.

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘*\jdk1.8.0_77\bin\java.exe” finished with non-zero exit value 2‘’?

我一看到这个64k,我就知道是打包的时候应用方法数超过了65533,根据网上资料,在android studio 中配置分包,具体方法:

参考:http://ioclub.info/topic/573d2dbc8ae552f60443e204

继续前进,又出问题:

3.

Error:Execution failed for task’:app:transformClassesWithJarMergingForRelease’. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: android/support/v4/app/FragmentActivity$2.class

这个问题:在所添加的 jar 包或 aar 包中也引用了support-v4,与工程中引用的相冲突,我查了一下,我本身项目有v4包,导入的第三方库也有,把自己的去掉,可以了

参考:http://blog.csdn.net/nongjushi/article/details/51451213

继续:

4.Error:Execution failed for task ‘:app:transformClassesWithDexForDebug’.

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process ‘command ‘F:\Program Files (x86)\Java\jdk1.8.0_31\bin\java.exe” finished withnon-zero exit value 3

这个错误就在app.bulid里面加上这句,再rebuild ,之后再运行就行了。4g可以看电脑配置修改(2g,3g,6g,8g)。

dexOptions {

javaMaxHeapSize “4g”

}

参考:http://www.cnblogs.com/zhujiabin/p/5446027.html

这次问题解决完之后,我有继续开始签名打包,祈求可以,果然可以了,哈哈哈

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