Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Protobuf definition file GooglePlay.proto missing in project repository? #99

Open
jpstotz opened this issue Jul 22, 2021 · 3 comments
Open

Comments

@jpstotz
Copy link
Contributor

jpstotz commented Jul 22, 2021

The protobuf generated Java file com.akdeniz.googleplaycrawler.GooglePlay is pretty huge (more than 5MB) which makes problems with certain IDE such as IntelliJ.

Therefore I was looking for a way to split this file into smaller parts but that requires the used GooglePlay.proto file which I was not able to find in the raccoon4 project repository. Is there a reason why this file is missing? Because without it is next to impossible to add new protobuf fields in future and Google constantly adds such fields and removes others, therefore earlier or later it will be necessary to modify this file.

In my opinion it would be best to store it in the project e.g. in src/main/protobuf.

@onyxbits
Copy link
Owner

I'm not sure why I didn't include the .proto file. Probably to prevent it from being modified. Making changes there has big consequences and the akdeniz library is ill designed when it comes to extending it (so I want NO ONE TO FIDDLE WITH IT).

That being said, I'm in the process of rewriting that part from scratch. The new library is designed with modularity in mind and avoids having a hugetastic protobuf parser.

Is there a particular (set of) field(s) you need and if so, what for?

@jpstotz
Copy link
Contributor Author

jpstotz commented Jul 22, 2021

As you are the one who accepts or rejects the pull requests I don't see a problem in publishing that file.
The problem is that without the proto file it is very difficult to compare what is present and what is missing as e.g. getting the field ids from the generated GooglePlay.java file is pretty complicated. For example I am not sure if your DeviceConfigurationProto already contains field 27 and 29.

Also other open source projects using Google-API have no problem publishing those files. If raccon4 would also have them included in the repository that would make it possible to synchronize them at least partially or on a long term perspective consolidate the names of message objects that has been added after Google changed protobuf in a way that you can no longer read them in the decompiled PlayStore/GooglePlayServices apk file.

I am not sure what a "hugetastic protobuf parser" is, but that you are working on something sounds good. As there is no development branch available on Github I assume you keep everything private, so no one can help you and we will have to wait to see when it is finished. Hopefully your success rate at rewrite something from scratch is higher than mine ;)

@jpstotz
Copy link
Contributor Author

jpstotz commented Jul 23, 2021

I just remember another option for that protobuf files are required: When sniffing Google Play Services/ Play Store traffic of a real or emulated device some proxy programs like Charles Web Debugging Proxy allow to load the protobuf definitions to decode the traffic. This decoding is really helpful because otherwise you will only see the field ids instead of the object names and field names and some times message objects can't be decoded at all without matching proto file.

From my perspective the more people are familiar with the underlaying protocol the feaster we will be able to find out what needs to be changed next time Google changes the protocol in a way that Raccoon4 and other Google-Playstore-API based projects are affected.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants