我知道这不是第一次提出这个问题,但我尝试了所有应该是解决方案但却无济于事的事情。
情况就是这样。
我有一个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>
答案 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后问题得以修复