Analysis of competing products, analysis of competing products
Competing product analysis
When we are not the best, the fastest way to learn about a technical point is not to learn, but to learnCopy".
Find the ABC which is the best in the same industry, and each of them may have their own implementation scheme, list it, improve it, and then "take it ". What do industry leaders do.
For example, if I have a new demand, I will study some apps on the market after thinking about them, look at their technical implementation, and then optimize their own implementation solutions. In this way, I learned a lot.Excellent ideas and technologiesSuch as the pop-up window at the bottom of the chat page, the processing method of the soft keyboard, and the adaptation of emoji.
Of course, in addition to the same industry, the excellent processing solutions for products in other industries are also worth our reference. For example, the bullet screen function of video apps, chat page experience of social apps, and push of news apps.If it is used, do not close the door to build a car. You can do better by looking at it.
Benefits
For us, frequent Analysis of competing products has the following benefits:
Help solve problems
When we have no idea about our needs or are stuck at a certain point, we may wish to improve our solutions by referring to others' implementations.It is good to keep thinking independently, but occasional reference and learning are also necessary.
Comparison and Evaluation
Compared with excellent products, we constantly discover our shortcomings and then change them. Why is the App startup speed so fast? Why is the App installation package so small? Why are apps not stuck at all?Every problem is where we can make progress.
Learning ideas and technologies
The technical teams of the industry's top products must have a high technical literacy. For us, they are the most awesome people in this field.It is necessary to learn from excellent products.
How to analyze
Next, let's talk about how to analyze the data to get the information we want to know.
Released open-source libraries and blogs
The simplest way is to find the open-source libraries of some industry teams, such as Alibaba's componentized routing framework ARouter and the open-source bullet screen library flame. Is there anything more efficient than RTFSC?
Another quick way is to find the blog of their team or the blog of the team members. There are still a lot of bosses who are willing to share.
Use
We can infer someDesign and logic.
In terms of social apps, different apps have different adaptation schemes for the Android soft keyboard height on chat pages. Let's compare the Implementation Solutions of QQ and Momo.
: When we adjust the height of the keyboard and switch to the emoticon or more tabs, the height of the pop-up window is consistent with that of the keyboard. The tab content can be displayed in the center regardless of the height of the keyboard. QQ: In contrast, after adjusting the height of the soft keyboard, QQ keeps the height of other tabs unchanged. However, when switching tabs, it may feel a little beat. Momo: Momo and the processing method are similar, but the pop-up window at the bottom of Momo has rich content. Most of the tab content areas are made in the form of sliding up and down.
Analysis Package Structure
The androidinstallation package is a. APK format file. Change the suffix to. Zip. decompress the package to see the content in the installation package. The structure is as follows:
Assets Directory: used to store static files to be packaged into the APK. Lib directory: stores native library files that the application depends on. Different CPU architectures correspond to different res directories: res is short for resource, which stores resource files. META-INF Directory: stores the application's signature information, which can verify the integrity of the APK file. AndroidManifest. xml: configuration file of the Android application. Classes. dex: for traditional Java programs, first compile the Java file into a class file, and the bytecode is saved in the class file. the Java Virtual Machine can explain and execute these class files. The Dalvik virtual machine is optimized on the Java Virtual Machine and runs the Dalvik bytecode, which is converted from the Java bytecode. Generally, android applications convert Java bytecode to Dalvik bytecode through the dx tool in AndroidSDK during packaging. The dx tool can merge, reorganize, and optimize multiple class files to reduce the volume and shorten the running time. Resources. arsc: used to record the ing between resource files and resource IDs, and to find resources based on resource IDs.
By viewing the content in these directories, we can further view some technical solutions used by the App.
For example, in the apk file of QQ, we can find the QQ emoji icon, which probably indicates that the QQ emoji is running in the App, it corresponds to a specific expression in the resource file according to the Unicode encoding of the expression, and then displayed.
Adb and Performance Analysis Tools
Adb is a command line tool that can be used to operate mobile devices or simulators. We can use it to view information about installed apps, including processes, services, and memory.
We can also use some analysis tools to view information about installed apps. For example, you can use Monitor to view the page layout of the installed App. The layout of the captured chat page is as follows:
We can see that the message list on the chat page still uses ListView and the overall layout of the chat page.
In Android Studio, there is also a useful tool called APK Analyzer, through which we can:
View the absolute and relative sizes of files in the APK (such as DEX and Android resource files ). Understand the composition of DEX files. Quickly view the final version of the file in the APK (such as AndroidManifest. xml ). Execute the comparison of the two APK files.
Of course, there are many other useful tools, which will not be described here. They are basically described in the official documentation.
Reverse Engineering
Reverse engineering, which is commonly referred to as "decompilation", has the following common tools:
Apktool
Resource file acquisitionYou can extract image files and layout files for viewing.
Dex2jar
Decompile apk into java source code(Classes. dex is converted into a jar file ).
Jd-gui
** View ** the jar file converted from classes. dex in APK, that is, the source code file.
However, if you need to correctly interpret the code we decompile, You need to familiarize yourself with the Smali syntax (Dalvik's register language ). This solution is the most accurate, but it is more complicated in terms of operations.