Android studio 加载Java和资源文件出错

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android studio 加载Java和资源文件出错相关的知识,希望对你有一定的参考价值。

android studio 加载java文件出现乱码,其实文件是正常的;加载图片也加载不了;我的Android studio版本是3.5

检查是否编译了项目。Android studio有时候没有编译就会报出没有R文件的错误。
检查带代码中包名是否正确。有时候从其他地方复制代码过来时连带了包名,也会报出R文件找不到。
检查布局文件是否有语法错误。布局文件有语言错误时也会导致R文件错误。
软件抽风了,重建项目试试。
另外可能很多人不知道在哪儿找R文件,Android studio左上角有个选项,一般我们可能是选的Android模式,选择Packages模式找到你的项目,里面就可以看到R文件了
参考技术A 我也遇到了,出错的文件在外面可以打开,后面是把出错的文件复制到外面去打开copy内容粘贴回来才行。你后面是怎样解决的?

4.2Android Studio压缩你的代码和资源

为了让你的APK文件尽可能的小,你需要在构建的时候开启压缩来移除无用的代码和资源。

代码压缩可在ProGuard中使用,可以检测和清除无用的类,变量,方法和属性,甚至包括你引用的库。ProGuard同样可以优化字节码,移除无用的代码,并且模糊剩下的类,变量和方法。代码模糊可以让增加APK逆向工程的成本。

资源压缩可在Andorid的Gradle插件中使用,可以清除你打包的APP中无用的资源,包含你引用的库中的无用的资源。

压缩你的代码
为了启用ProGuard的代码压缩,需要在build.gradle中添加minifyEnabled true。

需要注意的是,代码压缩会拖慢构建速度,所以,如果可能的话,尽量避免在debug构建是使用。

如下:

android {
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘),
                    ‘proguard-rules.pro‘
        }
    }
    ...
}

注意:Android Studio在使用Instant Run时会禁用ProGuard。

自定义哪些代码需要保留
在很多情况下,ProGuard很难正确的去分析,它可能会清除你的app需要的代码。
1、 当你的app从AndroidManifest.xml中引用一个类时
2、 当你的app调用一个JNI方法
3、 当你的app使用反射来控制代码

为了避免这个问题,需要使用-keep,如下:
-keep public class MyClass

同样,可以添加@Keep注解来实现。

压缩你的资源
资源压缩需要跟代码压缩一起才能正常使用。在代码压缩出去所有的无用的代码之后,才能辨别哪些资源仍然未被使用。如下:

android {
    ...
    buildTypes {
        release {
            shrinkResources true
            minifyEnabled true
            proguardFiles getDefaultProguardFile(‘proguard-android.txt‘),
                    ‘proguard-rules.pro‘
        }
    }
}

自定义哪些资源需要保留
如果这里有些特别的资源你需要保留或丢弃,在你的项目中创建一个包含标签的XML文件,用tools:keep指明需要保留的资源,用tools:discard指明需要丢弃的文件。
比如:

<?xml version=1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools"
    tools:keep="@layout/l_used*_c,@layout/l_used_a,@layout/l_used_b*"
    tools:discard="@layout/unused2" />

本文作者:宋志辉
个人微博:点击进入

以上是关于Android studio 加载Java和资源文件出错的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Android Studio 的资源目录中读取 json 文件?

Android Studio中Android库和Java库的区别

Android Studio 3.5测试版加载SDK java源码

没有Android Studio的Android SDK出现错误“错误:无法找到或加载主类Files Android tools bin \”

如何在 Android Studio 中组织布局资源文件? [复制]

android studio:需要加载随机图像和顶部随机文本,然后将它们保存为 jpeg 以与其他应用程序共享