如何使我的 Android APK 在多个设备上兼容?

How to make my Android APK compatible across multiple devices?

对于上下文,我正在尝试在 Java 中创建一个可以与其他 phone 共享的 Android 应用程序。我设法让该应用成功地将自己的 APK 发送到另一个 android phone 使用蓝牙(参见下面的实现)。

问题是来自一个 phone 的 APK 无法安装在另一个 phone 上。为了排除故障,我下载了一个第三方 APK 提取器来发送我的应用程序,结果相同——APK 已成功传输,但不会安装在另一个 phone 上。然后我尝试使用 APK 提取器来分享随机选择的 Google Play 应用程序,一些应用程序会在第二个 phone 上成功安装,其他应用程序不会。

在这个阶段,我很确定这是一个兼容性问题。我怎样才能使我的 APK 跨设备更兼容?作为参考,我目前正在 3 phones 上测试它:Samsung Galaxy S7、Huawei Nova 3i 和 Motorolla XT1052,但最终我希望该应用程序可以在尽可能多的设备上访问。

提前致谢:)

sendApp 函数

public void sendApp(Activity activity) {
    try {
        PackageManager pm = activity.getPackageManager();
        ApplicationInfo app = pm.getApplicationInfo(activity.getPackageName(), 0);
        File apkFile = new File(app.publicSourceDir);

        Intent intent = new Intent(Intent.ACTION_SEND);
        intent.setType("*/*");
        Uri uri = FileProvider.getUriForFile(
                getApplicationContext(),
                BuildConfig.APPLICATION_ID + ".provider", //(use your app signature + ".provider" )
                apkFile);
        intent.putExtra(Intent.EXTRA_STREAM, uri);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        startActivity(intent);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

Manifest.xml 提供商标签:

    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="${applicationId}.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <!-- resource file to create -->
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/file_paths">
        </meta-data>
    </provider>

file_paths.xml

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <root-path
        name="root"
        path="."/>
</paths>

发现问题了! 我发送的是调试 APK,而不是发布 APK。 我刚刚在 Android studio 中创建了一个已签名的 APK(Build>Generate Signed Bundle/APK)。 我自己并没有想出解决方案,但是回答者在我select它之前删除了他们的答案。