Mac 下打包APK的血泪坑(巨坑,巨巨坑,史前巨坑)

原创 2017年06月30日 17:40:58

本文同步自wing的地方酒馆

又是好久没写博客,这回依然是一个坑把我炸出来了。。

前因后果经过

起因是这样子的。公司Jenkins是部署在mac上的

,更新完一个功能自动打包下来的apk开启以后,总会蹦。 报错 classNotFound. 奇怪的是,自己用ubuntu打包的apk就不会报错。

真是奇了大怪了,一开始以为是Jenkins的锅,然后调来调去还是不行,就以为是gradle的锅,各种换版本还是不行。

一直报一个错: com.xxxx.r ClassNotFound

这个r.class是第三方SDK里面的,并且就在包的最底下。就是一个普通的类。于是把Jenkins打包出来的APK给逆向过来,找到这个SDK对应的包,发现里面r.class居然丢失了!! 丢失了!!! 然后逆向ubuntu打包的APK,里面r.class居然是存在的!!存在的!!

手动执行task 有时候还会报错,说r和R不匹配

呵呵哒。这下子基本明了了,为什么会拿r和R去匹配呢? 肯定是mac系统的锅了,因为mac系统硬盘本身是大小写不敏感的,系统又会自动生成一个R.class,所以r.class和R.class被认为是同一个文件,就会被自动合并(随机删除)一个,所以,到最后导致打包出来的apk就会丢失这个r.class

证明猜想

新建一个test项目,在根目录创建一个小r.java,这时候打包会报错的。 parse error.

删除r.java ,创建一个a.java和一个A.java ..你会发现 a.java被删除了。。。
尼玛!!!!好坑啊。。。

解决问题

用磁盘工具新建一个分区,把硬盘格式化为“大小写敏感”的,将项目丢过来打包即可。

结尾

妈妈,mac坑我。。。浪费我好多时间。。

你说这问题复杂吧,也不复杂,可是他的展现形式是一个崩溃,以一个classnotfound展开的,这就很难联想了。。。绞尽乳汁啊。。

版权声明:本文为博主原创文章,欢迎注明出处后转载。 https://blog.csdn.net/wingichoy/article/details/74011086

mac 上下载apk包后 如何打开

mac 上下载apk包后  如何打开: 1. 将apk后缀名改为 zip 2. 双击解压即可!
  • chenyong05314
  • chenyong05314
  • 2015年05月13日 20:30
  • 5343

cocos2dx在mac下的app打包方法

工具:mac OSX系统,xcode7.2,cocos3.10版本,phones apk的打包       在cocos Stdio中就可以打包apk了,配置好相关的环境,一键打包就可以,和win...
  • qq_26010491
  • qq_26010491
  • 2016年03月05日 12:10
  • 7016

Android应用程序(APK)的编译打包过程

现在很多人想对Android工程的编译和打包进行自动化,比如建立每日构建系统、自动生成发布文件等等。这些都需要我们对Android工程的编译和打包有一个深入的理解,至少要知道它的每一步都做了什么,需要...
  • songjinshi
  • songjinshi
  • 2013年06月08日 21:58
  • 18033

html5 如何打包成apk,将H5封装成android应用APK文件的几种方法

使用html5+JavaScript开发移动Web App。将其简单封装成APK文件!
  • qqxinxi
  • qqxinxi
  • 2017年05月08日 06:19
  • 12134

生成股票走势图jfreechart

1.所需要的jar包  jfreechar-1.0.10.jar2.生成图的class 方法:package data.pub.jfree; import java.awt.Color; impo...
  • zelda002
  • zelda002
  • 2011年05月06日 18:11
  • 4111

(巨坑)长期经验总结

1.写dp的时候注意初值和long long2.在做题的时候不要先想做法,先看看要不要读入优化和long long3.写之前检查时间和空间,除非是玄学算法否则绝对不能抱有“卡卡常数就过去了”的侥幸心理...
  • orzGEOTCBRL
  • orzGEOTCBRL
  • 2016年07月16日 20:07
  • 836

Mac 安卓打包apk

1、准备:  电脑版本:10.11  JDK版本:jdk-8  下载Android SDK、android NDK、Apache-ant   2、配置:  打开终端,cd 引擎文件夹  ....
  • zhanghow
  • zhanghow
  • 2017年06月19日 14:19
  • 460

如何手动完成一次APK打包?----APK编译全过程

身为一个Android工程师,你是否有考虑过一个Android项目工程如何经过编译压缩变成一个APK的呢?  你又是否编写过打包工具完成多渠道打包呢? 下面我们来解密如何完成一个APK的打包。...
  • osle123
  • osle123
  • 2016年10月08日 16:36
  • 358

win7安装oracle1方法2c问题及解决- [INS-30131] 执行安装程序验证所需的初始设置失败。

win7安装oracle1方法2c问题及解决  [INS-30131] 执行安装程序验证所需的初始设置失败。    运行:regedit HKEY_LOCAL_MACHINE{ ...
  • lanmo190
  • lanmo190
  • 2016年01月30日 16:13
  • 434

踏进性能测试的路,踩遍各种性能的坑

性能测试工作,服务器端性能调优,性能调优如何结合业务,性能调优如何结合JAVA内存模型,性能调优如何结合JAVA GC原理...
  • chengyun19830206
  • chengyun19830206
  • 2017年04月30日 21:33
  • 275
收藏助手
不良信息举报
您举报文章:Mac 下打包APK的血泪坑(巨坑,巨巨坑,史前巨坑)
举报原因:
原因补充:

(最多只允许输入30个字)