簡體   English   中英

通過jenkins將jvm參數傳遞給ant混淆了android構建工具

[英]Passing jvm argument to ant via jenkins confuses android build tools

我試圖將第三方監視解決方案(New Relic)集成到我的Android應用程序中,該應用程序使用基於螞蟻的構建。 集成說明說要在執行ant命令執行構建之前將ANT_OPTS環境變量設置為-javaagent:{path to a jar file}

當我從命令行手動啟動我的ant構建時,此方法可以正常工作。

但是,我們也通過詹金斯(Jenkins)啟動了螞蟻構建。 在Jenkins構建配置中,有一個部分用於配置您的ant構建。 在本節中,有一個名為“ Java選項”的條目。 通過搜索其他地方,我已經收集了放置JVM參數的地方。 通常,人們希望增加最大堆大小等。

因此,我將其放在“ Java選項”部分中:

-javaagent:{path to a jar file}

但是,Jenkins構建在Android“ -dex”目標期間失敗,如下所示:

  [dex] input: /Users/builduser/.jenkins/jobs/Android - Latest/workspace/android/bin/proguard/obfuscated.jar
  [dex] [newrelic.info] Detected the New Relic Android agent in an Ant build (/Users/builduser/.jenkins/jobs/Android - Latest/workspace/android/bin/proguard/obfuscated.jar)
  [dex] Converting compiled files and external libraries into /Users/builduser/.jenkins/jobs/Android - Latest/workspace/android/bin/classes.dex...
   [dx] Unrecognized option: -
   [dx] Could not create the Java virtual machine.

我懷疑這不是Google / Android問題,因為當我設置ANT_OPTS並從命令行啟動構建時,這些構建成功。 Jenkins處理JVM args的方式有些棘手,並且混淆了Android構建工具。

有人有解決方法嗎?

作業名稱中包含空格(“”)時,這似乎只是一個問題。 然后,只有在ant插件部分中將“ -javaagent:{jar}”指定為“ Java Option”時才可以。 我克隆了我的工作,並使用沒有空格的名稱,構建成功。 仍然不確定這是Jenkins ant插件還是Google的“ dx”可執行文件存在問題,但是現在我傾向於后者。

這可能與Proguard發生沖突,盡管此Proguard部分位於New Relic文檔站點上,但不在New Relic用戶界面內的安裝說明中:/

1)將新遺物排除項添加到您的應用中,方法是將其添加到您的proguard.cfg文件中:

-keep class com.newrelic.** { *; }
-dontwarn com.newrelic.**
-keepattributes Exceptions, Signature, InnerClasses

2)清理您的項目,然后在模擬器或設備中運行您的應用程序以開始查看數據。

鏈接到相關文檔。 由於最近出現了許多Proguard沖突,因此我正在為New Relic修改文檔和幫助文本。

如果仍然失敗,請通過support.newrelic.com與支持部門聯系,我們可以進行調查。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM