这种问题是说R.java文件没有起作用。一般比较常见的原因总结如下: 1.检查res文件夹下除了文件夹 有没有其他文件。 ...,这样会清除掉旧版本的各种生成文件,并产生最新的项目生成文件,跟新R文件; 右键项目,Android Tools——Fix Project Properties,会修复项目中的问题 检查完, clean
R.java 文件结构 R.java 是自动生成的,它包含了应用内所有资源的名称到数值的映射关系。...先创建一个最简单的工程,看看 R.java 文件的内容: R文件生成的目录为app/build/generated/not_namespaced_r_class_sources/xxxxxDebug.../processXXXXDebugResources/r/com/xxx/xxx/R.java R.java 内部包含了很多内部类:如 layout、mipmap、drawable、string、id...如果我们采用组件化开发或者在工程里创建多个 module ,你会发现在每个模块的包名下都会生成一个 R.java 文件。...我们可以看一下,这个是app module下的R.java 这个是module下的R.java 可以很明显发现app下是常量,library下是静态的变量 在编译期间获取索引常量值有很多种方法
博主第一次安装Android Studio 3.6版本的时候就找不到R.java文件,于是在网上找个各种方法,但是都没能解决问题。 ?...注意:本博文是针对R.java找不到但是不会出现红色报错标识的情况,如果出现红色报错的请不用看本文剩余部分啦! ?...3,使用了全局搜索(按两次S键)还是找不到R.java 解决方法: 其实,找不到也没关系,不需要硬是得找出来才罢休。...至少目前我还没有到非得打开R.java文件查东西的地步,在创立组件和主Java文件连接的时候用R.xxx.xxx的方式就行了。...所以本文只是想告诉朋友们可以先放一放找不到R.java的问题,因为暂时用不着,没有太大影响~ 到此这篇关于新版Android Studio3.6找不到R.java怎么处理的文章就介绍到这了,更多相关Android
大家好,又见面了,我是全栈君 1.src文件:java源码存放文件夹 2.gen 文件:自己主动生成全部由android开发工具自己主动生成的文件,文件夹中最重要的就是R.java文件,这个文件由...android开发工具会自己主动依据你存放res文件夹的资源,同步更新修稿R.java文件,正由于 R.java文件是由开发工具自己主动生成的,所以我们应避免手工改动R.java。...R.java文件在应用中起到了字典的作 用,它包括了各种资源的ID,通过R.java,应用能够非常方便的找到相应资源, 2.1R.java :用于登记各种资源的ID。...可是在/assets文件夹下得资源文件不会再R.java自己主动生成ID,所以读取/assets文件夹下的文件必须指 定文件的路径。
一,资源获取 getResource传入R.资源名称,通过资源名称可以找到对应的资源ID(通过R.java文件保证),之后AssetManager通过资源ID找到对应的资源文件名称(通过arsc文件保证...需要在aapt第一步整理生成对应的R.java(对应编译类型会生成不同的R文件varint)进行拦截,捕获原始的r.java文件修改之后编译为class存储起来。...第二种 只需简单修改task名字即可,不需要根据不同sdk平台生成不同的aapt。复用性强。...缺点:需要修改的地方较多:1.生成R.java时还须修改完再次手动调用javac编译为class存储2.进行javac时在用之前生成的class。...因此可以进行优化,提炼出一份名单位于这个名单里面的资源可以进行删除,时机是在生成我们修改后的R.java文件时我们可以根据这个名单删除对应资源 该方案是基于方案二提出的(方案一也可以进行该处理,只不过方案二更顺理成章
当我们在Android依赖库中使用switch-case语句访问资源ID时会报错,报的错误是case分支后面跟的参数必须是常数,换句话说出现这个问题的原因是Android library中生成的R.java...当我们把一个android的项目配置为library时,我们就不能在 这个项目中使用switch case,原因就是 library库中的 生成的R.java中的资源ID不是常数,所以需要我们换一种写法...但是当你打开你的主工程,在onClick、onItemClick等各种回调方法中是可以通过switch-case语句来访问资源ID的,因为在主工程的R.java中资源ID都被声明为了final常量。 ...既然是由于library的R.java中的资源ID不是常量引起的,我们可以在library中通过if-else-if条件语句来引用资源ID,这样就避免了这个错误。
前言 大家都知道 Android 项目中会通过自动生成一个 R.java 类的方式来保存项目中所有资源文件的标识。...在主项目中生成的 R.java 中的资源声明是一个静态常量,而在 module 中它却是一个静态变量。这是为什么呢?...主项目中 比如你在主项目中创建了一个 activity_main.xml 的布局文件,则 R.java 中会自动加入一行如下静态常量。...module 编译后的代码中该资源会被替换成值;第二,当该 module 被添加到主项目中后,如果主项目中有一个同样名称的资源,那么 module 中的该资源就会被替换;第三,主项目中会重新针对该资源生成一个...当然使用butterknife编译后的字节码中使用的还是R.java中的资源声明。
谢榭: 自问自答吧 呵呵 第一步:打包资源文件,生成R.java文件 【输入】Resource文件(就是工程中res中的文件)、Assets文件(相当于另外一种资源,这种资源Android系统并不像对res...中的文件那样优化它)、AndroidManifest.xml文件(包名就是从这里读取的,因为生成R.java文件需要包名)、Android基础类库(Android.jar文件) 【输出】打包好的资源(一般在...Android工程的bin目录可以看到一个叫resources.ap_的文件就是它了)、R.java文件(在gen目录中,大家应该很熟悉了) 【工具】aapt工具,它的路径在${ANDROID_SDK_HOME...【工具】aidl工具 第三步:编译Java文件,生成对应的.class文件 【输入】源码文件(包括R.java和AIDL生成的.java文件)、库文件(.jar文件) 【输出】.class文件 【工具...】javac工具 第四步:把.class文件转化成Davik VM支持的.dex文件 【输入】源码文件(包括R.java和AIDL生成的.java文件)、库文件(.jar文件) 【输出】.class文件
先说APK构建过程 下面来简单描述下apk构建的过程: 使用aapt生成R.java类文件 使用android SDK提供的aidl.exe把.aidl转成Java文件 使用javac命令编译.java...类文件生成class文件 使用android SDK提供的dx.bat命令行脚本生成classes.dex文件 使用android SDK提供的aapt.exe生成资源包文件 使用apkBuilder.bat...构建命令详解 aapt命令生成R.java文件 示例命令: aapt package -m -J -S -I -M 命令解释: -f 如果编译出来的文件已经存在,强制覆盖 -m 使生成的包的目录存放在-J参数指定的目录 -J 指定生成的R.java 的输出目录 -S res文件夹路径 -A...-m -J -S -I -A -M -F <resources.ap
在生成最终 APK 之前,打包器会使用 zipalign工具对应用进行优化,以减少其在设备上运行时所占用的内存。...image.png 详细的对应步骤 和 使用工具如下: 1. aapt打包资源文件 资源文件(res文件夹下的文件)通过 AAPT(Android Asset Packaging Tool)打包生成R.java...如果有aidl文件,这个阶段会生成对应的Java接口文件。 3. 编译(Compilers) R.java文件、工程源码文件、aidl.java文件, 在这一步通过javac生成.class文件。...注解处理器在这一步会进行工作,生成相应的代码 如果配置了代码混淆,也会在生成.class 文件时候进行配置,最终的.class文件混淆后可以防止被反编译 4. dex(生成dex文件) 源码.class...res/raw和assets的不同点: 1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java
配置文件,strings.xml等的字符串全部书写正确 5.layout的xml文件中引用的strings.xml中的字符串拼写完全正确 6.在layout 的xml文件手写添加一个控件,看id能否在R.java...中自动生成,如果不能,那很大可能就是这个layout 的xml文件有问题,查看格式是否使用正确,或者包含什么非法字符串,或者调用到了不正确的字符串,等等,可以使用排除法,挨个去掉控件,直到发现error...message消失或者id能在R.java中自动生成。...7.删掉gen文件夹,使R.java重新自动生成一次,如果不能生成,继续检查layout的xml文件是否有如上不易发觉的问题 8.Clean project ,重新build,或者重新import project
R.Java文件和resources.arsc文件,里面保存了资源的ID和在APK中的路径。...将所有.java文件(包括R文件和AIDL生成的.java文件),通过javac工具生成class文件。...将生成的.class文件和第三方库的.class文件通过dx工具生成classes.dex文件(如果有分包,那么可能有多个)。...答:aapt工具对于每个资源文件生成了唯一的ID,这些ID保存在R.java文件中。...通过R.java文件和resources.arsc配合,就能引用到实际的资源文件。 2. 打包流程中的的对齐是什么,为什么要对齐?
11.Android工程的目录结构 src/ java源代码存放目录 gen/ 自动生成目录 gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。...Android开发工具会自动根据你放入res目录的资源,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。...R.java在应用中起到了字典的作用,它包含了各种资源的id,通过R.java,应用可以很方便地找到对应资源。...另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。...assets资源目录 Android除了提供/res目录存放资源文件外,在/assets目录也可以存放资源文件,而且/assets目录下的资源文件不会在R.java自动生成ID,所以读取/assets目录下的文件必须指定文件的路径
1.assets:不会在R.java文件下生成相应的标记,存放到这里的资源在运行打包的时候都会打入程序安装包中 2.res:会在R.java文件下生成标记,这里的资源会在运行打包操作的时候判断哪些被使用到了...*res/raw和assets的不同点: 1.res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java
,那里写代码就差不多了 我们在学习asp.net也没有刻意去了解bin下的dll吧 全局配置文件,视图,控制层都还是比较容易理解,同样有样式,图片,资源文件等等,但是Android把这些资源文件注册到R.java...里面,所以我们要通过R.java来调用这些文件。...不能像.net拉拽生成 其中MainActivity.java是程序的入口,等于我们MVC的路由设置 protected void onCreate(Bundle savedInstanceState)...也就是我们软件启动的第一屏R.layout也看出我们的组件是注册到R.java里面的
Android 打包流程: image.png 具体的打包步骤如下: 1:生成R.java类文件:Eclipse中会自动生成R.java,ant和命令行使用androidSDK提供的aapt.exe程序生成...R.java. 2:将.aidl文件生成.java类文件:Eclipse中自动生成,ant和命令行使用androidSDK提供的aidl.exe生成.java文件。...3:编译.java类文件生成class文件:Eclipse中自动生成,ant和命令行使用jdk的javac编译java类文件生成class文件. 4:将class文件打包生成classes.dex文件:...Eclipse中自动生成,ant和命令行使用androidSDK提供的dx.bat命令行脚本生成classes.dex文件。...5:打包资源文件(包括res、assets、androidmanifest.xml等):Eclipse中自动生成,ant和命令行使用AndroidSDK提供的aapt.exe生成资源包文件 6:生成未签名的
AAPT打包机制 在AAPT打包的过程中会将res中除了raw和assets之外的资源(如layout、string、drawable等等)打成二进制文件,并且生成R.java以及resources.arsc...R.java中存放着各个Type对应的id: public static int Base_Widget_AppCompat_ImageButton = 0x7f16008b; 其中: 前两位代表包...AssetsPath路径中查找resources.arsc资源表,匹配资源表中的包名 匹配到后,根据Type来找到对应的资源类型表 在资源Type表中匹配Name,找到ID 在标准的Gradle打包中,R.java...需要将插件中所使用的资源ID按不同插件的包名进行区分,因为AAPT默认会从0x7f开始进行分配 解决方案有多种: 修改aapt,为插件分配不同的pakcageId,然后将引用R.id的地方修改为常量 修改aapt过后的R.java...文件,合并多个插件的R.java文件,并且重新分配R.java中的id常量,并且重写resources.arsc文件 遇到的问题 由于在Manifest.xml中定义的Activity最后还是会merge
,看到的同学欢迎指正错误》 整个apk打包的流程图: 使用Android Asset Packaging Tool(aapt) ,将AndroidManifest.xml和res下的资源编译生成...R.java文件,这样java文件就可以去引用资源了 - 使用aidl 工具去生成对应的Java interfaces - 将src和通过aapt生成的R.java,.aidl文件通过javaC命令去生成...所有没有编译过的图片和编译过的图片(compiled resources)以及.dex文件传给apkbuilder去打包成.apk ,最后采用zipalign tool 打入签名生成可运行的apk安装包
R.java文件 【输入】Resource文件(就是工程中res中的文件)、Assets文件(相当于另外一种资源,这种资源Android系统并不像对res中的文件那样优化它)、AndroidManifest.xml...文件(包名就是从这里读取的,因为生成R.java文件需要包名)、Android基础类库(Android.jar文件) 【输出】打包好的资源(一般在Android工程的bin目录可以看到一个叫resources.ap..._的文件就是它了)、R.java文件(在gen目录中,大家应该很熟悉了) 【工具】aapt工具,它的路径在${ANDROID_SDK_HOME}/platform-tools/aapt(如果你使用的是Windows...【工具】aidl工具 第三步:编译Java文件,生成对应的.class文件 【输入】源码文件(包括R.java和AIDL生成的.java文件)、库文件(.jar文件) 【输出】.class文件 【...工具】javac工具 第四步:把.class文件转化成Davik VM支持的.dex文件 【输入】 .class文件(包括Aidl生成.class文件,R生成的.class文件,源文件生成的.class
gen BuildConfig.java:自动生成的配置文件,如下图所示: ? 表示当前为调试模式, 可以看见各种调试信息(比如log),如果打包发布则会自动变为fals....R.java:用来记录静态对象(比如用户界面、字符串、图片、声音等)的资源索引文件,对某个静态对象进行ctrl+左键可以快速定位到具体文件中,如下图所示: ?...android/support/v4目录下.v4表示只要版本在Android1.6(API4)以上的,都支持. assets 中文翻译过来叫资产,放置一些文件资源,这些文件会被原封不动打包到apk里面,并且不会在R.java...文件下生成相应的标记 bin 该目录用于存放生成的目标文件,例如Java的二进制文件、资源打包文件(.ap_后缀)、Dalvik虚拟机的可执行性文件(.dex后缀),打包好应用文件(.apk后缀)等。...libs 存放要被调用的jar包. res 会在R.java文件下生成标记,这里的资源会在运行打包操作的时候判断哪些被使用到了,没有被使用到的文件资源是不会打包到安装包中的。
领取专属 10元无门槛券
手把手带您无忧上云