Thanks. Yes, I need to use require for .so files instead of Sketchup.require.
Because I do not want to encrypt the google/protobuf lib again, so removing it entirely before encrypting. Then encrypt it to get .rbz to download. Next, unzip the .rbz, restore the google/protobuf. Finally zip all into a .rbz again. The process works, though it is tedious. Especially some mistakes occur when installing the plugin, I have to repeat the whole process again and again.
I would suggest looking into Rake to automate tasks like these. I use the same workflow you describe for my plugin. You can simply pause the Rake task with something like STDIN.gets.chomp, encrypt and sign the archive, replace it with the encrypted one and then proceed with the task.
You could also automate the signing, but this stopped working for me recently.
I checked my own extensions, that’s what I do as well, I use require for C Extensions, but SketchUp.require for .rb files. Once you have the requires right you should be good to go.