[Android] 携帯電話での実行時に AndroidStudio がエラーを報告する: 'null' のためインストールに失敗しました

新しい Android プロジェクトを作成しました。携帯電話で実行したかったのですが、インストールできないことがわかりました。エラーは次のように報告されました。

インストールは成功しませんでした。
アプリケーションをインストールできませんでした: INSTALL_PARSE_FAILED_MANIFEST_MALFORMED

APK のリスト:
[0] 'app/build/outputs/apk/debug/app-debug.apk'
インストールは次の理由で失敗しました: 'null'

ビルドが完了したところですが、エラーは報告されませんでした。パッケージ名は間違いなく以前に使用されたものではありません。

クリーン+リビルドを試みましたが、うまくいきませんでした。

APK をビルドし、adb を使用して携帯電話にインストールすると、次の情報が表示されます。

S+ (バージョン 31 以降) をターゲットにするには、インテント フィルターが存在する場合に android:exported の明示的な値を定義する必要があります。

調べてみると、Android 11以下では、AndroidManifestでアクティビティやサービス、ブロードキャストレシーバを宣言する際に、明示的にandroid:exportedを宣言していないとのこと。デフォルト値はexported=trueなので、外部に公開したくない場合のみexported=falseを宣言する必要があります。

ただし、Android 12では変更があります。Android 12 デバイスで SDK API 31 (android 12) をターゲット SDK として設定するエクスポート アプリケーションの明示的な宣言 エクスポートは、インテント フィルターを宣言するアクティビティなどのコンポーネントで明示的に宣言する必要があります。そうしないと、エラーが発生し、インストールが失敗します。

解決策: 追加

android:exported="true"
  <activity 
    android:name=".MainActivity"
    android:exported="true">
    <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
  </activity>

この共有は終了しました。

おすすめ

転載: blog.csdn.net/u010055598/article/details/133312236