如何让我的 google play 应用支持更多设备?

Posted

技术标签:

【中文标题】如何让我的 google play 应用支持更多设备?【英文标题】:How can I have my google play app support more devices? 【发布时间】:2020-12-31 00:51:22 【问题描述】:

我最近在 Google Play 商店上发布了我的第一个应用程序,但由于我对编程很陌生,我不确定如何解决我目前遇到的问题。 你看,Google Play 控制台告诉我该应用只支持 2006 年的设备,尽管我看不出这是为什么。

设置和东西: 我使用 Unity 和 C# 来创建应用程序。在统一引擎中,在构建设置下,我将最低 API 级别设置为 19,并将目标 API 设置为自动(最高安装)。 最初,我只是让 Unity 为游戏创建清单文件,但为了尝试解决我的问题,我创建了一个新的清单文件。我将它放在资产中,在一个名为 android 的文件夹中,该文件夹位于一个名为 plugins 的文件夹中(一些教程告诉我这样做)。清单文件如下所示:

<?xml version="1.0" encoding="utf-8"?>
<!-- GENERATED BY UNITY. REMOVE THIS COMMENT TO PREVENT OVERWRITING WHEN EXPORTING AGAIN-->
<manifest
    xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.unity3d.player"
    xmlns:tools="http://schemas.android.com/tools">
    
    <supports-screens 
        android:smallScreens="true" 
        android:normalScreens="true"
        android:largeScreens="true"
        android:xlargeScreens="true"
        android:anyDensity="true" />
        
    <application>
        <activity android:name="com.unity3d.player.UnityPlayerActivity"
                  android:theme="@style/UnityThemeSelector">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
            <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
        </activity>
    </application>
</manifest>

我已将应用程序发布到 Google Play 商店,但在除 2006 之外的所有设备上它只是显示

此版本与您的设备不兼容

有人知道我该如何解决这个问题吗?

谢谢!

另外,我应该提到我向 Google Play 开发者支持发送了一封电子邮件,我收到了这样的回复:

你好,

感谢您联系 Google Play 开发者支持。

我了解您想弄清楚为什么您的设备是三星 Galaxy Note9,与您的应用程序不兼容。我检查了一些 我这边的事情,看到设备的以下版本是 不兼容的原因如下:

运行 Android SDK 29 的 Galaxy Note9:

不支持 GL 纹理:GL_AMD_compressed_ATC_texture, GL_AMD_performance_monitor, GL_ANDROID_extension_pack_es31a, GL_APPLE_texture_2D_limited_npot,GL_ARB_vertex_buffer_object, GL_ARM_shader_framebuffer_fetch_depth_stencil, GL_EXT_EGL_image_array, GL_EXT_EGL_image_external_wrap_modes,GL_EXT_EGL_image_storage, GL_EXT_YUV_target,GL_EXT_blend_func_extended, GL_EXT_blit_framebuffer_params,GL_EXT_buffer_storage, GL_EXT_clip_control,GL_EXT_clip_cull_distance, GL_EXT_color_buffer_float, GL_EXT_color_buffer_half_float, GL_EXT_copy_image、GL_EXT_debug_label、GL_EXT_debug_marker、 GL_EXT_discard_framebuffer,GL_EXT_disjoint_timer_query, GL_EXT_draw_buffers_indexed, GL_EXT_external_buffer, GL_EXT_fragment_invocation_density、GL_EXT_geometry_shader、 GL_EXT_gpu_shader5、GL_EXT_memory_object、GL_EXT_memory_object_fd、 GL_EXT_multisampled_render_to_texture, GL_EXT_multisampled_render_to_texture2, GL_EXT_primitive_bounding_box, GL_EXT_protected_textures, GL_EXT_read_format_bgra, GL_EXT_robustness, GL_EXT_sRGB、GL_EXT_sRGB_write_control、 GL_EXT_shader_framebuffer_fetch, GL_EXT_shader_io_blocks, GL_EXT_shader_non_constant_global_initializers, GL_EXT_tessellation_shader,GL_EXT_texture_border_clamp, GL_EXT_texture_buffer, GL_EXT_texture_cube_map_array, GL_EXT_texture_filter_anisotropic, GL_EXT_texture_format_BGRA8888, GL_EXT_texture_format_sRGB_override,GL_EXT_texture_norm16, GL_EXT_texture_sRGB_R8、GL_EXT_texture_sRGB_decode、 GL_EXT_texture_type_2_10_10_10_REV,GL_KHR_blend_equation_advanced, GL_KHR_blend_equation_advanced_coherent、GL_KHR_debug、 GL_KHR_no_error, GL_KHR_robust_buffer_access_behavior, GL_KHR_texture_compression_astc_hdr, GL_KHR_texture_compression_astc_ldr, GL_NV_shader_noperspective_interpolation, GL_OES_EGL_image, GL_OES_EGL_image_external,GL_OES_EGL_image_external_essl3, GL_OES_EGL_sync,GL_OES_blend_equation_separate, GL_OES_blend_func_separate,GL_OES_blend_subtract, GL_OES_compressed_ETC1_RGB8_texture, GL_OES_compressed_pa​​letted_texture, GL_OES_depth24, GL_OES_depth_texture, GL_OES_depth_texture_cube_map, GL_OES_draw_texture, GL_OES_element_index_uint, GL_OES_framebuffer_object, GL_OES_get_program_binary, GL_OES_matrix_palette, GL_OES_packed_depth_stencil, GL_OES_point_size_array、GL_OES_point_sprite、GL_OES_read_format、 GL_OES_rgb8_rgba8、GL_OES_sample_shading、GL_OES_sample_variables、 GL_OES_shader_image_atomic,GL_OES_shader_multisample_interpolation, GL_OES_standard_derivatives, GL_OES_stencil_wrap, GL_OES_surfaceless_context,GL_OES_texture_3D, GL_OES_texture_compression_astc, GL_OES_texture_cube_map, GL_OES_texture_env_crossbar,GL_OES_texture_float, GL_OES_texture_float_linear,GL_OES_texture_half_float, GL_OES_texture_half_float_linear,GL_OES_texture_mirrored_repeat, GL_OES_texture_npot, GL_OES_texture_stencil8, GL_OES_texture_storage_multisample_2d_array, GL_OES_texture_view, GL_OES_vertex_array_object, GL_OES_vertex_half_float, GL_OVR_multiview, GL_OVR_multiview2, GL_OVR_multiview_multisampled_render_to_texture, GL_QCOM_YUV_texture_gather、GL_QCOM_alpha_test、GL_QCOM_extended_get、 GL_QCOM_shader_framebuffer_fetch_noncoherent, GL_QCOM_shader_framebuffer_fetch_rate, GL_QCOM_texture_foveated, GL_QCOM_texture_foveated_subsampled_layout,GL_QCOM_tiled_rendering

运行 Android SDK 27 的 Galaxy Note9:该应用仅支持 SDK 29+,因此 没有 29 岁以下运行 SDK 的设备可以安装该应用程序。然而,这 版本也不支持 GL 纹理(请注意,这是 与上面的设置不同):

GL_AMD_compressed_ATC_texture, GL_AMD_performance_monitor, GL_ANDROID_extension_pack_es31a,GL_APPLE_texture_2D_limited_npot, GL_ARB_vertex_buffer_object, GL_ARM_shader_framebuffer_fetch_depth_stencil, GL_EXT_EGL_image_array, GL_EXT_YUV_target, GL_EXT_blit_framebuffer_params, GL_EXT_buffer_storage,GL_EXT_clip_cull_distance, GL_EXT_color_buffer_float, GL_EXT_color_buffer_half_float, GL_EXT_copy_image、GL_EXT_debug_label、GL_EXT_debug_marker、 GL_EXT_discard_framebuffer,GL_EXT_disjoint_timer_query, GL_EXT_draw_buffers_indexed, GL_EXT_external_buffer, GL_EXT_geometry_shader、GL_EXT_gpu_shader5、GL_EXT_memory_object、 GL_EXT_memory_object_fd,GL_EXT_multisampled_render_to_texture, GL_EXT_multisampled_render_to_texture2, GL_EXT_primitive_bounding_box, GL_EXT_protected_textures、GL_EXT_robustness、GL_EXT_sRGB、 GL_EXT_sRGB_write_control,GL_EXT_shader_framebuffer_fetch, GL_EXT_shader_io_blocks, GL_EXT_shader_non_constant_global_initializers, GL_EXT_tessellation_shader,GL_EXT_texture_border_clamp, GL_EXT_texture_buffer, GL_EXT_texture_cube_map_array, GL_EXT_texture_filter_anisotropic, GL_EXT_texture_format_BGRA8888, GL_EXT_texture_norm16、GL_EXT_texture_sRGB_R8、 GL_EXT_texture_sRGB_decode, GL_EXT_texture_type_2_10_10_10_REV, GL_KHR_blend_equation_advanced, GL_KHR_blend_equation_advanced_coherent、GL_KHR_debug、 GL_KHR_no_error, GL_KHR_texture_compression_astc_hdr, GL_KHR_texture_compression_astc_ldr, GL_NV_shader_noperspective_interpolation, GL_OES_EGL_image, GL_OES_EGL_image_external,GL_OES_EGL_image_external_essl3, GL_OES_EGL_sync,GL_OES_blend_equation_separate, GL_OES_blend_func_separate,GL_OES_blend_subtract, GL_OES_compressed_ETC1_RGB8_texture, GL_OES_compressed_pa​​letted_texture, GL_OES_depth24, GL_OES_depth_texture, GL_OES_depth_texture_cube_map, GL_OES_draw_texture, GL_OES_element_index_uint, GL_OES_framebuffer_object, GL_OES_get_program_binary, GL_OES_matrix_palette, GL_OES_packed_depth_stencil, GL_OES_point_size_array、GL_OES_point_sprite、GL_OES_read_format、 GL_OES_rgb8_rgba8、GL_OES_sample_shading、GL_OES_sample_variables、 GL_OES_shader_image_atomic,GL_OES_shader_multisample_interpolation, GL_OES_standard_derivatives, GL_OES_stencil_wrap, GL_OES_surfaceless_context,GL_OES_texture_3D, GL_OES_texture_compression_astc, GL_OES_texture_cube_map, GL_OES_texture_env_crossbar,GL_OES_texture_float, GL_OES_texture_float_linear,GL_OES_texture_half_float, GL_OES_texture_half_float_linear,GL_OES_texture_mirrored_repeat, GL_OES_texture_npot, GL_OES_texture_stencil8, GL_OES_texture_storage_multisample_2d_array, GL_OES_vertex_array_object, GL_OES_vertex_half_float, GL_OVR_multiview, GL_OVR_multiview2, GL_OVR_multiview_multisampled_render_to_texture,GL_QCOM_alpha_test, GL_QCOM_extended_get, GL_QCOM_shader_framebuffer_fetch_noncoherent, GL_QCOM_texture_foveated, GL_QCOM_tiled_rendering

运行 Android 28 的 Galaxy Note9:同样,运行任何 SDK 的设备更低 超过 29 与应用程序不兼容。不过,这个版本的 由于不支持 GL 纹理,此设备也不兼容 (与上述两个不同的集合):

GL_AMD_compressed_ATC_texture, GL_AMD_performance_monitor, GL_ANDROID_extension_pack_es31a,GL_APPLE_texture_2D_limited_npot, GL_ARB_vertex_buffer_object, GL_ARM_shader_framebuffer_fetch_depth_stencil, GL_EXT_EGL_image_array, GL_EXT_EGL_image_external_wrap_modes,GL_EXT_EGL_image_storage, GL_EXT_YUV_target,GL_EXT_blend_func_extended, GL_EXT_blit_framebuffer_params,GL_EXT_buffer_storage, GL_EXT_clip_control,GL_EXT_clip_cull_distance, GL_EXT_color_buffer_float, GL_EXT_color_buffer_half_float, GL_EXT_copy_image、GL_EXT_debug_label、GL_EXT_debug_marker、 GL_EXT_discard_framebuffer,GL_EXT_disjoint_timer_query, GL_EXT_draw_buffers_indexed, GL_EXT_external_buffer, GL_EXT_geometry_shader、GL_EXT_gpu_shader5、GL_EXT_memory_object、 GL_EXT_memory_object_fd,GL_EXT_multisampled_render_to_texture, GL_EXT_multisampled_render_to_texture2, GL_EXT_primitive_bounding_box, GL_EXT_protected_textures、GL_EXT_robustness、GL_EXT_sRGB、 GL_EXT_sRGB_write_control,GL_EXT_shader_framebuffer_fetch, GL_EXT_shader_io_blocks, GL_EXT_shader_non_constant_global_initializers, GL_EXT_tessellation_shader,GL_EXT_texture_border_clamp, GL_EXT_texture_buffer, GL_EXT_texture_cube_map_array, GL_EXT_texture_filter_anisotropic, GL_EXT_texture_format_BGRA8888, GL_EXT_texture_format_sRGB_override,GL_EXT_texture_norm16, GL_EXT_texture_sRGB_R8、GL_EXT_texture_sRGB_decode、 GL_EXT_texture_type_2_10_10_10_REV,GL_KHR_blend_equation_advanced, GL_KHR_blend_equation_advanced_coherent、GL_KHR_debug、 GL_KHR_no_error, GL_KHR_robust_buffer_access_behavior, GL_KHR_texture_compression_astc_hdr, GL_KHR_texture_compression_astc_ldr, GL_NV_shader_noperspective_interpolation, GL_OES_EGL_image, GL_OES_EGL_image_external,GL_OES_EGL_image_external_essl3, GL_OES_EGL_sync,GL_OES_blend_equation_separate, GL_OES_blend_func_separate,GL_OES_blend_subtract, GL_OES_compressed_ETC1_RGB8_texture, GL_OES_compressed_pa​​letted_texture, GL_OES_depth24, GL_OES_depth_texture, GL_OES_depth_texture_cube_map, GL_OES_draw_texture, GL_OES_element_index_uint, GL_OES_framebuffer_object, GL_OES_get_program_binary, GL_OES_matrix_palette, GL_OES_packed_depth_stencil, GL_OES_point_size_array、GL_OES_point_sprite、GL_OES_read_format、 GL_OES_rgb8_rgba8、GL_OES_sample_shading、GL_OES_sample_variables、 GL_OES_shader_image_atomic,GL_OES_shader_multisample_interpolation, GL_OES_standard_derivatives, GL_OES_stencil_wrap, GL_OES_surfaceless_context,GL_OES_texture_3D, GL_OES_texture_compression_astc, GL_OES_texture_cube_map, GL_OES_texture_env_crossbar,GL_OES_texture_float, GL_OES_texture_float_linear,GL_OES_texture_half_float, GL_OES_texture_half_float_linear,GL_OES_texture_mirrored_repeat, GL_OES_texture_npot, GL_OES_texture_stencil8, GL_OES_texture_storage_multisample_2d_array, GL_OES_vertex_array_object, GL_OES_vertex_half_float, GL_OVR_multiview, GL_OVR_multiview2, GL_OVR_multiview_multisampled_render_to_texture,GL_QCOM_alpha_test, GL_QCOM_extended_get, GL_QCOM_shader_framebuffer_fetch_noncoherent, GL_QCOM_texture_foveated, GL_QCOM_tiled_rendering

我们无法告诉您如何处理 GL 纹理,因为我们没有接受过相关培训 应用程序开发,因此您可能需要咨询公共开发人员 论坛,例如 ***.com 上的论坛

要解决 Android SDK 问题,您需要更改应用的 manifest 以便 minSDK 值更低。

我希望这会有所帮助!请让我知道您是否有其他问题或 担心。

向 Pete Google Play 开发者支持致敬

【问题讨论】:

您的清单仍然有允许 Unity 覆盖它的行。其中没有设置 minSDK 值。我建议使用 APKTool ibotpeaches.github.io/Apktool 解压您的 APK 文件并查看完整清单。 @RetiredNinja 我照你说的做了,生成的清单文件有这些代码行: 您的纹理是否压缩为 ETC/ETC2? @RetiredNinja 在构建设置“PVRTC (PowerVR)”下选择用于纹理压缩。在此之下还有设置为 32 位的“ETC2 fallback”。 这可能是你的问题。您应该在此处阅读 Android 部分:docs.unity3d.com/Manual/… 您可能希望将其设置为 ETC2 或不要覆盖。 【参考方案1】:

感谢@RetiredNinja 解决问题!这是他写的(知道如何接受回复作为答案):

“您的纹理是否压缩为 ETC/ETC2?- 退休忍者”

“这可能是您的问题。您应该阅读此处的 Android 部分:https://docs.unity3d.com/Manual/class-TextureImporterOverride.html#notes-on-android 您可能希望将其设置为 ETC2 或不要覆盖。–退休忍者”

【讨论】:

【参考方案2】:

在 gradle 中将您的最低 SDK 设置为较低版本

【讨论】:

在我的清单文件中,我的 minSdkVersion 设置为 19 (

以上是关于如何让我的 google play 应用支持更多设备?的主要内容,如果未能解决你的问题,请参考以下文章

Google Play 说我的设备不支持我的应用

如何将Google Play应用购买与角度应用集成

如何启用 Google Play 应用签名

如何评估 Google Play 热门应用?

Google Play 控制台:许多设备不支持 Android TV 应用

Google Play 控制台警告应用正在使用不受支持的 API