Best of AndroidJuly 2024

  1. 1
    Article
    Avatar of dhhDavid Heinemeier Hansson·2y

    Living with Linux and Android after two decades of Apple

    Switching from Apple to Linux and Android offers a refreshing change and new opportunities. Embracing an open-source operating system can provide greater flexibility, customization, and a renewed sense of discovery in both software and hardware. This transition can lead to exploring tools like Neovim, Framework laptops, and customizable Android launchers, enriching the user experience beyond the Apple ecosystem.

  2. 2
    Article
    Avatar of tilThis is Learning·2y

    7 Open Source Projects You Should Know - Java Edition ✔️

    Discover seven notable open-source projects written in Java, spanning various domains from Android testing (Robolectric) to distributed search engines (Elasticsearch and OpenSearch), to IoT platforms (ThingsBoard). Each project includes a brief overview, key features, and starter guides, making them great for both potential use and contribution.

  3. 3
    Article
    Avatar of communityCommunity Picks·2y

    The Decline Of Mobile Development

    Mobile development for Android and iOS has become increasingly frustrating due to frequent OS updates requiring new compliance measures that complicate codebases. Developers face restrictive actions if their apps aren't updated in time, taking away from feature development and inflating costs. Many developers find the constant hoop-jumping and convoluted design patterns discouraging, leading them to switch to web development where they can build faster with fewer constraints. Google and Apple's control over app ecosystems and mandatory in-app purchases further dissuade developers. As a result, many are leaving mobile development in favor of the web.

  4. 4
    Article
    Avatar of medium_jsMedium·2y

    Advanced Kotlin Coroutine Cheat sheet (for Android Engineer)

    This cheat sheet provides advanced insights and best practices for using Kotlin Coroutines in Android development. Key elements like CoroutineContext, Job, Dispatcher, and CoroutineScope are thoroughly explained. It covers essential concepts such as coroutine builders, dispatcher selection, and how to manage parallel execution and cancellation of coroutines. Additionally, it offers practical advice on avoiding synchronization issues and optimizing performance.

  5. 5
    Article
    Avatar of pandProAndroidDev·2y

    Stop throwing exceptions!

    In Kotlin, it's recommended to avoid throwing exceptions and instead handle error scenarios using try/catch expressions, result objects, and functional programming paradigms. The default usage of try/catch is criticized for reducing readability and maintainability. The post suggests Kotlin's built-in Result class for better error handling, providing examples of how to wrap operations in Result objects and handle errors more effectively. This approach promotes cleaner, more testable code without relying on exceptions.

  6. 6
    Article
    Avatar of collectionsCollections·2y

    Google to Remove Low-Quality Android Apps from Play Store Starting August 31st

    Google is set to enforce stricter quality standards for Android apps on the Play Store starting August 31, 2024. Apps which frequently crash, lack adequate content, or are otherwise unresponsive may be removed. This initiative aims to enhance user experience and maintain a high-quality app ecosystem. Developers must ensure their apps meet these new standards to avoid removal or restrictions.

  7. 7
    Video
    Avatar of davidbombalDavid Bombal·2y

    Cracking WiFi WPA2 Handshakes (And does it work with WPA3?)

  8. 8
    Article
    Avatar of pandProAndroidDev·2y

    Kotlin Lazy vs Lateinit Explained

    Explore ways to initialize properties in Kotlin using lazy and lateinit keywords. Lazy is used for immutable properties and initializes the value upon first use, promoting better resource management. Lateinit is for mutable properties, allowing initialization to occur later, but requires careful handling to avoid crashes. For primitive types, use Delegates.notNull to achieve similar functionality.

  9. 9
    Article
    Avatar of androiddevAndroid Developers Blog·2y

    The Fourth Beta of Android 15

    The fourth and final beta of Android 15 has been released, marking the second Platform Stability release. Developers should finalize their apps for compatibility and submit any critical feedback before Android 15's official release. Key changes include the removal of legacy PNG-based emoji fonts, requiring updates to apps that use custom font renderers. Developers are encouraged to test their apps thoroughly, update SDKs, and take advantage of new features in Android 15. Updates to Pixel devices enrolled in the beta program will be available over-the-air starting tonight.

  10. 10
    Article
    Avatar of pandProAndroidDev·2y

    Jetpack Compose Previews: Delving Deep Into Their Inner Workings

    Jetpack Compose Previews enable rapid UI design iterations and can be run using `adb` without Android Studio. Understanding `PreviewActivity` and its role in hosting composables, as well as how to customize previews in multi-modular projects, can greatly enhance the development process. The guide provides detailed steps on generating and running instrumented APKs for previews and customizing preview behavior and appearance.

  11. 11
    Article
    Avatar of foojayioFoojay.io·2y

    The Best Way to Handle Phone Numbers

    Processing phone numbers can be simplified using Google's libphonenumber library. This library helps in parsing, formatting, and validating international phone numbers. It's recommended to store the country code and national number separately in a database for better handling.

  12. 12
    Article
    Avatar of itnextITNEXT·2y

    Modeling Android Screen State

    The post discusses effective strategies for managing Android screen states using ViewModels and sealed classes. The approach leverages intermediate streams to create a single observable for the view state, ensuring easier maintenance, reliability, and readability of code. The method is showcased with examples from a simple map app, outlining states like Loading, PermissionDenied, and WithLocation, and demonstrating how to handle these within the ViewModel. Benefits include flexibility, the ability to move logic into sealed interfaces/classes, and better testability.

  13. 13
    Article
    Avatar of pandProAndroidDev·2y

    Kotlin reified Explained (no more type erasure)

    Kotlin solves the problem of type erasure at runtime by introducing the 'reified' keyword, which preserves type information. This keyword works in conjunction with inline functions, allowing code to be moved to the call site and maintaining type information. This approach enables writing more generic and readable algorithms.

  14. 14
    Article
    Avatar of hnHacker News·2y

    How did Facebook intercept their competitor's encrypted mobile app traffic?

    Facebook is facing a class action lawsuit over claims that it intercepted encrypted traffic from the Onavo Protect app to gain competitive insights. Using techniques akin to a MITM attack, Facebook allegedly decrypted specific domains' traffic by prompting users to install a CA certificate. However, improved security measures in newer Android versions prevented this from being feasible. The core controversy lies in whether the data interception was legal or ethical. The continued analysis of archived app versions and court documents sheds light on Facebook's methods and the technical challenges involved.

  15. 15
    Article
    Avatar of wearedotnetWe Are .NET·2y

    Various methods for barcode scanning in .NET MAUI

    Modern mobile applications often require barcode scanning features for various functionalities such as product information retrieval and inventory management. .NET MAUI enables cross-platform development with several libraries for barcode scanning. This guide explores three methods: MLKit for Android, Camera.MAUI.ZXing offering cross-platform support, and CommunityToolkit.Maui.Camera with customizable options. Detailed implementation steps are provided for each method, empowering developers to add robust barcode scanning to their applications.

  16. 16
    Article
    Avatar of medium_jsMedium·2y

    Build Android and iOS apps with SwiftUI

    In the evolving mobile app development landscape, Skip provides an innovative solution for iOS developers to build native Android apps using their existing Swift and SwiftUI skills within Xcode. This approach eliminates the need to learn new frameworks and simplifies the development process. Skip works by transpiling SwiftUI code into Kotlin and Jetpack Compose, enabling native performance on both platforms. With straightforward installation via Homebrew and integration with familiar tools, developers can streamline their workflow for creating cross-platform applications.

  17. 17
    Article
    Avatar of pandProAndroidDev·2y

    PDF Viewer using Coil

    Learn how to integrate a PDF viewer into your Android app using Coil. This guide covers creating a custom PDF decoder, adding it to the Coil configuration, and displaying PDF pages in activities or with Jetpack Compose. The approach leverages Coil’s extensibility for handling non-standard image formats efficiently.

  18. 18
    Article
    Avatar of hnHacker News·2y

    Reverse Engineering the Verification QR Code on my Diploma

    On finishing his exams, the author received a PDF containing a QR code for verification via the CycladesVérif app. Intrigued by the potential for reverse engineering, the author disassembled the app to explore how the QR code's data is encrypted and decrypted using RSA. Despite challenges and inherent flaws in the RSA key usage by the app, the author determined that breaking the security is impractical due to computational limitations.

  19. 19
    Article
    Avatar of androiddevAndroid Developers Blog·2y

    Making security easy: How we are helping you fix vulnerabilities in your Android apps

    Google scans every app on Google Play for common security vulnerabilities. To help developers create secure apps, Google launched the Android Application Security Knowledge Base (AAKB), offering remediation examples and vetted guidelines aligned with OWASP MASVS standards. Developers can access guidance via the AAKB homepage or directly through Android Studio lint checks, enhancing app security during development.

  20. 20
    Article
    Avatar of devsquadDev Squad·2y

    How to Fix : Flutter [go_router] PopScope Issue on Android: A Step-by-Step Guide

    Facing an issue with the PopScope not recognizing the back button callback on Android while migrating a Flutter app to the latest version? This guide provides step-by-step instructions to resolve the problem caused by the go_router package.

  21. 21
    Article
    Avatar of pandProAndroidDev·2y

    Building On-Device Face Recognition In Android

    The post explains how to build an on-device face recognition app for Android using FaceNet, TensorFlow Lite, Mediapipe, and ObjectBox. It covers the face recognition pipeline process, from detecting and cropping faces with Mediapipe, transforming these into embeddings using FaceNet/TensorFlow Lite, to storing and managing data with ObjectBox. The implementation also includes performing a nearest-neighbor search for face recognition using these technologies.

  22. 22
    Article
    Avatar of medium_jsMedium·2y

    Moving Android PWA to Capacitor

    ADAMANT Messenger has transitioned its Android app from PWABuilder to Capacitor.js with the latest PWA v4.7 update. This shift allows full control over native code, custom plugins, and CI/CD automation, ensuring a performant and secure app. Capacitor.js offers ease of integration with modern web frameworks, cross-platform deployment, and access to native APIs, making it a versatile tool compared to native Android development and PWABuilder.