发布的apk应用程序的android.content.res.Resources.NotFoundException

时间:2013-09-17 17:36:10

标签: android ant

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

  1. 删除gen / bin文件夹
  2. 清洁
  3. 布局不存在(确实如此,它位于我的res / layout文件夹中)
  4. 不使用android.R
  5. 我忘了其余的但是你得到了照片......
  6. 情况就是这样。

    我有一个Android应用程序,在调试模式下,工作正常,但当我创建发布apk通过蚂蚁,抛出和异常android.content.res.Resources$NotFoundException: Resource ID #0x7f03004a当我尝试启动它后,由ant build安装apk生成。在我添加android facebook3.5 sdk之前没有发生这种情况。

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

    ant release-all

    与此对应的build.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>
    

3 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

坚持了几天,但终于找到了解决方案。我在build.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之前这个错误是不存在的。

答案 2 :(得分:0)

在我的情况下,既没有Project-&gt; Clean也没有ant clean工作。在我取消选择jdk并在Preferences - &gt; Installed JREs

下选择jre后问题得以修复