FrostWire 2.9.2 Update: A Wintry Blast of Innovation!

As winter paints the world with frosty hues, FrostWire steps into the spotlight with its latest update—version 2.9.2 build 743. This release is more than just an update; it’s a technological blizzard designed to enhance your music experience while embracing the latest in Android development. Here’s everything you need to know about this feature-packed release.

DOWNLOAD FROSTWIRE 2.9.2 BUILD 743 FOR ANDROID DEVICES


Why This Update Matters

In the ever-changing world of Android, keeping up with the latest trends and requirements is essential. FrostWire 2.9.2 doesn’t just keep pace; it sets a new standard by targeting Android 14, embracing Java 17, and ensuring compatibility with modern devices. Whether you’re a long-time FrostWire fan or a newcomer, this update is crafted to bring you a seamless, reliable, and cutting-edge experience.


The Highlights

1. Platform Evolution:

  • Targeting Android 14 (SDK 34) with Java 17 compatibility ensures FrostWire runs smoothly on the latest devices.
  • Minimum SDK bumped to Android 8.0 (Oreo), bringing improved security and features.

2. Streamlined Codebase:

  • Removed outdated dependencies for a cleaner, more efficient app.
  • Leveraged Android’s Workers API to replace background services, boosting performance and maintainability.

3. Notification Magic:

  • Notifications have been modernized to comply with Android 13/14 standards. Say goodbye to outdated alerts and hello to streamlined notifications with buildBasicNotification().

4. Playlist Perfection:

  • Unified playlist fetching using MusicUtils.getPlaylists().
  • Fixed pesky bugs, ensuring user-created playlists always display as intended.

5. Thread Safety and Error Handling:

  • Introduced CountDownLatch and AtomicReference to handle app states more robustly.
  • Enhanced error logging and defensive checks to keep issues at bay.

6. Ad Smarts:

  • Fixed ad debounce issues to prevent unnecessary reloads, ensuring a smoother user experience.

What’s New for Developers

For the tech-savvy among us, here’s a glimpse into the developer-focused upgrades:

  • Dependency updates, including androidx.core:core:1.15.0 and firebase-bom:33.7.0.
  • Removed play-services-location and play-services-ads-identifier to stay aligned with modern standards.
  • Improved MusicPlaybackService for lifecycle handling and state management.

Read the full changelog here


Built for the Future

This release isn’t just about the present; it’s a step toward a more sustainable FrostWire. By adopting modern APIs and practices, we’re ensuring the app continues to thrive as Android evolves. Whether it’s enhanced lifecycle management, better compliance with strict mode policies, or improved dependency management, every change is a step forward.


A Winter Adventure Awaits

Just like a frosty breeze invigorates the senses, FrostWire 2.9.2 revitalizes your app experience. Whether you’re curating playlists, discovering music, or simply vibing to your favorite tunes, this update ensures a smoother, more enjoyable journey.

So, what are you waiting for? Update to FrostWire 2.9.2 and let this wintry wonderland of features transport you to a new era of music enjoyment.

Download the update now, and let’s make this a winter to remember!


Share Your Thoughts

We’d love to hear from you! Found a new favorite feature or have suggestions for the next update? Drop us a comment below or join the conversation on our social media channels. Together, let’s keep FrostWire cool and cutting-edge.

Enhancing User Experience and Performance: A Comprehensive Overview of FrostWire for Android 2.8.0 Updates

Introduction

In the current landscape of mobile application development, user experience (UX) and performance are paramount to maintaining an application’s relevance and engagement. With the release of FrostWire for Android 2.8.0, several key updates have been implemented to enhance the overall performance, streamline the user interface (UI), and adapt to changing platform requirements. These updates include the introduction of dark mode support, enhanced theme management, and the removal of the deprecated in-app store functionality—a decision driven by FrostWire’s recent removal from the Google Play Store. This release marks a pivotal moment in FrostWire’s development, as we shift our focus toward a more streamlined and responsive application.

This paper provides a detailed analysis of the technical updates introduced in FrostWire 2.8.0, including changes to the project’s dependency structure, the refactoring of legacy code, and the implementation of UI adjustments to ensure consistency across different screen sizes and themes. Additionally, we explore the rationale behind the removal of the in-app store, an element that no longer serves its original purpose following FrostWire’s de-listing from Google Play.

Background

Mobile applications operate in an environment of continuous change, where both platform-specific requirements and user expectations evolve rapidly. One of the most notable trends in recent years is the adoption of dark mode, which offers users a visually comfortable alternative to traditional light themes, especially in low-light settings. Additionally, dark mode has been shown to conserve battery life on devices with OLED screens. With Android introducing system-wide support for dark mode in Android 10, it became essential for FrostWire to integrate this feature to meet user expectations.

In response to this demand, FrostWire 2.8.0 introduces full dark mode support via the new colors.xml resource file. This file defines color values that are applied across the application’s UI when dark mode is enabled. The addition of dark mode is complemented by the inclusion of the ThemeManager class, which dynamically adjusts the app’s theme based on user preferences or system settings. This flexible theme management system ensures seamless transitions between light and dark modes, improving the overall user experience.

An equally significant change in this release is the removal of the in-app store functionality. Historically, the in-app store allowed users to make purchases and access promotional content via Google Play. However, due to FrostWire’s removal from the Google Play Store, maintaining this functionality no longer made sense. The classes responsible for this integration, including PlayStore.java, Store.java, and StoreBase.java, have been deprecated and removed. The decision to remove these components reflects a shift in FrostWire’s strategic priorities, focusing on providing users with a cleaner and more efficient file-sharing experience, without the need for in-app purchases or offers.

Project Dependencies and Code Refactoring

The 2.8.0 release also involves critical updates to the application’s underlying infrastructure. The build.gradle file has been updated to align with the latest Android library versions, ensuring that the application benefits from improved security, performance optimizations, and enhanced compatibility with newer Android devices. Regular updates to project dependencies are crucial in maintaining the integrity and stability of the application, particularly as older libraries become obsolete and are no longer supported by the Android ecosystem.

In addition to dependency updates, the release features extensive refactoring of existing code. Key UI layout files such as activity_base.xml, activity_player_base.xml, and audio_player_controls.xml have been modified to ensure consistency across different screen resolutions and device types. These changes are particularly important for maintaining a cohesive user experience as FrostWire continues to support a broad range of devices.

Significant refactoring was also conducted in the fragment and preferences management systems. For example, ApplicationPreferencesFragment.java has been streamlined for better performance and maintainability, removing unnecessary code paths and optimizing UI rendering. These changes reduce the technical debt of the project and ensure that the application remains agile and responsive to future feature enhancements.

Finally, localization has been improved across multiple languages, reflecting FrostWire’s commitment to serving its global user base. The updates to translation files address longstanding issues with certain language strings, ensuring a more polished and accessible user experience for non-English speakers.

Installer (95 MB)
https://github.com/frostwire/frostwire/releases/download/frostwire-android-2.8.0-build-737/frostwire-android-release-2.8.0-b737-plus.apk

FrostWire for Android 2.8.0: Introducing Dark Mode

We’re excited to announce FrostWire for Android 2.8.0, packed with updates that improve the way you experience the app! Whether you’re a music lover, a file sharer, or someone who enjoys sleek design, this release has something for everyone. Let’s dive into what’s new!

OFFICIAL INSTALLER!
frostwire-android-release-2.8.0-b737-plus.apk 95.1 MB

1. Dark Mode is Here!

You asked, and we listened. Dark Mode has officially arrived in FrostWire! With Dark Mode, you can now enjoy a more comfortable viewing experience, especially in low-light environments. Whether you’re browsing your downloads late at night or simply prefer a darker aesthetic, FrostWire will automatically adapt to your system settings or personal preference.

  • Why you’ll love it:
    • Easier on the eyes during nighttime use.
    • Helps save battery life on devices with OLED screens.
    • A sleek, modern look that feels great to use.

2. Say Hello to the New Theme Manager

We’ve revamped the way FrostWire handles themes with our all-new Theme Manager. This behind-the-scenes upgrade ensures smoother transitions between themes and gives us the flexibility to add more customization options in the future.

  • What this means for you:
    • Seamless switching between light and dark modes.
    • A cleaner, more cohesive look across the app.
    • Future updates could bring more personalization options, so stay tuned!

3. Goodbye to In-App Store

As we continue refining the FrostWire experience, we’ve decided to remove the in-app store functionality. While it was fun while it lasted, we realized that our users prefer a more streamlined app without the extra distractions. This change helps us focus on what really matters—delivering the best file-sharing experience.

  • What’s changed:
    • We’ve removed all code related to the in-app store and offers.
    • FrostWire is now leaner and faster without unnecessary features.

4. A Smoother, More Efficient Experience

This update isn’t just about adding features—it’s about making the entire app run smoother. With less clutter and more focus on what you love about FrostWire, you’ll notice faster performance and an even more intuitive interface.


Update Now and Enjoy the New FrostWire!

Ready to take the new features for a spin? Update FrostWire for Android to version 2.8.0 and enjoy the best experience yet. As always, we’d love to hear what you think. Drop us a review or join the conversation on our community forums!

Stay tuned for more exciting updates as we continue to evolve FrostWire, your favorite file-sharing app!

Welcome to jlibtorrent 2.0.11.0

This is our first build of jlibtorrent-2.0, all tests are passing but we have yet to integrate the library with a production bittorrent client such as FrostWire for Desktop and FrostWire for Android.

We’ll be doing so over the next weeks, and once we’ve throughly tested everything is working as expected we’ll promote our next build (if necessary) to a stable release you can use to update your app to support bittorrent 2.0 features, plus all the fixes in libtorrent made the last 15 months.

PRE-RELEASE BINARIES
All the jlibtorrent unit tests pass with these, however, it has not been integrated to an actual bittorrent client yet.
most likely we’ll be releasing updates soon as we migrate FrostWire clients to use jlibtorrent 2.x

  • Migration and Integration
    • Migration to support libtorrent 2.0 integration.
    • Maintained 1.2.x on a separate branch without active maintenance; pull requests are welcome.
  • SWIG Interface Enhancements
    • Modularization of SWIG Interfaces:
      • SWIG interface files have been modularized for better maintainability and readability.
      • Added separate .i files for various libtorrent components, including:
        • libtorrent_address.i
        • libtorrent_tcp_endpoint.i
        • libtorrent_udp_endpoint.i
        • libtorrent_kademlia_dht_state.i
        • libtorrent_client_data.i
        • libtorrent_sha1_hash.i
        • libtorrent_info_hash.i
        • libtorrent_storage_defs.i
        • libtorrent_bitfield.i
        • libtorrent_operations.i
        • libtorrent_error_code.i
        • libtorrent_announce.i
        • libtorrent_file_storage.i
        • libtorrent_peer_request.i
        • libtorrent_bdecode.i
        • libtorrent_torrent_info.i
        • libtorrent_torrent_flags.i
        • libtorrent_add_torrent_params.i
        • libtorrent_close_reason.i
        • libtorrent_peer_info.i
        • libtorrent_torrent_handle.i
        • libtorrent_torrent_status.i
        • libtorrent_performance_counters.i
        • libtorrent_portmap.i
        • libtorrent_piece_block.i
        • libtorrent_socket_type.i
        • libtorrent_entry.i
    • Alert Types Integration:
      • Integrated additional alert type interface files to comprehensively cover libtorrent’s alert system:
        • libtorrent_dht_announce_alert.i
        • libtorrent_external_ip_alert.i
        • libtorrent_listen_failed_alert.i
        • libtorrent_listen_succeeded_alert.i
        • libtorrent_incoming_connection_alert.i
        • libtorrent_peer_alert.i
        • libtorrent_dht_direct_response_alert.i
        • libtorrent_dht_outgoing_get_peers_alert.i
        • libtorrent_dht_pkt_alert.i
        • libtorrent_udp_error_alert.i
        • libtorrent_dht_sample_infohashes_alert.i
        • libtorrent_tracker_alert.i
        • libtorrent_dht_lookup.i
        • libtorrent_portmap_alert.i
        • libtorrent_portmap_error_alert.i
        • libtorrent_dht_mutable_item_alert.i
        • libtorrent_dht_put_alert.i
        • libtorrent_session_stats_alert.i
        • libtorrent_peer_log_alert.i
        • libtorrent_read_piece_alert.i
        • libtorrent_dht_stats_alert.i
        • libtorrent_torrent_conflict_alert.i
    • Type Aliases and Templates:
      • Introduced typed_bitfield template for handling different index types, enhancing type safety and flexibility.
    • Operator Renaming:
      • Mapped C++ operators to Java-friendly method names using %rename directives:
        • operator== to op_eq
        • operator!= to op_ne
        • operator< to op_lt
        • operator> to op_gt
        • operator<= to op_lte
        • operator>= to op_gte
        • operator~ to op_inv
        • operator^ to op_xor
        • operator| to op_or
        • operator& to op_and
        • operator[] to op_at
      • Included boost_system_error_code.i for proper error handling.
  • Build Scripts and Dependencies
    • Added New Build Options:
      • Introduced --swig-only and --build-only options to the SWIG/build scripts (run-swig.sh and build.sh).
        • --swig-only: Executes only the SWIG interface generation without initiating the build process.
        • --build-only: Runs only the build process using pre-generated SWIG wrappers, skipping the SWIG generation phase.
      • These options provide developers with greater flexibility during development and testing by allowing selective execution of build stages.
    • Build Script Enhancements:
      • Addedprepare-macos.sh script to automate the installation of dependencies and the required SWIG version on macOS systems.
        • Installs necessary packages using Homebrew (wgetpcre2).
        • Checks and installs SWIG version 4.2.1 if not already present.
        • Verifies successful installation post-build.
      • Updatedrun-swig.sh script to handle platform-specific code adjustments and ensure correct SWIG version usage.
        • Implemented additional sed commands to fix code issues in libtorrent headers before SWIG processing.
        • Added safeguards to handle SWIG failures gracefully, providing informative messages and exiting if necessary.
        • Updated build flags and configurations to align with the latest libtorrent ABI versions.
        • Set TORRENT_ABI_VERSION=4 and updated namespaces for versions 3 and 4.
  • Dependency Upgrades
    • Boost Upgrade:
      • Upgraded Boost library to version 1.86.0 to improve performance and compatibility.
    • OpenSSL Upgrade:
      • Updated OpenSSL to version 1.1.1t to enhance security and support the latest protocols.
    • Gradle Upgrade:
      • Upgraded Gradle to version 8.10.2 to leverage new features and improvements in build automation.
    • Java Development Kit (JDK):
      • Jar built with JDK 11, ensuring compatibility with the build environment.
    • Libtorrent Update:
      • Updated libtorrent to RC_2_0 (rev: 2ab8fedabb7716947edc77958da6d0b5e1040df9) to incorporate the latest fixes and features from the libtorrent 2.0 branch.
    • Android NDK Upgrade:
      • Upgraded Android NDK to version r26d (LTS) from r25c, providing the latest toolchains and platform support.
    • SWIG Upgrade:
      • Upgraded SWIG to version 4.2.1 to improve interface generation and support new language features.
  • Exception and Error Handling
    • Enhanced Exception Handling:
      • Improved exception translation from C++ to Java within SWIG interfaces to ensure robust error management.
  • Compatibility and Performance Fixes
    • Fixed Compatibility Issues:
      • Resolved syntax issues in file_storage.hpp and ip_filter.hpp to ensure successful SWIG processing and avoid compilation errors.
      • Adjusted build flags and macros for Boost and libtorrent compatibility across different platforms.
    • Performance Optimizations:
      • Optimized SWIG typemaps and wrappers for efficient data handling, minimizing performance overhead in Java bindings.
  • Directors and Inheritance
    • Enabled SWIG Directors:
      • Enabled directors for classes requiring Java-side inheritance, facilitating the overriding of C++ virtual methods in Java subclasses:
        • add_files_listener
        • set_piece_hashes_listener
        • alert_notify_callback
        • swig_plugin
        • posix_wrapper
  • Code Clean-up and Maintenance
    • Ignored Deprecated and Internal Elements:
      • Excluded numerous deprecated methods, internal functions, and classes from the SWIG interface to streamline Java bindings and prevent potential conflicts.
    • Removed Redundant Code:
      • Deleted unnecessary %ignore directives and obsolete SWIG configurations to maintain a clean and maintainable interface.
    • Enhanced Documentation:
      • Improved comments and added TODOs for future integrations, such as web_seed_entry.hpp once merged from the master branch.
2.0.11.0
 * Migration to support libtorrent 2.0 integration
 * Maintained 1.2.x on a separate branch without active maintenance; pull requests are welcome
 * SWIG interface files have been modularized for better maintainability and readability
 * Added missing alert types
 * Introduced typed_bitfield template
 * Operator renaming for Java compatibility
 * Included boost_system_error_code.i
 * Added prepare-macos.sh script
 * Updated run-swig.sh script
 * Set TORRENT_ABI_VERSION=4
 * Boost 1.86.0 upgrade
 * OpenSSL 1.1.1t upgrade
 * Gradle 8.10.2 upgrade
 * Jar built with JDK 11
 * Libtorrent updated to RC_2_0 (rev:2ab8fedabb7716947edc77958da6d0b5e1040df9)
 * Android NDK r26d (LTS) upgrade (from r25c)
 * Added `--swig-only` and `--build-only` options to swig/build scripts
 * Added `prepare-macos.sh` script for macOS build setup
 * Updated `run-swig.sh` script for improved SWIG processing 
 * Upgraded SWIG to 4.2.1
 * Enhanced exception handling in SWIG interfaces
 * Fixed issues in file_storage.hpp and ip_filter.hpp
 * Adjusted build flags and macros for Boost and libtorrent compatibility
 * Enabled SWIG directors for specific classes
 * Ignored deprecated methods in SWIG interface
 * Improved documentation and added TODOs
 * lt:fix uTP issue where closing the connection could corrupt the payload
 * lt:apply DSCP/TOS to sockets before initiating the TCP connection
 * lt:assume copy_file_range() exists on linux (unless old glibc)
 * lt:fix issue where set_piece_deadline() did not correctly post read_piece_alert
 * lt:fix integer overflow in piece picker
 * lt:torrent_status::num_pieces counts pieces passed hash check, as documented
 * lt:check settings_pack::max_out_request_queue before performance alert
 * lt:allow on_unknown_torrent method in the absence of active torrents (new plugin feature added)
 * lt:add feature to async_move_storage() to not move files
 * lt:fix reject resume data if it contains mismatching info hashes
 * lt:fix clear the candidate_cache when clear peer_list
 * lt:fix missing python converter for dht::announce_flags_t
 * lt:fix issue with web seed connections when they close and re-open
 * lt:fallocate() not supported is not a fatal error
 * lt:fix proxying of IPv6 connections via IPv4 proxy
 * lt:treat CGNAT address range as local IPs
 * lt:add stricter checking of piece layers when loading torrents
 * lt:add stricter checking of v1 and v2 hashes being consistent
 * lt:cache failed DNS lookups as well as successful ones
 * lt:add an i2p torrent state to control interactions with clear swarms
 * lt:fix i2p SAM protocol parsing of quoted messages
 * lt:expose i2p peer destination in peer_info
 * lt:fix i2p tracker announces
 * lt:fix issue with read_piece() stopping torrent on pieces not yet downloaded
 * lt:improve handling of allow_i2p_mixed setting to work for magnet links
 * lt:fix web seed request for renamed single-file torrents
 * lt:fix issue where web seeds could disappear from resume data
 * lt:extend save_resume with additional conditional flags
 * lt:fix issue with retrying trackers in tiers > 0
 * lt:fix last_upload and last_download resume data fields to use posix time
 * lt:improve error messages for no_connect_privileged_ports, by untangle it from the port filter
 * lt:fix I2P issue introduced in 2.0.0
 * lt:add async tracker status query, post_trackers()
 * lt:add async torrent status query, post_status()
 * lt:support loading version 2 of resume data format
 * lt:fix issue with odd piece sizes
 * lt:add async piece availability query, post_piece_availability()
 * lt:add async download queue query, post_download_queue()
 * lt:add async file_progress query, post_file_progress()
 * lt:add async peer_info query, post_peer_info()
 * lt:fix uTP streams timing out instead of closing cleanly
 * lt:add write_torrent_file_buf() overload for generating .torrent files
 * lt:add create_torrent::generate_buf() function to generate into a buffer
 * lt:fix copy_file when the file ends with a sparse region
 * lt:uTP performance, fix packet loss when sending is stalled
 * lt:fix trackers being stuck after session pause/resume
 * lt:fix bug in hash_picker with empty files
 * lt:uTP performance, prevent premature timeouts/resends
 * lt:add option to not memory map files below a certain size
 * lt:settings_pack now returns default values when queried for missing settings
 * lt:fix copy_file fall-back when SEEK_HOL/SEEK_DATA is not supported
 * lt:improve error reporting from file copy and move
 * lt:tweak pad file placement to match reference implementation (tail-padding)
 * lt:uTP performance, more lenient nagle's algorithm to always allow one outstanding undersized packet
 * lt:uTP performance, piggy-back held back undersized packet with ACKs
 * lt:uTP performance, don't send redundant deferred ACKs
 * lt:support incoming SOCKS5 packets with hostnames as source address, for UDP trackers
 * lt:ignore duplicate network interface change notifications on linux
 * lt:fix total_want/want accounting when forcing a recheck
 * lt:fix merging metadata with magnet links added on top of existing torrents
 * lt:add torrent_flag to default all file priorities to dont_download
 * lt:fix &so= feature in magnet links
 * lt:improve compatibility of SOCKS5 UDP ASSOCIATE
 * lt:fix madvise range for flushing cache in mmap_storage
 * lt:open files with no_cache set in O_SYNC mode~
 * lt:fix issue in use of copy_file_range() on linux
 * lt:avoid open-file race in the file_view_pool
 * lt:fix issue where stop-when-ready would not close files
 * lt:fix issue with duplicate hybrid torrent via separate v1 and v2 magnet links
 * lt:added new function to load torrent files, load_torrent_*()
 * lt:support sync_file_range() on linux
 * lt:fix issue in write_torrent_file() when file size is exactly piece size
 * lt:fix file_num_blocks() and file_num_pieces() for empty files
 * lt:add new overload to make_magnet_uri()
 * lt:add missing protocol version to tracker_reply_alert and tracker_error_alert
 * lt:fix privilege issue with SetFileValidData()
 * lt:add asynchronous overload of torrent_handle::add_piece()
 * lt:default to a single hashing thread, for full checks
 * lt:Fix bug when checking files and the first piece is invalid
 * lt:fix issue creating a v2 torrent from torrent_info containing an empty file
 * lt:make recheck files also update which files use partfile
 * lt:add write_through disk_io_write_mode, which flushes pieces to disk immediately
 * lt:improve copy file function to preserve sparse regions (when supported)
 * lt:add function to truncate over-sized files part of a torrent
 * lt:fix directory creation on windows shared folders
 * lt:add flag to make add_files() not record file attributes
 * lt:deprecate (unused) allow_partial_disk_writes settings
 * lt:fix disk-full error reporting in mmap_disk_io
 * lt:fixed similar-torrents feature for v2 torrents
 * lt:fix potential unbounded recursion in add_completed_job, in disk I/O
 * lt:deprecated (unused) volatile_read_cache setting
 * lt:fix part files being marked as hidden on window
 * lt:on windows, explicitly flush memory mapped files periodically
 * lt:fix build with WolfSSL
 * lt:fix issue where incoming uTP connections were not accepted over SOCKS5
 * lt:fix several issues in handling of checking files of v2 torrents, esp. from magnet links
 * lt:make the token limit when parsing metadata from magnet files configurable
 * lt:fix issue with stalled pieces on disk full errors
 * lt:fix missing python binding for file_progress_flags
 * lt:fix torrent_file_with_hashes() to fail when we don't have the piece layers
 * lt:restore path character encoding conversion for non UTF-8 locales on linux
 * lt:fix use-after-free bug in make_magnet_uri
 * lt:add write_torrent_file() to produce a .torrent file from add_torrent_params
 * lt:allow loading v2 .torrent files without piece layer
 * lt:fix issue with adding v2 torrents with invalid file root hash
 * lt:fix piece picker bug causing double-picks with prefer-contiguous enabled
 * lt:expose session_params in python bindings
 * lt:fix (deprecated) use of add_torrent_params::info_hash
 * lt:fix issue creating and loading v2 torrents with empty files. Improves conformance to BEP52 reference implementation
 * lt:add new torrent_file_with_hashes() which includes piece layers for creating .torrent files
 * lt:add file_prio_alert, posted when file priorities are updated
 * lt:fix issue where set_piece_hashes() would not propagate file errors
 * lt:add missing python binding for event_t
 * lt:add work-around for systems without fseeko() (such as Android)
 * lt:add convenience header libtorrent/libtorrent.hpp
 * lt:increase default max_allowed_in_request_queue
 * lt:fix loading non-ascii filenames on windows with torrent_info constructor (2.0 regression)
 * lt:add std::hash<> specialization for info_hash_t
 * lt:fix integer overflow in hash_picker and properly restrict max file sizes in torrents
 * lt:strengthen SSRF mitigation for web seeds
 * lt:add v1() and v2() functions to torrent_info
 * lt:fix piece_layers() to work for single-piece files
 * lt:fix python binding regression in session constructor flags
 * lt:fix unaligned piece requests in mmap_storage
 * lt:improve client_data_t ergonomics
 * lt:fix issue with concurrent access to part files
 * lt:fix attribute in single-file v2 torrent creation
 * lt:fix padding for empty files in v2 torrent creation
 * lt:add function to ask a file_storage whether it's v2 or not
 * lt:fix mtime field when creating single-file v2 torrents
 * lt:fix performance regression in checking files
 * lt:disable use of SetFileValidData() by default (windows). A new setting allows enabling it
 * lt:dropped dependency on iconv
 * lt:deprecate set_file_hash() in torrent creator, as it's superceded by v2 torrents
 * lt:deprecate mutable access to info_section in torrent_info
 * lt:removed deprecated lazy_entry/lazy_bdecode
 * lt:stats_alert deprecated
 * lt:remove bittyrant choking algorithm
 * lt:update userdata in add_torrent_params to be type-safe and add to torrent_handle
 * lt:add ip_filter to session_params
 * lt:added support for wolfSSL for SHA-1 hash and HTTPS (no Torrents over SSL)
 * lt:requires OpenSSL minimum version 1.0.0 with SNI support
 * lt:deprecated save_state() and load_state() on session in favour of new
 * lt:write_session_params() and read_session_params()
 * lt:added support for BitTorrent v2 (see docs/upgrade_to_2.0.html)
 * lt:create_torrent() pad_file_limit parameter removed
 * lt:create_torrent() merkle- and optimize-alignment flags removed
 * lt:merkle_tree removed from add_torrent_params
 * lt:announce_entry expose information per v1 and v2 info-hash announces
 * lt:deprecated sha1_hash info_hash members on torrent_removed_alert,
 * lt:torrent_deleted_alert, torrent_delete_failed_alert and add_torrent_params
 * lt:undeprecate error_file_metadata for torrent errors related to its metadata
 * lt:remove support for adding a torrent under a UUID (used for previous RSS support)
 * lt:remove deprecated feature to add torrents by file:// URL
 * lt:remove deprecated feature to download .torrent file from URL
 * lt:requires boost >= 1.66 to build
 * lt:update networking API to networking TS compatible boost.asio
 * lt:overhauled disk I/O subsystem to use memory mapped files (where available)
 * lt:libtorrent now requires C++14 to build
 * lt:added support for GnuTLS for HTTPS and torrents over SSL
 * lt:fix issue where stop-when-ready would not close files
 * lt:uTP performance, fix packet loss when sending is stalled
 * lt:uTP performance, prevent premature timeouts/resends
 * lt:uTP performance, more lenient nagle's algorithm to always allow one outstanding undersized packet
 * lt:uTP performance, piggy-back held back undersized packet with ACKs
 * lt:uTP performance, don't send redundant deferred ACKs
 * lt:fix wanted_done/done accounting when force-rechecking
 * lt:expose userdata via torrent_handle (back-port from 2.0)
 * lt:fix renaming of filenames that are too long for the filesystem
 * lt:made UPnP and LSD code avoid using select_reactor (to work around an issue on windows in boost.asio < 1.80)

FrostWire 2.2.5 for Android is out and ongoing

The full build for 2.2.5 is out, includes new search sources and has fixed multiple older ones.

Download FrostWire 2.2.5 for Android here

FrostWire 2.2.5 build 665 – NOV/18/2020

  • New: TorrentParadise search source
  • New: GloTorrents search source
  • New: Firebase Crash Analytics support
  • Yify search fixed
  • Torrentz2 search fixed
  • MagnetDL search fixed
  • Soundcloud search fixed
  • Fixed archive.org connection dropped/timeout error
  • com.google.android.gms:play-services-ads 19.4.0 -> 19.5.0
  • com.mopub:mopub-sdk-banner:5.12.0 -> 5.14.0
  • com.applovin:applovin-sdk:9.13.1 -> 9.14.5
  • com.mopub.mediation:applovin:9.13.1.0 -> 9.14.3.0
  • material 1.3.0-alpha02 -> 1.3.0-alpha03
  • browser 1.3.0-alpha05 -> 1.3.0->alpha06
  • exifinterface 1.2.0 -> 1.3.1
  • play-services 19.3.0 -> 19.4.0
  • core-ktx 1.3.1 -> 1.3.2
  • com.android.tools.build:gradle:4.0.1 -> 4.1.0
  • gradle wrapper update 6.1.1->6.6.1

[dev] How we got Travis Continuous Integration for multiple language projects in a mono repo

With every commit that makes it to the monorepo both the Android and Desktop project are built and tested. This post documents how we did that.

This post is intended to help developers on other projects where they need wish to start multiple travis jobs for completely different configurations.

Most documented examples on the web on how to use travis are usually focused only on building a single project in a single environment. But what if your repository has multiple projects that need to run under different contexts and programming languages.

At FrostWire we have a big monorepo which is host to multiple projects:

android/ # android client (java8, android-sdk environment gradle build)
desktop/ # desktop client and tests (java11+ gradle build)
common/ # common java sources for android and desktop projects


Travis allows you to define what we understand to be a “Job Matrix”, where each entry in this Matrix specifies an individual job (and they can run in parallel when you push your commit and travis gets word of it)

Here’s our first version of .travis.yml to build the android and desktop projects, and run tests jobs on a single git push:
matrix:
  include:
    # android build job
    - language: android
      dist: xenial
      android:
        components:
          - build-tools 29.0.2
          - android-29
          - extra-google-google_play_services
          - extra-google-m2repository
          - extra-android-m2repository
      licenses:
        - 'android-sdk-preview-license-52d11cd2'
        - 'android-sdk-license-.+'
        - 'google-gdk-license-.+'
      script:
        - yes | $ANDROID_HOME/tools/bin/sdkmanager "build-tools;29.0.2"
        - cd android
        - pwd
        - ./gradlew assembleDebug
    # desktop build job
    - language: java
      jdk:
        - openjdk11
      script:
        - cd desktop
        - gradle build
    # desktop/common tests job
    - language: java
      jdk:
        - openjdk11
      script:
        - cd desktop
        - gradle test

New FrostWire 2.2.1 with libtorrent/jlibtorrent 1.2.7 is the fastest version ever

Download it now
frostwire-android-release-2.2.1-b641-plus.apk 19.3 MB

We went from jlibtorrent 1.2.3.0 onto 1.2.7.0 because we weren’t happy with how stable 1.2.4, 1.2.5 and 1.2.6 were, however the libtorrent 1.2.7 engine starts the downloads almost immediatly for decently seeded torrents and we’ve seen speeds above 7Mb/s on our testing environment.

Below the list of fixes, most coming from the libtorrent project.

FrostWire 2.2.1 build 641 – JUN/17/2020

  • jlibtorrent/libtorrent 1.2.7.0 update
  • OpenSSL 1.1.1g update
  • dev: jlibtorrent build with boost 1.73.0
  • Fixes bug getting source URL from TPB search result
  • lt: fix incorrect filename truncation at multi-byte character
  • lt: always announce listen port 1 when using a proxy
  • lt: add set_alert_fd in python binding, to supersede set_alert_notify
  • lt: fix bug in part files > 2 GiB
  • lt: add function to clear the peer list for a torrent
  • lt: fix resume data functions to save/restore more torrent flags
  • lt: limit number of concurrent HTTP announces
  • lt: fix queue position for force_rechecking a torrent that is not auto-managed
  • lt: improve rate-based choker documentation, and minor tweak
  • lt: undeprecate upnp_ignore_nonrouters (but refering to devices on our subnet)
  • lt: increase default tracker timeout
  • lt: retry failed socks5 server connections
  • lt: allow UPnP lease duration to be changed after device discovery
  • lt: fix IPv6 address change detection on Windows
  • lt: fix peer timeout logic
  • lt: simplify proxy handling. A proxy now overrides listen_interfaces
  • lt: fix issues when configured to use a non-default choking algorithm
  • lt: fix issue in reading resume data
  • lt: revert NXDOMAIN change from 1.2.4
  • lt: don’t open any listen sockets if listen_interfaces is empty or misconfigured
  • lt: fix bug in auto disk cache size logic
  • lt: fix issue with outgoing_interfaces setting, where bind() would be called twice
  • lt: add build option to disable share-mode
  • lt: support validation of HTTPS trackers
  • lt: deprecate strict super seeding mode
  • lt: make UPnP port-mapping lease duration configurable
  • lt: deprecate the bittyrant choking algorithm
  • lt: add build option to disable streaming

Image credit to Marc-Olivier Jodoin
Royalty free image via Unsplash.com

Get FrostWire Plus 2.0.4. build 523!

DOWNLOAD NOW!

It’s the best time of the week! We invite you to get our latest release of FrostWire Plus for Android. We have optimized the app to work faster and more stable.

Changelog

FrostWire 2.0.4 build 523 - APR/21/2018
 - New jlibtorrent 1.2.0.18-RC2 (reverting to 1.2.0.17 while bugs are fixed)
 - Library updates: gms 15.0.0, re2j 1.2
 - Translations updated, Hungarian
 - Music player clean up and optimizations
 - Advanced Transfer Piece viewer rendering optimizations

What is FrostWire?

FrostWire is a free, open source BitTorrent client first released in September 2004, as a fork of LimeWire. It was initially very similar to LimeWire in appearance and functionality, but over time developers added more features, including support for the BitTorrent protocol and a full blown media player.

Get FrostWire Plus 2.0.2. build 515!

Happy Friday! If you have not yet updated, we recommend to download the new version of FrostWire Plus for Android! A lot of bugs fixed, VPN detection working better, and torrent search engines working again!

Changelog

FrostWire 2.0.2 build 515 – MAR/26/2018
– Application startup is faster
– Faster YT downloads
– Zooqle search fixes
– TorrentDownloads search fixes
– LimeTorrents search fixes
– Library updates: jlibtorrent 1.2.0.17, applovin 7.8.5, ogury 2.2.8, mopub 4.20.0, okhttp 3.10.0, gson 2.8.2, gradle 4.6, support libraries 27.1.0
– When audio files are deleted from “My Files” they’re now cleared from “Recents” in “My Music”
– Bug where deleted .torrent files would reappear fixed
– Translations updated, Urdu update
– Loads of Crash and Freeze fixes
– VPN detection and offering updates
– Notifications work again on Android 8.0

What is FrostWire?

FrostWire is a free, open source BitTorrent client first released in September 2004, as a fork of LimeWire. It was initially very similar to LimeWire in appearance and functionality, but over time developers added more features, including support for the BitTorrent protocol and a full blown media player.

Get FrostWire Plus 2.0.2. build 491!

DOWNLOAD NOW!

Happy Monday! We’re glad to announce this pre-release  of FrostWire Plus for Android. This new version includes several fixes related to search results.

On the other hand, remember that with FrostWire 2.0 you can now:

  • check the transfer status of your torrent in a cleaner interface with more info
  • check the details of your torrent transfer and access/copy its hash and a magnet link
  • check the storage path for each torrent transfer separately
  • set download and upload speeds for each transfer separately (especially useful if you want to prioritize downloads)
  • add and remove trackers to each torrent transfer
  • check which peers you are connected to
  • watch the torrent pieces come together in real time (surprisingly mesmerizing!)

Changelog

FrostWire 2.0.2 build 491 - FEB/12/2018
 - Zooqle search fixes
 - TorrentDownloads search fixes
 - LimeTorrents search fixes
 - Library updates: jlibtorrent 1.2.0.17-RC1, applovin 7.8.2, ogury 2.2.8

What is FrostWire?

FrostWire is a free, open source BitTorrent client first released in September 2004, as a fork of LimeWire. It was initially very similar to LimeWire in appearance and functionality, but over time developers added more features, including support for the BitTorrent protocol and a full blown media player.