2012-03-29 105 views
2

我想在命令行模式下使用ant建立我的android項目。 它與Eclipse一起工作,它用來與螞蟻一起工作,直到我安裝了最新的android sdk。我運行ant release -buildfile projectdir\build.xml。編譯過程沒問題,在對齊apk之後,它在運行時會失敗ClassDefNotFoundError acra.ACRA。 我試圖從項目中刪除對acra的任何引用,但在嘗試執行來自庫jar的任何代碼時,它在運行時會失敗。與螞蟻建設android項目

我的罐子位於項目根目錄下的libs文件夾中。我有點理解這將導致螞蟻將它們鏈接到apk。但事實並非如此。

當我使用以前版本的android sdk時,我有一個名爲build.properties的文件,它具有引用jars文件夾external.libs.dir=libs的屬性。但是現在我無法再繼續工作了,即使我使用新的屬性名稱jar.libs.dir=libs和新的屬性文件名稱ant.properties

我讀到ClassDefNotFoundError是因爲在編譯時找到了庫,但它們沒有鏈接到apk中,所以在運行時無法找到它們。 如何連接APK中的外部罐子?

+0

你的私人build.xml不會引用「jar.libs.ref」嗎? – NickT 2012-03-29 21:06:30

+0

不,它沒有提到這一點,build.xml是由android工具'android.bat'生成的,而不是由我生成的。 – Joel 2012-03-29 21:09:42

+0

哦,只是一個想法,我想知道如果你仍然有一箇舊的r16兼容的build.xml。我恐怕沒有任何建議。 – NickT 2012-03-29 21:11:34

回答

2

編譯過程是確定的,並對準APK後,它在運行時失敗,ClassDefNotFoundError acra.ACRA

沒有acra.ACRA類ACRA,至少在當前版本。它是org.acra.ACRA

我的罐子在項目根目錄下的libs文件夾中。我有點理解這將導致螞蟻將它們鏈接到apk。但事實並非如此。

是的,它的確如此。然後ProGuard將它們移除,unless you teach ProGuard not to

+0

是的,它是org.acra.ACRA,我已經很久以前在proguard.cfg中添加了這些行,但現在它不再工作了,因爲我已經安裝了最新的android sdk。 – Joel 2012-03-29 21:03:21

+0

你可以在你提供的鏈接中看到我在說什麼,最後的評論正是我所擁有的問題。不幸的是,它沒有提供答案。 – Joel 2012-03-29 21:04:50

+1

@Joel:如果你使用的是R17工具,它不再使用'proguard.cfg':http://tools.android.com/recent/proguardimprovements看看調整到新的設置是否有幫助。另外,您可以使用'ant debug'來測試以確認問題與ProGuard相關。 – CommonsWare 2012-03-29 21:07:30