2012-03-08 11 views
0

예를 들어, packageApackageB 두 개의 패키지가 있습니다. 예 : packageA I의 는 R.java에서 자원을 classA라는 이름의 클래스가Android : 많은 패키지를 사용할 때 오류가 발생했습니다.

내가 원하는 때 R.java

EditText editText = (EditText) findViewById(R.id.EditText); 

에서 자원을 classB라는 이름의 클래스가 패키지 B.와 같은

TextView textView = (TextView) findViewById(R.id.textView); 

안드로이드가 classB을 실행하려면 Android Manifest file을 변경해야합니다. com.packageA에서 com.packageB으로 기본 패키지를 변경하십시오. 그러면 classA가 위 라인에주의 오류가됩니다. 내가 반대 할 때도 마찬가지다.

그래서 어떻게이 문제를 해결할 수 있습니까? 다중 패키지를 사용하고 그 중 다수는 Resource data입니다. 도와주세요.

감사합니다 :)

답변

3

매니페스트에 지정된 패키지 com.packageA 경우, packageA의 파일에, 당신은 아무것도 할 필요가 없습니다. packageB의 파일에서 매니페스트의 패키지 이름을 변경하지 않고 import com.packageA.R;을 사용하십시오. 그렇게하면 패키지 B가 R.java 파일에 액세스 할 수 있습니다.

+2

오 '옵션 빌드'라는 이름의 탭에서 비활성화 할 수 있습니다 ${workspace_loc:/MyProjectExtended}. 감사합니다 :) 그것은 내 오류를 해결했습니다. 그러나 문제는 계속해서 두통을 안겨줍니다. (예를 들어,'packageA'에서 나는 많은 클래스를 가지고 있습니다. 이제'packageB'를 처음 실행하고 싶습니다. 그래서'android manifest'에서'com '을 사용합니다.packageB'와'packageA' (Awful !!!)의 각 클래스를 변경해야합니다. 너 나 좀 도와 줄 수있어? – hqt

+0

설치된 SDK 도구의 버전에 따라 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 Android 하위 메뉴로 이동하여 패키지 이름을 변경할 수 있습니다. Android 도구는 대부분 또는 모든 패키지 참조를 업데이트하므로 변경해야하는 수를 줄일 수 있습니다. –

1

매니페스트 파일에 모든 패키지를 언급 ​​할 필요는 없습니다. 클래스 A 패키지를 선언하고 프로그램을 실행하십시오. 하지만 자바 클래스에서 B 클래스의 패키지를 가져와야한다. 기본적으로 매니페스트 파일은 새 Android 프로젝트를 만들 때 언급 한 첫 번째 패키지를 선언합니다. 내가 스칼라 (2.8.3) 및 treeshaker를 사용했기 때문에

는 플러그, 이것이 내가 다른 자원을 가진 다른 프로젝트를 분기했기 때문에 저도 같은 문제가 있었다

+2

오. 고마워, 나 도움이 :)하지만 계속 문제를 만난다. 예를 들어,'packageA'에는 많은 클래스가 있습니다. 이제'packageB'를 처음 실행하고 싶습니다. 그래서'android manifest'에서'com.packageB'를 사용하고'packageA' (Awful !!!)의 각 클래스를 변경해야합니다. 너 나 좀 도와 줄 수있어? – hqt

0

문제가 해결되는지 알려주세요, 그리고 기능을 제대로 안드로이드 라이브러리 프로젝트를 사용하도록 허용하지 않을 것입니다.

내가 원하는 패키지에 R.java의 복제본을 만드는 ant로 사용자 정의 빌드 단계를 추가하여이 문제를 해결했습니다. ,

  • 프로젝트를 마우스 오른쪽 버튼으로 클릭 :
    <?xml version="1.0" encoding="UTF-8"?> 
        <project name="MyProjectExtended" default="debug"> 
        <condition property="exe" value=".exe" else=""><os family="windows" /></condition> 
        <property name="aapt" location="C:\Program Files (x86)\Android\android-sdk\platform-tools\aapt${exe}" /> 
        <property name="android.jar" location="C:\Program Files (x86)\Android\android-sdk\platforms\android-10\android.jar" /> 
    
        <!-- Generates the R.java file for this project's resources. --> 
        <target name="debug"> 
        <echo>Generating R.java/Manifest.java from the resources...</echo> 
    <exec executable="${aapt}" failonerror="true"> 
        <arg value="package" /> 
        <arg line="" /> 
        <arg value="-m" /> 
        <arg value="-J" /> 
        <arg path="gen" /> 
        <arg value="-M" /> 
        <arg path="AndroidManifest.xml" /> 
        <arg value="-S" /> 
        <arg path="res" /> 
        <arg value="-I" /> 
        <arg path="${android.jar}" /> 
        <arg value="--custom-package" /> 
        <arg value="com.MyProjectExtendedPackage" /> 
        </exec> 
        </target> 
    </project> 
    

    가 그럼 난 사용자 지정 빌드 단계를 추가 :

    나는 다음과 같은 내용으로 MyProjectExtended 내 프로젝트의 루트라는 이름의 파일 custom_rules.xml 추가 속성

  • "작성자"에서 "새로 만들기 ..."를 클릭하십시오.
  • "Ant Builder"를 선택하고 계속하십시오. 빌드 파일 ${workspace_loc:/MyProjectExtended/custom_rules.xml}
  • 자료 디렉토리
  • :

및 콘솔 팝업 성가신 경우, 당신은

관련 문제