-
Notifications
You must be signed in to change notification settings - Fork 643
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
R文件不对!错误找不到符号 #11
Comments
麻烦发一下使用的fat-aar版本号、gradle plugin版本号以及gradle版本号。 |
com.kezong:fat-aar:1.1.7 |
现在可以使用maven插件上传,也是遇到了R文件问题,R文件确实存在,但是项目中引用的时候提示错误 |
看你的描述应该不是编译aar时的问题吧? 提供一下具体的错误信息吧,然后各个插件版本也提供一下。 |
可以的,example就是。 |
com.kezong:fat-aar:1.1.7 一样有问题 |
我确认问题了,底下某些依赖的aar内的R.txt包含了一些id,但是又没有在pom里带上对应的依赖。而fataar插件是通过把R.txt变成R.java来合并id的。能否考虑下还是使用R.txt的形式而不是搞成一个r-classes.jar?谢谢。 |
同问题 |
如果出现该问题,很有可能是子module需要整体打包,但是没有在主module中加入embed依赖。 |
用你的 example 确实可以成功,可在你 example 里加入 新建了个Activity(+layout布局),就开始报错! |
赞同 |
我这边试验过example里加Activity和layout是没有问题的,我有时间会更新example。 查看一下activity_ebl_wxentry所在的子module是否有被主library embed。 |
你说的正常情况,是不会出错的。 我们遇到的都是底下aar不规范的情况(R.txt带了一堆id,但是没有把对应的pom打进来),而且无法把这些缺失的依赖打进来(比如我这边定位到是support包,肯定不能embed进来)。 问题还是出在合并子aar的R.txt到r-classes.jar这个做法,会使这种不规范的aar在这种情况下引起错误。 临时的解法, @keke521 可以试试把这个aar的R.txt给清空,重新打一下这个aar,是可以成功的。 |
@zhoujian365 现在插件的做法是做了两步:
所以直接使用R.txt是无法实现资源合并的; |
tac_module_wechat依赖 tacsdk module 这个找不到的 layout id 就在这个 module 里! 实在不知道是为啥呢!求个 解决问题的方向 |
刚刚发现 我新建个项目 把这两个模块导进去,然后居然合并成功了!! |
我这些模块都是 项目里的 module 没有 R.txt, 如果全打成 aar ,再清空 R.txt 再合并,工作量太大了,我们是组件化的,module 异常的多😂 |
最终成功了!不知道为什么之前那个 主 lib 怎么都不成功,我又写个一毛一样(gradle 配置全一样)的 lib ,在新的 lib 里做合并,完美成功!可是最终都不知道 那个失败的 lib 出了什么问题! |
请问这个手动怎么过滤R.txt文件,这个R.text文件是在哪个文件夹下的 |
自己写个脚本解开你有问题的那个aar,清空R.txt,重新打成zip改名aar上传maven仓库
…------------------ Original ------------------
From: "Peter"<notifications@github.com>;
Date: Tue, Jul 9, 2019 10:41 AM
To: "kezong/fat-aar-android"<fat-aar-android@noreply.github.com>;
Cc: "周剑"<zhoujian365@foxmail.com>;"Mention"<mention@noreply.github.com>;
Subject: Re: [kezong/fat-aar-android] R文件不对!错误找不到符号 (#11)
@zhoujian365
我了解你的意思了,现在确实没有办法解决这种问题,因为一个aar中只能包含一个R.txt,如果仅仅只是将R.txt合并是不够的,因为这样会在打包apk的时候,将所有R.txt中的资源全都生成在该aar的packageName的包名下,这样就导致原来子module中import的其实是子module包名下的R,而在最后apk中,R却变到了主aar的包名下,导致子module中R类找不到。
现在插件的做法是做了两步:
将所有R.txt合并,这样最后生成apk时,会统一生成主module包名下的R.class文件
根据所有子module的R.txt生成r-classes.jar,目的是做一层映射,将所有的子module包名下的R全部映射到主module的R。
所以直接使用R.txt是无法实现资源合并的;
至于你的这种情况,我现在能想到的是能不能做一个资源检查,查看R.txt中的资源是否真正存在,如果不存在的话将该行过滤掉。
目前的话,建议你们手动过滤下R.txt文件。
请问这个手动怎么过滤R.txt文件,这个R.text文件是在哪个文件夹下的
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or mute the thread.
|
最后怎么解决的?我用最新的fat-aar也出现了这个问题。 |
这个R 文件路径不对,不是这个包名下的,不知道为啥一直报找不到这个
The text was updated successfully, but these errors were encountered: