GenCodeManager

Description

Generate Code Manager is a very useful tool prevent your app reject by App Store of Apple with reason for Guideline 2.1(4.3.0 - Are a duplicate of another app or are conspicuously similar to another app).

Features

- Generate random objC codes.
- Generate random C# codes.
- Change the md5 value of your files in 'StreamingAssets' folder.

Solve what problems

- When submit review to App Store of Apple,they'll scan the codes and the files in your app by AI automate,to find out weather your app are a duplicate of another app or are conspicuously similar to another app(Guideline 2.1<4.3.0>)..And if you obfuscate your app will be reject by other reason(Guideline 2.3.1). It takes longer time to wait for review result if your app was rejected too many times. In particular 3 cases is easy to cause that problem:
-- 1. the amount of code is small(most of your code inside your app is framework).
-- 2. using hot update code(hot update code is consider as data,not code).
-- 3. review submitted by different developer accounts(your project may be base on your old project which is already in the App Store of Apple,if you not using the same account will consider as similar to your old app).

How to solve problems

- 1. Generate enough random code(objC or C#) make your project code more unique from another app.
- 2. Modify the md5(message-digest algorithm 5) value of your files in 'StreamingAssets' folder(the files of out side that folder no need to modify because they'll pack into one file by Unity) to make sure all the files is brand-new.


FreeType Library

- Includes the FreeType library, which is an open source project ( https://github.com/lightszero/CSLightStudio ).It will not be included in the build of your game. It's only used in the editor.

Quick start

1 In Unity, Tools -> TeachMePlay -> GenCodeManager.





2 (option)Modify the prefix name,such as "Xxxx",make sure your code unique.

3 (option)Modify the IsObjC(or C#), select ObjC or C#(Default type is C#).

4 Click start generate button.

    4.1.If you selected C# code, you can export into any folder in "/Assets/"(Except "/Assets/Plugins/" and "/Assets/StreamingAssets/" and "/Assets/Editor/").
    4.2.If you selected ObjC code, please export into "/Assets/Plugins/iOS/" folder.

5 Refer to the code from anywhere in your scripts like this:
    XxxxSys.XxxxSystem.Init();//won't do anything,just refer to the code

6 (option)Click ModifyMD5 In StreamingAssets button.Change the md5 value of your files in "StreamingAssets" folder.
    6.1.This's useful tool for your duplicate app.If you want to submit your game which just modify a few thing to AppStore.The files in "StreamingAssets" folder will be detected the same with your game which had publiced in AppStore. Your have to modify all the files in "StreamingAssets" folder,make the value of MD5/Hash/SHA1 to change.
    6.2.It's no need to do this step if your files in "StreamingAssets" folder is blank-new for the AppStore.

Advanced Useage(options)

1 file count:how many code files to generate.

2 attribute count min:the min count of the class attribute.

3 attribute count max:the max count of the class attribute.

4 function count min:the min count of the class function.

5 function count max:the max count of the class function.

6 action count min:the min count of the class action.

7 action count max:the max count of the class action.

8 reference count min:the min count of the class reference.

9 reference count max:the max count of the class reference.

10 Assets/Editor/GenCodeManager/GameEnglishWord.txt ,you can add/remove your special key word to that file,then the generated class will more similar to your project.

11 subfix of the files for modify MD5:subfix of the files in 'StreamingAssets',split by '|'.Only files with suffixed names are modified. But plain text files are not supported (e.g. .txt/.doc/.xls).

12 You can modify the MD5 value of selected files by custom.In Unity, you select the files first, and then right click -> TeachMePlay -> ModifyBySelected(ModifyByFolder).



Advise for how to face to the Apple reviewer(not AI robot)

-(more detail in ReadMe.txt)

Version History

1.1
-add a easy way to refer to the generate code(objC or C#) .
-support AssetBoudle files(include the .mainfest file and the AssetBoudle file whatever the suffix is) for "ModifyMD5 In StreamingAssets"
-add some advises into ReadMe.txt for how to face to the Apple reviewer(not AI robot).
-add some Question and Answer into ReadMe.txt which from the customer.

1.0
-original release


FAQ's

Q:Build the game as usual after follow "Quick start" step?
A:Yes.

Q:I build C# code to one folder inside the assets folder.When building ios project which file set gets built?
A:the files is "/Classes/Native/Bulk_Assembly_CSharp_(x).cpp"

Q:the one tool generator or the original code?
A:the generate C# code will turn into .cpp files by IL2CPP.

Q:Do I need to generate every time I make changes to my original code?
A:You just need generate for once,and keep it in your project.
2 cases you need to generate new code:
a. The same app review submitted by different developer accounts.
b. Different app.

Q:How does it work?
A:Generate enough random code(objC or C#) make your project code more unique from another app.

Q:There are 2 (C# and ObjC) options? what's the purpose of one over another?Does ObjC have any benefit over C#
A:C# need to compile into C++ by IL2CPP, it cost more compile time than ObjC. The purpose is same, just add the dummy code.

Q:The generated code folder size is around 6MB is it normal?
A:Default file count is 100,you can reduce the number to deduce the code size.But don't generate too few code,or else can't fool the Apple bots.

Q:Click "ModifyMD5 In StreamingAssets" button.Change the md5 value of your files in "StreamingAssets" folder.
A:If your "StreamingAssets" folder not Contain the file name ended with (.psd|.tiff|.jpg|.jpeg|.tga|.png|.gif|.bmp|.iff|.pict|.zip|.jgz|.rar|.7z|.iso|.tar|.gz|.wav|.ogg|.mp3|.aif|.avi|.pdf|.lz4|.lzh|.lzma|.gz|.dds), there's no need do that step.
the files in "StreamingAssets" folder will pack into the final .ipa with no change.
modify that files just make the Appl bots consider as different file.
(e.g. put the .jpg file in "StreamingAssets" folder and load by script, if you don't want to put that asset in Resources or use AssetBundle)
This's for the assets already in the AppStore.

Q:As per my knowledge Unity will not touch code files that do not have any reference in the project.
You generate a Singleton class XXXSystem.cs. What's its purpose? Do I need to include that in any scene? Or does it get referenced by any of your utility scripts?.
A:XXXSystem.cs is use for reference to other 100 files.The same as the objC.Step 5 in "Quick start" solve that problem.

Q:Also Is there any way we can figure out if Generated code actually included the Xcode project?
A:You can export you project with generate code and without generate code.
You'll find that they get more "/Classes/Native/Bulk_Assembly_CSharp_(x).cpp" files with the generate code.

Screenshots

1 C#code sample.


2 ObjCcode sample.


Back to Top Contact me: 465583519@qq.com