簡體   English   中英

在ADT / ant構建中為生成的類配置特定的程序包

[英]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.

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