2012-03-30 14 views
2

コンソールでmake/antを使用して、Windows上にAndroid port of Hedgewarsをビルドしようとしています。試行錯誤の末、ビルドプロセス全体を完了することができましたが、ビルドされたアプリケーションは起動しません。 logcatは、Android Support libraryのクラスが欠落している理由を明らかにします。なぜAndroidサポートライブラリが自分の.apkに追加されないのですか?

しかし、ライブラリ(android-support-v13.jar)はアンドロイドプロジェクトの "libs"ディレクトリにあります。ビルド中に明示的に使用されているため、Javaソースをコンパイルするときにエラーが発生するため、エラーが発生します。私はclasses.dexファイルをチェックしました。そこでは、ライブラリクラスを(私が理解する限り)追加する必要があり、そこには存在しません。

サポートライブラリが.apkに含まれていない理由は何ですか? libs/armeabiの他の(ネイティブ)ライブラリも含まれています。ビルドは、基本的に変数sdk.dirtarget(android-13)を設定し、次に${sdk.dir}/tools/ant/build.xmlをインポートするbuild.xmlを使用してantを使用して実行されます。

明確にするには、私はエクリプスを使用して作業ビルドを取得する方法を知っています。問題は、通常のantビルドがライブラリの追加に失敗し、その問題を修正する方法です。ここで

は(コメントなし)プロジェクトディレクトリ内のbuild.xmlです:

<?xml version="1.0" encoding="UTF-8"?> 
<project name="MainActivity" default="help"> 
    <loadproperties srcFile="local.properties" /> 
    <property file="ant.properties" /> 
    <loadproperties srcFile="project.properties" /> 
    <fail 
      message="sdk.dir is missing. Make sure to generate local.properties using 'android update project'" 
      unless="sdk.dir" 
    /> 
    <import file="${sdk.dir}/tools/ant/build.xml" /> 
</project> 

local.propertiesがsdk.dirを定義し、project.propertiesは、ターゲットを定義し、ant.properties空です。

更新:もちろん、最新のバージョン(ndk8、sdk19)をすべて更新して、Hedgewarsリポジトリから適切な対策を講じています。残念なことに、正確に何が違いを生み出したのかは分かりません。私は、賞金のための最善の候補者がNickTであることを意味すると思うが、彼はそれを適切な答えにしなかった。コメントの提案。

+0

どのデバイスをテストしていますか? APIが13未満のデバイスでテストしている場合、これらのクラッシュが発生します。代わりにサポートライブラリv4を使用してみてください – dymmeh

+0

私がテストしているデバイスは、Android 3.2のSamsung Galaxy Tab 10.1Nですので、APIレベル13にする必要があります。 – Medo42

+0

ああ、無視してください:) – dymmeh

答えて

2

これはAndroidのSDKのバグだったことが判明します。 R18のリリースノートは言う:

のlibs /フォルダ内のいくつかのjarライブラリが は、いくつかのケースでピックアップされていない

を修正Antの問題。

r17からr19に更新すると問題が解決されたため、これが問題の原因になっている可能性があります。 NickTのおかげで、たとえそれが単なる明確化の質問であったとしても、正しい方向に私を指摘してくれました。

0

Eclipseでは、プロジェクトのプロパティに移動し、Order and exportタブを選択します。必要なライブラリとクリーンビルドを確認してください。

希望に役立ちます!

+0

私が言ったように、私はそれを日食で動作させる方法を知っています。私がここで興味を持っているのはコンソール/アリビルドです。それをもっと明確にするために質問を編集しますが、すでにそこに入っています。 – Medo42

0

おそらくv4/v13と競合していますか?

android-support-v4.jarとandroid-support-v13.jarの特殊ケースです。

-v13にはフルバージョンの-v4>が含まれているため、これらの2つのライブラリには特別なケースがあります。両方が見つかった場合は、-v13だけが使用されます。

-v13内の-v4のバージョンが他のライブラリで使用されているバージョンと同じであることを保証することはできません。サポートライブラリの新しいバージョンを使用してプロジェクトを更新する場合は、 - > v4または-v13のいずれを使用する場合でも、すべてのプロジェクトを同時に更新することをお勧めします。

[source]

+0

これは別の問題です。 jarファイルはjavacによって見つけ出され、コンパイルは成功します。さらに、私の質問を読んでみると、ライブラリがすでにlibsディレクトリにあることが分かります。 – Medo42

+0

私の答えを更新しました。私の間違いは、銃を飛ばした。 –

1

OK、SDKツールの最新バージョンにアップデートしてください。

関連する問題