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

时间:2022-02-17 16:39:54

现在做的这个项目,之前是在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
这次问题解决完之后,我有继续开始签名打包,祈求可以,果然可以了,哈哈哈
记录一下。