首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为ADT / ant构建中生成的类配置特定的包

为ADT / ant构建中生成的类配置特定的包
EN

Stack Overflow用户
提问于 2013-08-22 11:14:38
回答 1查看 154关注 0票数 0

我正在为使用完全相同代码的不同客户开发一个应用程序(它只显示一个WebView)。唯一的区别是一个配置文件、图标和android包名,它们都是通过自定义ant任务生成的。

如果我运行ant发布目标或在eclipse中构建项目,生成的Java类(如R)将在一个名为android的包中生成。因此,在我的项目中导入这些类是无效的,因为它们的包已经更改。

Newsnet.java

代码语言:javascript
复制
package ch.newsnet.app;

import ch.newsnet.app.R; // <- cannot be found after build

public class Newsnet extends FragmentActivity {
    //...
}

运行我的自定义ant目标将我的android包设置为ch.customer1.app,wich使R成为包ch.customer1.app的一个类。但我希望它永远是ch.newsnet.app。在eclipse构建器中,如何在a) ant构建和b)中实现这一目标?我不想设置20+项目并维护它们的构建文件和资源,当我可以拥有所有的代码库时。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-08-23 13:35:13

对于那些面临同样问题的人,我按照以下方式解决了这个问题(尽管这不是最好的解决方案,但对我有效):

我创建了ant目标moveGeneratedFiles,其中我将生成的包复制到正确的包中,替换包名并删除生成的包(因为类将再次生成,所以在eclipse中不会真正工作)。

代码语言:javascript
复制
<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>

在项目属性中,我添加了一个执行此目标的ant构建器,这样生成的类将在保存后同步。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18378868

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档