2010-11-30 79 views
4

我在Android的一個小界面上工作,當我運行它時,「xxx應用程序意外停止」出現。我正在尋找可能的錯誤,但我沒有找到任何東西。更改R類包android/eclipse

無論如何,我想改變R類包名,當我重構 - >重命名它時,eclipse會在舊包中生成另一個包,即使我刪除該包後eclipse會再次生成它,我無法擺脫它!

回答

0
  1. 看看你的LogCat。它應該有你的錯誤的堆棧跟蹤。
    • 要從Eclipse中查看LogCat,請轉到窗口>顯示視圖>其他> Android> LogCat。
    • 要查看命令行的logcat的,去你的SDK/tools文件夾,然後運行「亞行logcat」
  2. 這是不可能改變R類包。
18

要改變產生R類的包名稱,更改<manifest>標籤的package財產AndroidManifest.xml

+0

非常感謝! – Flanagan1 2010-11-30 11:49:03

5

它可以通過自定義工具AAPT命令行成爲可能。 aapt支持--custom-package選項,該選項指定將生成R類的包。

使用ANT,這樣就可以實現這種方式:

  <exec executable="aapt" failonerror="true"> 
       <arg value="package" /> 
       <arg value="-m" /> 
       <arg value="-J" /> 
       <arg path="${gen.absolute.dir}" /> 
       <arg value="-M" /> 
       <arg path="AndroidManifest.xml" /> 
       <arg value="-I" /> 
       <arg path="${android.jar}" /> 
       <arg value="-A" /> 
       <arg path="${asset.absolute.dir}" /> 
       <arg value="-S" /> 
       <arg path="${resource.absolute.dir}" /> 
       <arg value="--custom-package" /> 
       <arg value="my.custom.package" /> 
      </exec> 
+0

非常感謝這個提示。大衛,我認爲對我來說,處理幾個項目分支將非常有用。你能否完成一些答案?我的意思是,我需要將該XML代碼放在哪裏? – 2012-07-18 11:23:57

+0

我的評論不適用於最近的Android SDK,因爲aapt ANT任務已經在Android工具中引入,並且它在Android ANT腳本中使用。 我在我身邊做的是定製/tools/ant目錄中提供的ANT腳本,並且我定製了諸如-resource-src,-package-resources之類的目標。 – david 2012-07-19 19:26:33

2

我已經定製了一個Ant腳本,這樣我可以構建我的應用程序時R.java更改包名。我所做的是覆蓋-code-gen目標,並在-code-gen執行aapt時修改projectLibrariesPackageName屬性。 (一個替代方案是更改構建build.xml文件,Eclipse是使用,我認爲它可以在/tools/ant/build.xml找到)

<!-- Code Generation: compile resources (aapt -> R.java), aidl, renderscript --> 
    <target name="-code-gen"> 
     <do-only-if-manifest-hasCode 
       elseText="hasCode = false. Skipping aidl/renderscript/R.java"> 
      <echo>...........</echo> 
      <echo>Handling aidl files...</echo> 
      <aidl executable="${aidl}" framework="${android.aidl}" 
        genFolder="${gen.absolute.dir}"> 
       <source path="${source.absolute.dir}"/> 
      </aidl> 

      <!-- renderscript generates resources so it must be called before aapt --> 
      <echo>...........</echo> 
      <echo>Handling RenderScript files...</echo> 
      <renderscript executable="${renderscript}" 
        framework="${android.rs}" 
        genFolder="${gen.absolute.dir}" 
        resFolder="${resource.absolute.dir}/raw" 
        targetApi="${target.api}"> 
       <source path="${source.absolute.dir}"/> 
      </renderscript> 

      <echo>...........</echo> 
      <echo>Handling Resources...</echo> 
      <aapt executable="${aapt}" 
       command="package" 
       verbose="${verbose}" 
       manifest="AndroidManifest.xml" 
       androidjar="${android.jar}" 
       rfolder="${gen.absolute.dir}" 
       nonConstantId="${android.library}" 
       projectLibrariesResName="project.libraries.res" 
       projectLibrariesPackageName="package.internal"> <!-- Put custom package name here --> 
        <res path="${resource.absolute.dir}" /> 
      </aapt> 
     </do-only-if-manifest-hasCode> 
    </target> 
0

更改您的視角從文摘Java透視圖(右上角)到DDMS視角。在那裏你會發現LogCat在Android Build中查看錯誤。

檢查它,然後發佈錯誤,以便我們可以幫助你。