ANT ビルド ツールを使用して Android アプリケーションをビルドしています。
- dexgaurd を使用してローカル マシンで実行すると、正常にビルドされます。
- dexgaurd を使用しない場合、サーバー上で正常に動作します。
- dexgaurd を使用すると、サーバーで失敗します。
サーバー仕様:
total used free shared buffers cached
Mem: 7978 7328 649 0 32 391
-/+ buffers/cache: 6904 1073
Swap: 8188 486 7702
以下はエラーです:
[dexguard] java.lang.OutOfMemoryError: PermGen space
[12:10:04]
[dexguard-package-helper] The following error occurred while executing this line:
/abc/def/custom_rules.xml:60: java.lang.OutOfMemoryError: PermGen space
[12:10:04]
[ant] The following error occurred while executing this line:
/abc/def/custom_rules.xml:127: The following error occurred while executing this line:
/abc/def/custom_rules.xml:60: java.lang.OutOfMemoryError: PermGen space
エラーが発生する行は次のとおりです。
<dexguard
verbose="${verbose}"
keystore="${key.store}"
keystorepassword="${key.store.password}"
keyalias="${key.alias}"
keypassword="${key.alias.password}"
printseeds="${obfuscate.absolute.dir}/seeds.txt"
printusage="${obfuscate.absolute.dir}/usage.txt"
printmapping="${obfuscate.absolute.dir}/mapping.txt"
60 - > configuration="@{configuration}">
<configuration file="proguard-project.txt" />
<configuration file="dexguard-project.txt" />
<configuration file="dexguard-project-${build.target}.txt" />
<dexguard-options />
<libraryjar refid="project.target.class.path" />
</dexguard>
<dexguard-package-helper
127 -> configuration="${dexguard.dir}/lib/dexguard-${build.target}.pro">
<dexguard-options>
<injar path="${out.classes.absolute.dir}" filter="**.class" />
<injar path="${source.absolute.dir}" filter="!**.java,!.hg**,!**/.hg**,!.git**,!**/.git**,!.svn**,!**/.svn**,!CVS,!CVS/**,!**/CVS,!**/CVS/**,!.cvsignore,!**/.cvsignore,!SCCS,!SCCS/**,!**/SCCS,!**/SCCS/**,!**.orig,!**~,lib/*/*.so,!**.so,!**.keep,!**.DS_Store,!**.aidl,!**.rs,!**.rsh,!**.d,!**.java,!**.scala,!**.scc,!**.swp,!**.bak,!**thumbs.db,!**picasa.ini,!**package.html,!**overview.html,!**.AIDL,!**.RS,!**.RSH,!**.D,!**.JAVA,!**.SCALA,!**.SCC,!**.SWP,!**.BAK,!**THUMBS.DB,!**PICASA.INI,!**PACKAGE.HTML,!**OVERVIEW.HTML" />
<injar refid="project.all.jars.path" filter="!org/w3c/dom/**,!org/xml/sax/**,!org/xmlpull/v1/**,!org/json/JSON*,!org/apache/commons/logging/Log.class,org/apache/http/Consts.class,org/apache/http/HttpHeaders.class,org/apache/http/entity/ContentType.class,org/apache/http/util/Args.class,org/apache/http/util/Asserts.class,org/apache/http/util/CharsetUtils.class,org/apache/http/util/NetUtils.class,org/apache/http/util/TextUtils.class,!org/apache/http/*,!org/apache/http/auth/*,!org/apache/http/auth/params/*,!org/apache/http/client/*,!org/apache/http/client/entity/*,!org/apache/http/client/methods/*,!org/apache/http/client/params/*,!org/apache/http/client/protocol/*,!org/apache/http/client/utils/*Utils.class,!org/apache/http/conn/*,!org/apache/http/conn/params/*,!org/apache/http/conn/routing/*,!org/apache/http/conn/scheme/*,!org/apache/http/conn/ssl/*,!org/apache/http/conn/util/*,!org/apache/http/cookie/*,!org/apache/http/cookie/params/*,!org/apache/http/entity/*,!org/apache/http/impl/*,!org/apache/http/impl/auth/*,!org/apache/http/impl/client/*,!org/apache/http/impl/conn/*,!org/apache/http/impl/conn/tsccm/*,!org/apache/http/impl/cookie/*,!org/apache/http/impl/entity/*,!org/apache/http/impl/io/*,!org/apache/http/io/*,!org/apache/http/message/*,!org/apache/http/params/*,!org/apache/http/protocol/*,!org/apache/http/util/*,META-INF/services/**,!META-INF/**,!.hg**,!**/.hg**,!.git**,!**/.git**,!.svn**,!**/.svn**,!CVS,!CVS/**,!**/CVS,!**/CVS/**,!.cvsignore,!**/.cvsignore,!SCCS,!SCCS/**,!**/SCCS,!**/SCCS/**,!**.orig,!**~,**.class,lib/*/*.so,!**.so,!**.keep,!**.DS_Store,!**.aidl,!**.rs,!**.rsh,!**.d,!**.java,!**.scala,!**.scc,!**.swp,!**.bak,!**thumbs.db,!**picasa.ini,!**package.html,!**overview.html,!**.AIDL,!**.RS,!**.RSH,!**.D,!**.JAVA,!**.SCALA,!**.SCC,!**.SWP,!**.BAK,!**THUMBS.DB,!**PICASA.INI,!**PACKAGE.HTML,!**OVERVIEW.HTML" />
<injar path="${out.native.libs.absolute.dir}" filter="lib/*/*.so" />
<injar path="${out.absolute.dir}/${resource.package.file.name}" />
<outjar path="${out.final.file}" />
</dexguard-options>
</dexguard-package-helper>
以下は、環境変数とその値です: ANT_OPTS
[echo] ant build config -Xms1024m -Xmx2048m -XX:PermSize=1024m -XX:MaxPermSize=2048m -XX:+UseConcMarkSweepGC -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled
XX:MaxPermSize を 4096 に変更しましたが、それでも同じエラーが発生します。-Xms -Xmx -XX の値に関係なく、この時点で一貫して失敗します。環境が正常に機能するように、環境に他の値を追加する必要がありますか。この種の問題の一般的な解決策は、-XX:MaxPermSize のメモリ値を増やすことですが、役に立ちません。
詳細コンテキスト: アリは 8 つのアプリケーションを構築します。ビルドは 6 番目のアプリケーションまで正常に動作し、それらのすべてに同様の custom_rules.xml ファイルがあります。しかし、7番目のアプリケーションをビルドしているときに失敗します。
さらに情報が必要な場合は、コメント セクションに記載してください。追加します。私はこの問題に関して多くのことをグーグルで検索し、ソリューションを使用して解決しようとしましたが、成功しませんでした.