2012 年 4 月に Google Play で公開された Android アプリケーションが動作しています。私たちは何ヶ月もそれに触れませんでした。
12 月に、クリスマス アップデートを行うことにしました。しかし、このプロジェクトを書いたプログラマーが 9 月に退職したため、彼のコードをリポジトリからダウンロードする必要がありました。そのリポジトリ バージョンには、アプリが依存している 2 つのプロジェクトが欠けていることが判明したため、それらを Web からダウンロードし (それらはオープン ソースのものです)、依存プロジェクトとして追加する必要がありました (プロジェクト プロパティ -> android -> "ライブラリ"セクション -> 追加)。
いくつかの小さな変更を加えましたが、すべてがうまく機能し、それについて何の疑問もありませんでした。
しかし!ある時点で何かがうまくいかなかった:
プロジェクトのデバッグ バージョン (デバッグ キーで署名) がデバイス (エミュレーターではなく実際のデバイス) にインストールされている場合、動作します。
プロジェクトのリリース バージョン (リリース キーで署名) がデバイスにインストールされると、開始時にクラッシュします。エラー:
java.lang.RuntimeException: アクティビティ ComponentInfo{packageName/packageName.MainActivity} をインスタンス化できません: java.lang.ClassNotFoundException: パスにクラス "packageName.MainActivity" が見つかりませんでした: /data/app/packageName-1.apk
修正方法: 上記の 2 つのオープンソース プロジェクトをアプリに追加する方法を変更しました。具体的には、プロジェクトの依存関係を削除し、代わりに jar ファイルの依存関係を追加しました。それで、それは働き始めました。それらをライブラリプロジェクトとして使用する際に何が問題だったのか理解できません。jar ファイルを追加した後にのみ機能するようになったのはなぜですか? おそらく誰かがそれを理解するのを助けることができます。