Senior driver iOS weekly, only for you to present valuable information.

You can also contribute to this project. If you find valuable information, articles, tools, etc., please submit to us in Issues, and we will deal with it as soon as possible. Be sure to include your reasons. Suggestions and comments are also welcome to Issues.

WWDC20

This week, we pushed four articles in the WWDC20 internal reference column on the public account of the weekly newspaper, and each one is wonderful!

  • Widgets Read and Write Part 1: The adventure begins
  • “Widgets Read and Write” Part 2: Basic use of Timelines
  • Widgets read and Write Part 3: Advanced Use of Timelines
  • Getting started with WidgetKit means north

news

XCSSET Mac Malware: Infects Xcode Projects, Performs UXSS Attack on Safari, Other Browsers, Leverages Zero-day Exploits

Zhang Jiaf: Recently discovered an unconventional virus spreading through the Xcode developer project. Malicious code can be injected and run in a local Xcode project, can exploit the behavior of Data Vaults to steal cookies, and can abuse developer versions of Safari. A number of developers who shared their projects on GitHub were affected by the virus, resulting in dependency chaining attacks, so the threat escalated. Sources such as VirusTotal also confirm the threat. This blog post summarizes the findings of the virus, and the accompanying technical details contain the full details of the attack.

Joint verification? It’s apple again!

Parsifal: Anyone who’s logged into App Store Connect on Thursday afternoon (August 20) will find an unexplained notification – “Your account will need to be migrated to co-verified. You can start the process immediately or wait for the account to migrate automatically on August 28, 2020.” “, this wulitou notice once let everyone a face meng, this article through some clues combined with online discussion, this is a dragon incident. Interested in eating melon might as well have a look.

The article

🌟 🐕 Overall grasp CocoaPods core components

@JonyFang: Cocoapods is a package management tool that continues to iterate and evolve as the Apple ecosystem evolves, with each part of the core functionality evolving into relatively independent components. CocoaPods is a collection of these independent components that are split into separate Gem packages. This article focuses on the main components of CocoaPods and how each component relates to the overall Pods workflow.

The article can be viewed with these questions in mind:

  • What are the core modules of CocoaPods?
  • How does the pod command find and launch CocoaPods?
  • What is the process of POD Install?
  • What problem is pre_download in the resolve_Dependencies stage intended to solve?
  • What validate_targets validates?

After we know the general process of CocoaPods Install, we can make some changes and control it. Knowing the pre_install and post_install timing of the plug-in, for example, allows us to execute the corresponding Ruby script in our Podfile, as expected. Understanding the install process also helps us to analyze the performance of each phase to optimize and improve the efficiency of the install.

🐎 Mattt on WWDC 2020-NSHIPster

Zvving: WWDC 2020 has come to a close. Without the beer at live Bash 🍺 and the dancing of Apple execs 🕺, the well-made, moderated video and the new live stream are still exciting enough. Unique and wonderful, just like 2020 itself.

Now that WWDC 2020 is over, maybe it’s time to do what Mattt suggests: get out of the “gravitational field of reality.” Sleep well, eat healthy, exercise regularly, and take care of yourself and those around you. On this basis, reasonable selection of technology, good work.

🐕 How do annotations generate code in Dart

@CrazyCoderShi: This article takes a preliminary look at the annotated code generation technique in Dart. Compared to Java’s APT, it’s a bit cumbersome to use without runtime reflection. You need to manually build and configure the Builder, but this technique can help you solve problems such as routing, Template code, dynamic proxies, and so on, a way to deal with

🐕 Automatic build process for iOS

AidenRao: Any company with a desire for efficiency should have an automated build system.

  • In terms of efficiency, it frees up developers’ time. It is also more convenient for other colleagues to use.
  • Ensure standard packaging to avoid failure due to configuration or environment problems. Doing things right is more important than doing them fast.
  • Permission security, centralized management through the build system, is a black box for users.
  • In the project process, it is easy to do Daily builds or automated tests when required.

The iOS building process in this article has basically stabilized after two years of use by the author. The detailed introduction can be used as a reference for building, but also for learning principles.

🐢 Explore the underlying logic of the threading model/message loop in Flutter

CrazyCoderShi: The multi-threaded model and event loops in threads are an essential part of the OS and play a very important role in distributing and scheduling asynchronous tasks. This article explains in detail how the threading model and event loops in Flutter are implemented.

  • Each Thread corresponds to a TaskRunner and MessageLoop is stored through the Thread Local mechanism
  • Each TaskRunner corresponds to a Corresponding MessageLoop
  • Each MessageLoop has its own TaskQueue, which is implemented using priority_queue
  • Each TaskQueue is stored in the global TaskQueues Map via the TaskQueueId

🐕 Force-Unwrapping in Swift is NOT a Bad Thing

Damien: Be careful when using forced unpacking in Swift because if the optional variable is nil it will crash at run time. Avoiding a crash will lead to overly defensive programming which will add complexity and maintainability to your code. Forced unpacking, which Swift provides, should be embraced in terms of code module functionality, while eliminating the impact of undefined behavior as much as possible is one of the design goals of Swift. In this article, the author will use intuitive examples to demonstrate best practices for using forced unpacking.

🐎 Swift exploration of jingdong Mall order module

Looping: This article provides a detailed analysis of the changes to Swift as the ABI stabilizes before introducing them to the TRANSFORMATION of JD’s order module with Swift and the problems encountered during the transformation. It also Outlines the plans for subsequent technological evolution. Can be used as a reference learning material for the introduction of Swift to existing projects.

🐕 App Attest: (Properly!) Protecting iOS apps from Jailbreak Tweaks in iOS 14

Anotheren: In iOS 14 Apple introduces App Attest to protect your App from jailbreaking. This paper introduces the implementation process and author’s experience in detail.

🐢 Hacking iOS Simulator with simctl and dynamic libraries

Using the Xcode simctl command, dynamic iOS libraries and other Hook emulators for any App, this article introduces the following:

  • This section describes the concept of simctl and how to use the simctl command
  • Introduce Runtime Method Swizzling
  • This section describes how to build dynamic iOS libraries
  • How to inject a custom dynamic library into an emulator

tool

🐕 OSLog and Unified logging as recommended by Apple

@shuishui: OSLog as an alternative to Print and NSLog is apple’s recommended logging method. It’s a bit difficult to write, but it has its advantages:

  • Print statements can be easily replaced by writing a small extension. Using console applications in conjunction with logging can help you debug problems in a more efficient way.
  • Oslogs have a low performance overhead and are archived on the device.
  • You can set the log level by running Type
  • Use console. app to view and retrieve logs

If you want to write high-performance logging modules, you are advised to use OSLog. For more details, see this article or the Apple documentation

code

Flutter – How to create cool particle clock effect!

Bonben: This is a translated article. The author, who won a prize at Google’s 2019 The Flutter Clock Challenge with a particle animated Clock, explains The principle. Interested students can see, it can be said that the dynamic effect of excellent works really fascinated people!

Reference links:

  • The original
  • Github Repo

It is also worth checking out The Website The Flutter Vignettes, which provides some excellent examples of Flutter.

push

The Senior Driver Weekly team teamed up with the Knowledge collection and SwiftGG translation group to compile a solid, in-place position.

If you want to looking for a job, click here: www.yuque.com/iosalliance…

If you want to recruit people, click here: www.yuque.com/iosalliance…

Of course, you are also welcome to pay attention to each issue of our weekly report, we will timely update the editor at the bottom of each issue of the weekly report post.

Pay attention to our

We have opened an official account, and the official account (LSJCoding) will push news when each issue is released. Welcome to follow.

RSS feeds are also supported: github.com/SwiftOldDri… .

instructions

🚧 indicates that a tool is required, and 🌟 indicates that the editor recommends it

Estimated reading time: 🐎 (1-10 mins); 🐕 medium (10-20 mins); 🐢 slow (20+ mins)