2

Android向けのプログラミングを試してみることにしました。チュートリアルを開始しましたが、最初のプロジェクトが自動的に作成するアプリケーションを実行できませんでした。コンピューターの設定が間違っているのではないかと思いますが、どこでエラーを検索すればよいかわかりません。

チュートリアルでは、新しく作成したプロジェクトのディレクトリに移動して実行するように指示されていますant debug。これは私にエラーをスローします: java.lang.NoClassDefFoundError: com.android.sdklib.internal.build.DebugKeyProvider. SDK のインストールに問題があると思われますが、何が問題なのか、どのように修復すればよいのかわかりません。

私のコンピューターは openSUSE 12.1 64 ビットを実行しています。Oracte JDK バージョン 1.7.0_04 がインストールされており、ツールとプラットフォーム Android 4.0 および 4.0.3 を含む Android SDK があります。インストール後、パス環境に Android ツール フォルダーを追加し、電話用の udev ルールを追加しましたが、それ以上のカスタマイズは行っていません。Adb は私の電話を認識し、ddms でスクリーンショットをキャプチャできます。私はエクリプスを使用していません。

セットアップの一部を見逃しましたか?この問題のトラブルシューティング方法を教えてください。

更新同じ問題を抱えている人に関するメーリング リストのディスカッションを見つけました。彼は、/usr/bin 内の「keytool」というシンボリック リンクを更新して、正しいファイルを指すようにすることで、この問題を解決しました。そのようなリンクがなかったので、作成しました。問題は解決しません。スレッドに回答した誰かが、「jarutil.jar」というファイルが SDK にない可能性があると示唆しました。最初から再インストールした後でも、SDK にそのようなファイルはありません。議論は 1 年以上前のものであるため、そのようなファイルが現在のバージョンに存在する必要があるかどうかさえわかりません。

ant debugコマンドからの完全な出力は次のとおりです。

rumtscho@bradbury:~/dev/learn-android/MyFirstApp> ant デバッグ ビルドファイル: /home/rumtscho/dev/learn-android/MyFirstApp/build.xml

-設定モード チェック:

-set-debug-files:

-set-debug-mode:

-デバッグ難読化チェック:

-setup: [echo] 必要に応じて出力ディレクトリを作成しています... [echo] MyFirstApp の情報を収集しています... [setup] Android SDK Tools Revision 19 [setup] プロジェクト ターゲット: Android 4.0.3 [setup] API レベル: 15 [ setup] [setup] ------------------ [setup] ライブラリの依存関係を解決しています: [setup] ライブラリの依存関係はありません。[セットアップ] [セットアップ] ------------------ [セットアップ] API<=15: クラスパスにannotations.jarを追加します。[セットアップ] [セットアップ] ------------------ [セットアップ] 警告: minSdkVersion 値が設定されていません。アプリケーションはすべての Android バージョンにインストールされます。

-ビルドセットアップ:

-ビルド前:

-code-gen: [echo] ---------- [echo] aidl ファイルの処理... [aidl] コンパイルする AIDL ファイルがありません。[echo] ---------- [echo] RenderScript ファイルの処理中... [renderscript] コンパイルする RenderScript ファイルがありません。[echo] ---------- [echo] リソースの処理... [aapt] 変更されたリソースはありません。R.java と Manifest.java はそのままです。[echo] ---------- [echo] BuildConfig クラスの処理... [buildconfig] BuildConfig クラスを生成しています。

-プリコンパイル:

-compile: [javac] 1 つのソース ファイルを /home/rumtscho/dev/learn-android/MyFirstApp/bin/classes にコンパイルします。

-ポストコンパイル:

-難読化:

-dex: [dex] 変更された入力ファイルが見つかりました [dex] コンパイル済みファイルと外部ライブラリを /home/rumtscho/dev/learn-android/MyFirstApp/bin/classes.dex に変換しています...

-crunch: [crunch] ソース ディレクトリの PNG ファイルのクランチ: /home/rumtscho/dev/learn-android/MyFirstApp/res [crunch] 宛先ディレクトリへ: /home/rumtscho/dev/learn-android/MyFirstApp/bin/res
[クランチ]キャッシュを更新するために0個のPNGファイルをクランチしました

-package-resources: [aapt] 完全なリソース パッケージを作成しています...

-package: [apkbuilder] 現在のビルド タイプは以前のビルドとは異なります: apkbuilder を強制的に実行します。[apkbuilder] MyFirstApp-debug-unaligned.apk を作成し、デバッグ キーで署名します...

ビルドに失敗しました /home/rumtscho/android-sdk-linux/tools/ant/build.xml:886: この行の実行中に次のエラーが発生しました: /home/rumtscho/android-sdk-linux/tools/ant/build.xml :897: この行の実行中に次のエラーが発生しました: /home/rumtscho/android-sdk-linux/tools/ant/build.xml:307: java.lang.NoClassDefFoundError: com.android.sdklib.internal.build.DebugKeyProvider java.lang.Class.initializeClass(libgcj.so.12) で com.android.sdklib.build.ApkBuilder.getDebugKeystore(ApkBuilder.java:919) で com.android.ant.ApkBuilderTask.execute(ApkBuilderTask.java:334) )
org.apache.tools.ant.UnknownElement.execute (UnknownElement.java:291) で
java.lang.reflect.Method.invoke(libgcj.so.12) で org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) で org.apache.tools.ant.Task.perform で(Task.java:348) org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
で org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
で java. org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) の lang.reflect.Method.invoke(libgcj.so.12) org.apache.tools.ant.Task.perform(Task. java:348) org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398) で org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) で
java.lang.reflect.Method.invoke(libgcj.so.12) で org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) で org.apache.tools.ant.Task.perform で(Task.java:348) org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
com.android.ant.IfElseTask.execute(IfElseTask.java:124) で org.apache. org.apache.tools.ant.dispatch.DispatchUtils.execute
(DispatchUtils.java: 106) org.apache.tools.ant.Task.perform(Task.java:348) で org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
で com.android.ant.IfElseTask .execute(IfElseTask.java:124) at org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
java.lang.reflect.Method.invoke(libgcj.so.12) で org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) で org.apache.tools.ant.Task.perform で(Task.java:348) org.apache.tools.ant.taskdefs.Sequential.execute(Sequential.java:68)
で org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291)
で java. org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) の lang.reflect.Method.invoke(libgcj.so.12) org.apache.tools.ant.Task.perform(Task. java:348) org.apache.tools.ant.taskdefs.MacroInstance.execute(MacroInstance.java:398) で org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) で
java.lang.reflect.Method.invoke(libgcj.so.12) で org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) で org.apache.tools.ant.Task.perform で(Task.java:348) org.apache.tools.ant.Target.execute(Target.java:390) で org.apache.tools.ant.Target.performTasks(Target.java:411) で org.apache. tools.ant.Project.executeSortedTargets(Project.java:1399)
at org.apache.tools.ant.Project.executeTarget(Project.java:1368) at org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor. java:41) org.apache.tools.ant.Project.executeTargets (Project.java:1251) で
org.apache.tools.ant.Main.runBuild(Main.java:809) で org.apache.tools.ant.Main.startAnt(Main.java:217) で org.apache.tools.ant.launch.Launcher で.run(Launcher.java:280) at org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) 原因: java.lang.ClassNotFoundException: java.security.KeyStore$ProtectionParameter at org.apache .tools.ant.AntClassLoader.findClassInComponents(AntClassLoader.java:1361) at org.apache.tools.ant.AntClassLoader.findClass(AntClassLoader.java:1311) at org.apache.tools.ant.AntClassLoader.loadClass(AntClassLoader.java) :1064) at java.lang.ClassLoader.loadClass(libgcj.so.12) at java.lang.Class.initializeClass(libgcj.so.12) ...48 もっと見る

合計時間: 3 秒

4

1 に答える 1

1

Oracle JDK rpm は、Java を SuSE のように構成しません。特に、JAVA_HOME が正しく設定されていない可能性があります。

試してみてくださいJAVA_HOME=/usr/java/default ant debug

また、それがreadlink -f `which java`Oracle JDK を指していることを確認してください

JAVA_HOME永久に設定できるようです/etc/java/java.conf

Apache Ant のマニュアルでは、ant が必要とする環境変数を次のように設定することを推奨しています。

export ANT_HOME=/usr/local/ant
export JAVA_HOME=/usr/local/jdk-1.5.0.05
export PATH=${PATH}:${ANT_HOME}/bin 

jdk 番号は、コンピューターにインストールされている JDK 番号を指す必要があります。これにより、変数も永続的に設定されます。

于 2012-06-01T19:29:17.997 に答える