我知道这不是第一次问这个问题,但我尝试了所有应该成为解决方案的事情,但无济于事。
- 删除生成/宾文件夹
- 干净 布局
- 不存在(它确实存在,它在我的 res/布局文件夹中)
- 不使用安卓。R
- 我忘记了其余的,但你明白了...
情况是这样的。
我有一个 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 后,问题已修复