-
Notifications
You must be signed in to change notification settings - Fork 642
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in 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: