2010-11-30 14 views
4

アンドロイドの小さなインターフェースで作業していて、 "xxxアプリケーションが予期せず停止しました"が表示されます。私は間違いのあるエラーを探していますが、何も見つかりません。Rクラスパッケージを変更するandroid/eclipse

とにかくリファクタリング - >名前を変更すると、古いパッケージの別のものが生成されます。たとえそのパッケージを削除しても、Eclipseは再びそれを生成しますが、取り除くことはできません。それ!

答えて

0
  1. LogCatをご覧ください。それはあなたのエラーのスタックトレースを持つ必要があります。
    • EclipseからLogCatを表示するには、ウィンドウ>表示の表示>その他> Android> LogCatに移動します。
    • それはRクラスのパッケージを変更することはできません
  2. あなたのSDK/toolsフォルダに移動し、「adbのlogcat」を実行して、コマンドラインからLogCatを参照してください。
18

それはAAPTツールのコマンドラインをカスタマイズすることで可能かもしれないAndroidManifest.xml

+0

ありがとう、たくさんの男! – Flanagan1

5

<manifest>タグのpackageプロパティを変更し、生成されたRクラスのパッケージ名を変更します。 aaptは、Rクラスが生成されるパッケージを指定する--custom-packageオプションをサポートしています。自分のアプリケーションを構築する際、私はR.javaのパッケージ名を変更することができるように、私は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コードをどこに置く必要があるのですか? –

+0

私のコメントは最近のAndroid SDKには適用されません。これは、Androidツールでaapt ANTタスクが導入され、Android ANTスクリプトで使用されているためです。 私の側では、/tools/antディレクトリにあるANTスクリプトをカスタマイズし、-resource-src、-package-resourcesなどのターゲットをカスタマイズしました。 – david

+0

プラス私の質問への答えを見つけるのを助けるために。私はどこのアプリで消えているRのクラスについての困惑だった。それらを別のパッケージで見つけました。 Thanks – Arunkumar

2

:ANTを使用して

が、これはこの方法を達成することができます。私がしたのは、-code-genターゲットをオーバーライドして、-code-genがaaptを実行しているときにprojectLibrariesPackageName属性を変更することです。

<!-- 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> 
+1

タイプは "projectLibrariesPackageName"属性をサポートしていません。 – AndroidGecko

0

は、JavaパースペクティブからECLIPS(右上にあなたの視点を変更します(一つの代替は、私はそれが/tools/ant/build.xmlで見つけることができると思い、使用している日食ビルドのbuild.xmlを変更することです)コーナー)からDDMSパースペクティブへそこにあなたのAndroidビルドでエラーを表示するLogCatを見つけるでしょう。

私たちがお手伝いできるように、それをチェックし、エラーを投稿してください。