2013-08-22 1 views
0

정확히 동일한 코드를 사용하는 다양한 고객을위한 응용 프로그램을 개발하고 있습니다 (단지 WebView 만 표시). 유일한 차이점은 하나의 설정 파일, 아이콘 및 안드로이드 패키지 이름이며 모두 사용자 정의 앤티 작업을 통해 생성됩니다.ADT/ant 빌드에서 생성 된 클래스에 대한 특정 패키지 구성

개미 대상을 실행하거나 Eclipse에서 프로젝트를 빌드하면 생성 된 Java 클래스 (예 : R)가 android 패키지와 같은 패키지에 생성됩니다. 결과적으로 패키지가 변경 되었기 때문에 내 프로젝트에서 이러한 클래스의 가져 오기가 잘못되었습니다.

Newsnet.java

package ch.newsnet.app; 

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

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

ch.customer1.app 내 안드로이드 패키지를 설정합니다 내 사용자 지정 개미 대상을 실행, 느릅 나무는 R 패키지 ch.customer1.app의 클래스를 만든다. 그러나 나는 그것이 항상 ch.newsnet.app이되고 싶습니다. 어떻게 그것을 얻을 수있는 개미 빌드 및 b) 일식 빌더에? 나는 하나의 코드 기반으로 모든 것을 가질 수있을 때 20 개 이상의 프로젝트를 설정하고 빌드 파일과 리소스를 유지하려고하지 않습니다.

같은 문제에 직면하는 사람들을 위해
+0

모든 논리가 포함 된 라이브러리 프로젝트를 설정 한 다음 각 고객에 대해 셸 프로젝트를 만드는 것이 좋습니다. –

+0

그건 정확히 피하고 싶습니다. 중복 된 설정 코드가 많이 있습니다. – thobens

+0

'R' 클래스는 Android에서 자동으로 생성되며 항상 앱 패키지에 있습니다. 제어 할 수 없습니다. 나중에 이름 바꾸기/이동/편집을 시도 할 수는 있지만 권장하지는 않습니다. –

답변

0

, 나는 다음과 같이이 문제 해결 (그것이 최선의 해결책이 아니다 allthough를,하지만 나를 위해 일한) :

은 내가 생성 된 패키지를 복사 개미 대상 moveGeneratedFiles을 생성 올바른 하나, 패키지 이름 바꾸기 및 클래스를 다시 생성됩니다 때문에 일식 실제로 작동하지 않습니다 생성 된 하나를 삭제하십시오.

<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> 

프로젝트 속성에서 생성 된 클래스가 저장 후 동기화되도록이 대상을 실행하는 개미 작성기를 추가했습니다.

관련 문제