[英]Configure specific package for generated classes in ADT / ant build
我正在為使用完全相同的代碼的各種客戶開發一個應用程序(它只顯示一個WebView
)。 唯一的區別是一個配置文件,圖標和android程序包名稱,它們都是通過自定義ant任務生成的。
如果我運行ant發布目標或在eclipse中構建項目,則生成的Java類(如R
)將在名為android包的包中生成。 結果,在我的項目中這些類的導入無效,因為它們的包已更改。
新聞網
package ch.newsnet.app;
import ch.newsnet.app.R; // <- cannot be found after build
public class Newsnet extends FragmentActivity {
//...
}
運行我的自定義ant目標會將我的android軟件包設置為ch.customer1.app
,這將使R成為ch.customer1.app
軟件包的類。 但我希望它始終是ch.newsnet.app
。 如何在a)螞蟻構建和b)在eclipse構建器中實現該目標? 當我可以在一個代碼庫中擁有全部項目時,我不想設置20多個項目並維護其buildfile和資源。
對於那些面臨相同問題的人,我按以下方法解決了此問題(盡管這不是最佳解決方案,但對我有用):
我創建了ant目標moveGeneratedFiles,在其中將生成的程序包復制到正確的程序包,替換程序包名稱並刪除生成的程序包(由於再次將生成類,因此在eclipse中不會真正起作用)。
<target name="moveGeneratedFiles">
<loadproperties>
<file file="assets/customer.properties"/>
</loadproperties>
<copy todir="gen/ch/newsnet/app" overwrite="true">
<fileset dir="gen/ch/${customer.name}/app" />
</copy>
<replace dir="gen/ch/newsnet/app" token="package ch.${customer.name}.app;" value="package ch.newsnet.app;" />
<delete>
<fileset dir="gen/ch/${customer.name}/app" />
</delete>
</target>
在項目屬性中,我添加了一個執行此目標的螞蟻生成器,因此保存后將同步生成的類。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.