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展开的,这就很难联想了。。。绞尽乳汁啊。。

版权声明:本文为博主原创文章,欢迎注明出处后转载。

一步一步搭建ReactNative开发环境(Mac)

1 环境搭建 React Native主要依赖以下环境。 Mac OS X操作系统。 推荐使用Xcode 7.3.0或者更高版本。 安装Node.js v6.2.1或者最新版本...
  • bluewindaa
  • bluewindaa
  • 2016年09月09日 16:14
  • 2422

史前巨坑-包的使用

我们都知道,使用包时,都需要在文件夹里有__init__.py文件 我们使用模块时,为了方便,一般都是相对导入from . import **,但是这里有个好几个大坑, 相对引用的模块不能作为主...
  • weixin_38295610
  • weixin_38295610
  • 2017年08月07日 16:40
  • 100

(巨坑)长期经验总结

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

“加密系统”的巨坑

在来公司之前,我压根就不知道这世界上原来还有“加密系统”这种软件产品存在,学名叫数据防泄漏,也怪我孤陋寡闻了。因为之前在厦门从来没听说过哪家公司有在用加密系统。当然,每家公司都有自己独特的管理需求,也...
  • mengxin523
  • mengxin523
  • 2016年11月02日 23:28
  • 233

Android_高清加载巨图方案 拒绝压缩图片

原文出处:http://blog.csdn.net/lmj623565791/article/details/49300989 一、概述距离上一篇博客有段时间没更新了,主要是最近有些私事导致的,那么就...
  • strawberry2013
  • strawberry2013
  • 2015年10月27日 18:02
  • 1793

巨坑OC笔试题!!!

※ 选择题(共80题,每题1分) 1、 以下代码执行后,person对象的retain count是多少: Person * person = [[Person alloc] init]; [pe...
  • zy450142987
  • zy450142987
  • 2015年10月08日 11:35
  • 1479

详解struts-2.3.32的配置(巨坑)

这几天被这个struts的配置问题搞得我晕头转向,因为网上自己找了几个学习struts2的视频可是,再次提醒,由于一些视屏比较落后,可是现在struts2又是更新到了2.5了,所以难免有很多描述的有出...
  • Yiyuan_chen
  • Yiyuan_chen
  • 2017年04月12日 14:05
  • 2204

[Erlang]巨坑第二弹

任何语言在使用中都会遇到这样那样的问题,erlang也是。这里整理下我遇到的一些问题,避免继续踩坑。说实话,“防坑指南”这个标题有点过于标新立异,不过还是希望能引起重视,避免在实际开发中重复犯这些问题...
  • abv123456789
  • abv123456789
  • 2015年05月28日 14:57
  • 1200

巨杉数据库SequoiaDB的常用操作

巨杉数据库的基本操作。巨杉可以通过nosql的方式对数据库进行操作,也可以通过自带的sql对对数据库进行操作。但是自带的sql方式比较弱,有以下缺点: 1.语法比较苛刻,关键字as不能省略,如sele...
  • gdmzlhj1
  • gdmzlhj1
  • 2017年07月02日 13:23
  • 793

SequoiaDB巨杉数据库的分区类型和分区方式

在SequoiaDB中有三种分区类型:水平分区:水平分区又称为数据库分区或横向分区。在 SequoiaDB 集群环境中,用户可以通过将一个集合中的数据切分到多个复制组中,以达到并行计算的目的,此数据切...
  • SequoiaDBOfficail
  • SequoiaDBOfficail
  • 2016年10月14日 14:59
  • 1489
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Mac 下打包APK的血泪坑(巨坑,巨巨坑,史前巨坑)
举报原因:
原因补充:

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