EFForg / EFForg/apkeep

*Invalid device codename* crash

Open
#242 0 comments 0 reactions 0 assignees View on GitHub
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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.