android.content.res.Resources.NotFoundException on released



我知道这不是第一次问这个问题,但我尝试了所有应该成为解决方案的事情,但无济于事。

  1. 删除生成/宾文件夹
  2. 干净
  3. 布局
  4. 不存在(它确实存在,它在我的 res/布局文件夹中)
  5. 不使用安卓。R
  6. 我忘记了其余的,但你明白了...

情况是这样的。

我有一个 android 应用程序,在调试模式下工作正常,但是当我通过 ant 创建发布 apk 时,当我在安装 ant 构建生成的 apk 后尝试启动它时,会抛出和异常android.content.res.Resources$NotFoundException: Resource ID #0x7f03004a。 在我添加Android Facebook3.5 SDK之前,这并没有发生。

当我发布时,我通常只需输入:

ant release-all

与之

对应的构建.xml如下所示(代码片段):

<target name="release-all">
    <record name="logfile.txt" action="start" append="false" />
    <taskdef resource="net/sf/antcontrib/antlib.xml">
        <classpath>
            <pathelement location="${antcontrib.dir}"/>
        </classpath>
    </taskdef>
    <for list="${unis}" param="uni">
        <sequential>
            <echo>Number @{uni}</echo>
            <var name="university.name" value="@{uni}"/>
            <echo>Building University Name ${university.name}</echo>
            <subant
                buildpath="build.xml"
                failonerror="true">
                <target name="clean" />
                <target name="release" />
            </subant>
            <echo>--------</echo>
            <echo>Copying files to dropbox</echo>
            <copy todir="${dropbox.dir}/<somepaththatiwillnotspecify>">
                <fileset dir="${out.absolute.dir}">
                    <include name="*release.apk"/>
                </fileset>
                <mapper type="glob" from="*release.apk" to="@{uni}.apk"/>
            </copy>
            <var name="university.name" unset="true"/>
        </sequential>
    </for>
    <record name="logfile.txt" action="stop"/>
</target>

您是否尝试过调整proguard.cfg中的设置。 我通常会在 proguard 混淆东西时得到这个,它包括不应该包含的项目。 也许您可以尝试以下设置:

-dontwarn com.somenameoflibrary.**-keep class somenameoflibary.** { *; }

坚持了好几天,但终于找到了解决方案。 我在构建中定义了目标.xml ( 见下文 )

<target name="-package-resources" depends="-crunch">
     <exec executable="${aapt}" failonerror="true">
        <arg value="package" />
        <arg value="-f" />
        <arg value="--auto-add-overlay" />
        <arg value="-M" />
        <arg path="${basedir}/AndroidManifest.xml" />
        <arg value="-S" />
        <arg path="${resource.absolute.dir}" />
        <arg value="-S" />
        <arg path="${basedir}/${android.library.reference.1}/res"/>
        <arg value="-A" />
        <arg path="${asset.absolute.dir}" />
        <arg value="-I" />
        <arg path="${android.jar}" />
        <arg value="-F" />
        <arg path="${out.absolute.dir}/${resource.package.file.name}" />
        <arg value="--rename-manifest-package" />
        <arg value="pokit.campus.${university.name}" />
    </exec>
</target>

${basedir}/${android.library.reference.1}/res和它之前的-S被评论了。我只是取消评论它,事情奏效了。我不太确定原因,但我认为取消评论是合乎逻辑的,因为我最近添加了 facebook-sdk 库,如您所知,在使用 facebook-sdk 之前

不存在此错误。

就我而言,项目>清洁和蚂蚁清洁都不起作用。在我取消选择 jdk 并在首选项 ->已安装的 JRE 下选择 jre 后,问题已修复

相关内容

  • 没有找到相关文章

最新更新