2010-11-25 5 views
1

私はすべてのバージョンのAndroidで動作するハイプロファイルアプリで動作します。残念なことに私のためにMarketの最新のアップデートには、最終的なパッチ<がありました。>は、2.0で導入されたAPIに依存していました。迅速にアップグレードされた1.xクライアントはすべて、クラッシュし、市場のフィードバックに(かなり合理的に)虐殺されました。"APIレベルアナライザ"ツールはどのように機能しますか?

明らかに、ここに手続き上の問題があります...決して4つの主要なプラットフォームのバージョンすべてでテストされていないコードを出荷してはいけません...しかし、私はここにいるわけではありません。

この問題を回避するためには、ツールをもっと積極的にする必要があります。

開発中に、android:targetSdkVersionで指定されたレベルを上回って導入されたAPIを使用しているすべての場所のリストを確認したいと考えています。

私の質問は:どのようなツールが機能するのでしょうか?各プラットフォームの< sdk-root >/platformsの下にあるそれぞれのandroid.jarに書かれているものを書くことができますか?(バージョン番号と対になった何らかの関数シグネチャのリストを作成するために)何らかの検索をしますか?私は、Java/Dalvikの問題について本当に対処するために十分なことを知りません。

+0

私はAndroidの開発について何も知らないが、これは依存性管理の問題ではない? MavenやANT/Ivyが生成するレポートはこれを軽減できますか? –

答えて

2

私はこの質問にまともな答えを書いている途中です。簡単に言えば、私はまず、標準のjavapツールを使用してAndroid SDKの.jarsをチャッキングしてデータベースを構築しています。これにより、導入されたAPIレベルと組み合わされたAPI(関数、定数など)の大量のリストを作成することができます。

ツールの後半は独自の.apkで実行され、dexdumpを実行して注釈付きそれぞれの.classの逆アセンブル。それから、各関数呼び出しをそのAPIレベルと相互参照するためにチャイルドが実行されます(または、そうする必要があります)。

私は1週間ほどで作業する必要があります。どこかオンラインで鳴らします。

1

EclipseのAndroidプラグインを特定のSDKバージョンに設定すると、このSDKバージョンに存在しないAPIのエラーが表示されます。

+0

残念ながら、これはまた、新しいXML属性(存在しないJava関数への呼び出しとは異なり、古いプラットフォームでは無視されます)の使用など、完全に有効なものについて多くのエラーをもたらします。 –

+0

はい、XMLエラーが発生する可能性がありますが、無視して/ src /フォルダーにエラーがないかどうかを確認できます。もしそうなら、それらをチェックし、修正して、SDKを2.2に戻してください。 APIの互換性をチェックするために切り替えるだけです – Tseng

+0

これは@Deprecatedによって解決された問題と非常に似た問題であると考えられます。 –

0

SDKの旧バージョンでビルドするだけではどうですか?

関連する問題