*Invalid device codename* crash
- Dominant language
- Rust
- Stars
- 2.1k
- Forks
- 161
- PR merge metrics
- No merged PRs in 30d
Description
My purpose was to download x86-64 APKs.
aurora_store_QEMU_virtio_x86_64.properties:
```
#DEVICE_CONFIG
#Tue Jun 16 15:41:19 GMT+02:00 2026
HasHardKeyboard=true
Build.HARDWARE=virtio
Build.BRAND=QEMU
Build.VERSION.SDK_INT=36
Roaming=mobile-notroaming
Build.MODEL=Standard PC (Q35 + ICH9, 2009)
Vending.versionString=21.5.17-21 [0] [PR] 326734551
Vending.version=82151710
CellOperator=310
Build.FINGERPRINT=VirtIO/lineage_virtio_x86_64/virtio_x86_64\:16/BP2A.250805.005/eng.root\:userdebug/test-keys
Build.DEVICE=virtio_x86_64
Screen.Height=800
SimOperator=38
ScreenLayout=4
SharedLibraries=android.test.base,android.test.mock,android.hidl.manager-V1.0-java,android.telephony.satellite,android.hidl.base-V1.0-java,com.android.location.provider,androidx.window.extensions,android.net.ipsec.ike,android.ext.adservices,com.android.future.usb.accessory,android.ext.shared,javax.obex,com.android.extensions.appfunctions,android.test.runner,org.apache.http.legacy,com.android.cts.ctsshim.shared_library,com.android.media.remotedisplay,com.android.mediadrm.signer,androidx.window.sidecar
Features=android.hardware.sensor.proximity,android.hardware.sensor.accelerometer,android.software.controls,android.hardware.faketouch,android.software.backup,android.hardware.touchscreen,android.hardware.touchscreen.multitouch,android.software.erofs,android.software.print,android.hardware.ethernet,android.software.activities_on_secondary_displays,android.software.device_lock,android.software.voice_recognizers,android.software.picture_in_picture,android.hardware.sensor.gyroscope,android.software.vulkan.deqp.level,android.software.cant_save_state,android.hardware.security.model.compatible,org.lineageos.livedisplay,org.lineageos.profiles,android.hardware.sensor.relative_humidity,android.hardware.type.pc,android.hardware.bluetooth,android.software.window_magnification,android.software.incremental_delivery,android.software.sip.voip,android.software.opengles.deqp.level,android.hardware.usb.host,android.hardware.audio.output,android.software.ipsec_tunnel_migration,android.hardware.screen.portrait,android.hardware.sensor.ambient_temperature,android.software.home_screen,android.hardware.microphone,android.software.autofill,org.lineageos.hardware,org.lineageos.globalactions,android.software.securely_removes_users,android.hardware.bluetooth_le,android.hardware.sensor.compass,android.hardware.touchscreen.multitouch.jazzhand,android.hardware.sensor.barometer,android.software.app_widgets,android.software.input_methods,android.hardware.sensor.light,android.hardware.vulkan.version,android.software.companion_device_setup,android.software.device_admin,org.lineageos.trust,android.software.credentials,android.hardware.screen.landscape,android.hardware.ram.normal,org.lineageos.health,android.hardware.sensor.hinge_angle,org.lineageos.android,android.software.managed_users,android.software.webview,android.hardware.vulkan.compute,android.hardware.touchscreen.multitouch.distinct,android.hardware.location.network,android.software.cts,android.software.sip,android.software.app_enumeration,android.hardware.wifi.direct,android.software.live_wallpaper,android.software.ipsec_tunnels,org.lineageos.settings,android.software.freeform_window_management,android.software.midi,android.hardware.hardware_keystore,android.hardware.wifi,android.hardware.location,android.hardware.vulkan.level,android.software.virtualization_framework,android.software.secure_lock_screen,android.software.file_based_encryption
GSF.version=203019037
UserReadableName=QEMU Standard PC (Q35 + ICH9, 2009)
Build.RADIO=unknown
Client=android-google
Locales=af,af_ZA,am,am_ET,ar,ar_EG,ar_XB,as,ast,ast_ES,az,be,bg,bg_BG,bn,bs,ca,ca_ES,cs,cs_CZ,cy,da,da_DK,de,de_DE,el,el_GR,en,en_AU,en_CA,en_GB,en_IN,en_US,en_XA,en_XC,eo,es,es_419,es_ES,es_US,et,et_EE,eu,fa,fa_IR,fi,fi_FI,fil,fil_PH,fr,fr_CA,fr_FR,fur_IT,gd,gl,gu,hi,hi_IN,hr,hr_HR,hu,hu_HU,hy,in,in_ID,is,it,it_IT,iw,iw_IL,ja,ja_JP,ka,kab,kk,km,kn,ko,ko_KR,kw,ky,lo,lt,lt_LT,lv,lv_LV,mk,ml,mn,mr,ms,ms_MY,my,nb,nb_NO,ne,nl,nl_NL,or,pa,pl,pl_PL,pt,pt_BR,pt_PT,ro,ro_RO,ru,ru_RU,si,sk,sk_SK,sl,sl_SI,sq,sr,sr_Latn,sr_RS,sv,sv_SE,sw,sw_TZ,ta,te,th,th_TH,tr,tr_TR,uk,uk_UA,ur,uz,vi,vi_VN,yue,zh_CN,zh_HK,zh_TW,zu,zu_ZA
Screen.Density=160
Platforms=x86_64
Build.PRODUCT=lineage_virtio_x86_64
Navigation=1
Keyboard=2
Build.ID=BP2A.250805.005
TimeZone=UTC-10
Screen.Width=1280
GL.Extensions=GL_AMD_performance_monitor,GL_ANGLE_base_vertex_base_instance_shader_builtin,GL_ANGLE_blob_cache,GL_ANGLE_client_arrays,GL_ANGLE_clip_cull_distance,GL_ANGLE_compressed_texture_etc,GL_ANGLE_copy_texture_3d,GL_ANGLE_depth_texture,GL_ANGLE_framebuffer_blit,GL_ANGLE_framebuffer_multisample,GL_ANGLE_get_image,GL_ANGLE_get_serialized_context_string,GL_ANGLE_get_tex_level_parameter,GL_ANGLE_instanced_arrays,GL_ANGLE_memory_object_flags,GL_ANGLE_memory_size,GL_ANGLE_multi_draw,GL_ANGLE_pack_reverse_row_order,GL_ANGLE_polygon_mode,GL_ANGLE_program_binary_readiness_query,GL_ANGLE_program_cache_control,GL_ANGLE_read_only_depth_stencil_feedback_loops,GL_ANGLE_relaxed_vertex_attribute_type,GL_ANGLE_renderability_validation,GL_ANGLE_request_extension,GL_ANGLE_rgbx_internal_format,GL_ANGLE_robust_client_memory,GL_ANGLE_robust_fragment_shader_output,GL_ANGLE_shader_pixel_local_storage,GL_ANGLE_shader_pixel_local_storage_coherent,GL_ANGLE_stencil_texturing,GL_ANGLE_texture_compression_dxt3,GL_ANGLE_texture_compression_dxt5,GL_ANGLE_texture_multisample,GL_ANGLE_texture_usage,GL_ANGLE_translated_shader_source,GL_ANGLE_vulkan_image,GL_ANGLE_yuv_internal_format,GL_APPLE_clip_distance,GL_ARM_rgba8,GL_ARM_shader_framebuffer_fetch,GL_ARM_shader_framebuffer_fetch_depth_stencil,GL_CHROMIUM_bind_generates_resource,GL_CHROMIUM_bind_uniform_location,GL_CHROMIUM_color_buffer_float_rgb,GL_CHROMIUM_color_buffer_float_rgba,GL_CHROMIUM_copy_compressed_texture,GL_CHROMIUM_copy_texture,GL_CHROMIUM_lose_context,GL_EXT_EGL_image_array,GL_EXT_EGL_image_external_wrap_modes,GL_EXT_EGL_image_storage,GL_EXT_base_instance,GL_EXT_blend_minmax,GL_EXT_buffer_storage,GL_EXT_clear_texture,GL_EXT_clip_control,GL_EXT_clip_cull_distance,GL_EXT_color_buffer_float,GL_EXT_color_buffer_half_float,GL_EXT_compressed_ETC1_RGB8_sub_texture,GL_EXT_conservative_depth,GL_EXT_copy_image,GL_EXT_debug_label,GL_EXT_debug_marker,GL_EXT_depth_clamp,GL_EXT_discard_framebuffer,GL_EXT_disjoint_timer_query,GL_EXT_draw_buffers,GL_EXT_draw_buffers_indexed,GL_EXT_draw_elements_base_vertex,GL_EXT_external_buffer,GL_EXT_float_blend,GL_EXT_frag_depth,GL_EXT_instanced_arrays,GL_EXT_map_buffer_range,GL_EXT_memory_object,GL_EXT_multi_draw_indirect,GL_EXT_occlusion_query_boolean,GL_EXT_polygon_offset_clamp,GL_EXT_primitive_bounding_box,GL_EXT_read_format_bgra,GL_EXT_robustness,GL_EXT_sRGB,GL_EXT_sRGB_write_control,GL_EXT_semaphore,GL_EXT_semaphore_fd,GL_EXT_separate_shader_objects,GL_EXT_shader_framebuffer_fetch,GL_EXT_shader_framebuffer_fetch_non_coherent,GL_EXT_shader_io_blocks,GL_EXT_shader_non_constant_global_initializers,GL_EXT_shader_texture_lod,GL_EXT_shadow_samplers,GL_EXT_texture_border_clamp,GL_EXT_texture_buffer,GL_EXT_texture_compression_bptc,GL_EXT_texture_compression_dxt1,GL_EXT_texture_compression_rgtc,GL_EXT_texture_compression_s3tc_srgb,GL_EXT_texture_cube_map_array,GL_EXT_texture_filter_anisotropic,GL_EXT_texture_format_BGRA8888,GL_EXT_texture_mirror_clamp_to_edge,GL_EXT_texture_rg,GL_EXT_texture_sRGB_R8,GL_EXT_texture_sRGB_RG8,GL_EXT_texture_sRGB_decode,GL_EXT_texture_shadow_lod,GL_EXT_texture_storage,GL_EXT_texture_type_2_10_10_10_REV,GL_EXT_unpack_subimage,GL_KHR_blend_equation_advanced,GL_KHR_debug,GL_KHR_robustness,GL_KHR_texture_compression_astc_ldr,GL_NV_depth_buffer_float2,GL_NV_fence,GL_NV_framebuffer_blit,GL_NV_pack_subimage,GL_NV_pixel_buffer_object,GL_NV_polygon_mode,GL_NV_read_depth,GL_NV_read_depth_stencil,GL_NV_read_stencil,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_subtract,GL_OES_compressed_EAC_R11_signed_texture,GL_OES_compressed_EAC_R11_unsigned_texture,GL_OES_compressed_EAC_RG11_signed_texture,GL_OES_compressed_EAC_RG11_unsigned_texture,GL_OES_compressed_ETC1_RGB8_texture,GL_OES_compressed_ETC2_RGB8_texture,GL_OES_compressed_ETC2_RGBA8_texture,GL_OES_compressed_ETC2_punchthroughA_RGBA8_texture,GL_OES_compressed_ETC2_punchthroughA_sRGB8_alpha_texture,GL_OES_compressed_ETC2_sRGB8_alpha8_texture,GL_OES_compressed_ETC2_sRGB8_texture,GL_OES_copy_image,GL_OES_depth24,GL_OES_depth32,GL_OES_depth_texture,GL_OES_depth_texture_cube_map,GL_OES_draw_buffers_indexed,GL_OES_draw_elements_base_vertex,GL_OES_draw_texture,GL_OES_element_index_uint,GL_OES_fbo_render_mipmap,GL_OES_framebuffer_object,GL_OES_get_program_binary,GL_OES_mapbuffer,GL_OES_packed_depth_stencil,GL_OES_point_size_array,GL_OES_point_sprite,GL_OES_primitive_bounding_box,GL_OES_required_internalformat,GL_OES_rgb8_rgba8,GL_OES_sample_shading,GL_OES_sample_variables,GL_OES_shader_image_atomic,GL_OES_shader_io_blocks,GL_OES_shader_multisample_interpolation,GL_OES_standard_derivatives,GL_OES_surfaceless_context,GL_OES_texture_3D,GL_OES_texture_border_clamp,GL_OES_texture_buffer,GL_OES_texture_cube_map,GL_OES_texture_cube_map_array,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_OES_vertex_type_10_10_10_2,GL_OVR_multiview,GL_OVR_multiview2
HasFiveWayNavigation=false
TouchScreen=3
GL.Version=196609
Build.VERSION.RELEASE=16
Build.BOOTLOADER=unknown
Build.MANUFACTURER=QEMU
```
```bash
apkeep --app com.google.android.tts -d google-play -o split_apk=true,device_properties_file=aurora_store_QEMU_virtio_x86_64.properties -e EMAIL --auth-token AUTH_TOKEN --accept-tos .
```
Output:
```
thread 'main' (327879) panicked at /home/admin/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/gpapi-6.1.0/src/lib.rs:208:18:
Invalid device codename
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
```
The working command is:
```bash
apkeep --app com.google.android.tts -d google-play -o split_apk=true,device=default,device_properties_file=aurora_store_QEMU_virtio_x86_64.properties -e EMAIL --auth-token AUTH_TOKEN --accept-tos .
```
Output:
```
Google Play Terms of Service accepted.
Downloading com.google.android.tts...
com.google.android.tts downloaded successfully!
```
but `apkeep` should not crash in my opinion.
Above commands may not be minimized to reproduce the behavior.
Personal notes: [Benjamin_Loison/apkeep/issues/1](https://codeberg.org/Benjamin_Loison/apkeep/issues/1)
Contributor guide
No contributing guide indexed for this repository
Research direction
Start by running the provided apkeep command with the QEMU device properties file and tracing how the device option is handled before the gpapi error. Check the gpapi interaction around the reported “Invalid device codename” failure. Done means the invalid input no longer causes a panic and the working device=default command still downloads the APK.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- cli
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 66/100