76 | ```
77 |
78 | The plugin will be built and also copied to `example/`.
79 |
80 | Just export the iOS project (make sure the plugin is enabled in iOS export preset)
81 |
82 | And done, everything is ready for testing :)
83 |
84 | ## Scripts
85 |
86 | ### Android Scripts
87 |
88 | > [install.sh](./scripts/android/install.sh)
89 |
90 | Installs godot-lib.aar, which is required to build the Android plugin.
91 |
92 | (Will install default version in [build.env](./build.env) if no version is provided)
93 |
94 | Example:
95 |
96 | ```sh
97 | ./scripts/android/install.sh 3.5
98 | ```
99 |
100 | > [build.sh](./scripts/android/build.sh)
101 |
102 | Installs and builds the Android plugin
103 |
104 | This will also copy the built files to the `example/` projects (if you have installed Android custom build template)
105 |
106 | (Will build default version in [build.env](./build.env) if no version is provided)
107 |
108 | Example:
109 |
110 | ```sh
111 | ./scripts/android/build.sh 3.5
112 | ```
113 |
114 | > [release.sh](./scripts/android/release.sh)
115 |
116 | Builds and releases an Android plugin, the output will be in `.release/android/` folder.
117 |
118 | (Will build and release all supported versions in [build.env](./build.env) if no version is provided)
119 |
120 | Example:
121 |
122 | ```sh
123 | # Release a specific version
124 | ./scripts/android/release.sh 3.5
125 |
126 | # Release all versions
127 | ./scripts/android/release.sh
128 | ```
129 |
130 | ### iOS Scripts
131 |
132 | > [install.sh](./scripts/ios/install.sh)
133 |
134 | Installs Godot extracted headers, which are required to build the iOS plugin.
135 |
136 | (Will install default version in [build.env](./build.env) if no version is provided)
137 |
138 | Example:
139 |
140 | ```sh
141 | ./scripts/ios/install.sh 3.5
142 | ```
143 |
144 | > [build.sh](./scripts/ios/build.sh)
145 |
146 | Installs and builds the iOS plugin.
147 |
148 | This will also copy the built files to the `example` projects (if you have exported the iOS project to `exported/ios`)
149 |
150 | (Will build default version in [build.env](./build.env) if no version is provided)
151 |
152 | Example:
153 |
154 | ```sh
155 | ./scripts/ios/build.sh 3.5
156 | ```
157 |
158 | > [release.sh](./scripts/ios/release.sh)
159 |
160 | Builds and releases an iOS plugin, the output will be in `.release/ios/` folder.
161 |
162 | (Will build and release all supported versions in [build.env](./build.env) if no version is provided)
163 |
164 | Example:
165 |
166 | ```sh
167 | # Release a specific version
168 | ./scripts/ios/release.sh 3.5
169 |
170 | # Release all version
171 | ./scripts/ios/release.sh
172 | ```
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Godot Native Rating
6 |
7 |
8 |
9 | Godot plugin to request Native Rating on Android/iOS. Supports Godot 3 & 4.
10 |
11 |
12 |
13 |
14 |
15 |  
16 |
17 |
18 |
19 |  
20 |
21 |
22 |
23 |  
24 |
25 |  
26 |
27 |
28 |
29 |
30 | About •
31 | Installation •
32 | Usage •
33 | API •
34 | Notes •
35 | Contribute •
36 | Downloads
37 |
38 |
39 |
40 |
41 |
42 |
43 | # About
44 |
45 | This plugin helps you request native rating on mobile (Android/iOS).
46 |
47 | Built using automation scripts combined with CI/CD to help speed up the release progress as well as the release of hotfixes which save some of our time.
48 |
49 | Supports Godot 3 & 4.
50 |
51 | # Installation
52 |
53 | ## Android
54 |
55 | Download the [Android plugin](https://github.com/kyoz/godot-native-rating/releases) (match your Godot version), and extract them to `your_project/android/plugins`
56 |
57 | Enable `Rating` plugin in your Android export preset.
58 |
59 | *Note*: You must [use custom build](https://docs.godotengine.org/en/stable/tutorials/export/android_custom_build.html) for Android to use plugins.
60 |
61 | ## iOS
62 |
63 | Download the [iOS plugin](https://github.com/kyoz/godot-native-rating/releases) (match your Godot version), and extract them to `ios/plugins`
64 |
65 | Enable `Rating` plugin in your iOS export preset.
66 |
67 | # Usage
68 |
69 | An `autoload` script is provided for easier use of this plugin.
70 |
71 | Download [autoload file](./autoload) (match your Godot version). Add it to your project `autoload` list.
72 |
73 | Then you can easily use the plugin anywhere with:
74 |
75 | ```gdscript
76 | Rating.init()
77 | Rating.show()
78 |
79 | # Godot 3
80 | Rating.connect("on_completed", self, "_on_completed")
81 |
82 | # Godot 4
83 | Rating.on_completed.connect(_on_completed)
84 | ```
85 |
86 | "Why do I have to call `init()`?"
87 |
88 | Well, if you don't want to, you can change `init()` to `_ready()` on the `autoload` file. But in my experience, when using a lot of plugins, initializing all plugins on `_ready()` is not a good idea. This way, you can choose whenever to initialize the plugin e.g. when showing a loading scene, etc.
89 |
90 | For more detail, see [examples](./example/)
91 |
92 | # API
93 |
94 | ## Methods
95 |
96 | ```gdscript
97 | void show() # Requests and shows rating Popup
98 | ```
99 |
100 | ## Signals
101 |
102 | ```gdscript
103 | signal on_error(error_code) # Rating request failed, returning error_code
104 | signal on_completed() # Rating request displayed and completed
105 | ```
106 |
107 | ## Error Codes
108 |
109 | > `ERROR_GOOGLE_PLAY_UNAVAILABLE`
110 |
111 | Android only. Happens when there's no Google Play Services on the user's phone. Rarely happens, because normally they will install your app through Google Play.
112 |
113 | > `ERROR_NO_ACTIVE_SCENE`
114 |
115 | iOS only. Happens when the plugin can't find an active scene. Make sure you calling `show()` method when the app is runing in foreground.
116 |
117 | > `ERROR_UNKNOWN`
118 |
119 | Rarely happens also. For example, on Android, if the user is in China Mainland, they are not allowed native rating. It could also happen if the user installed your app from sources other than Google Play.
120 |
121 | # Notes
122 |
123 | Testing on iOS is pretty simple.
124 |
125 | However, when testing on Android, you have to publish your app to Google Play Console, or at least make it public to [Internal Testing](https://play.google.com/console/about/internal-testing/) or else the rating Popup will not show.
126 |
127 | When calling `show()`. If you get `on_completed` signal, it means the request has been completed. There is no further need to do anything except some storage caching to not show it again.
128 |
129 | *WARNING*:
130 |
131 | - Do NOT spam `show()`. You can call it after the user has completed some levels or after the user has come back to your game a few times. And most importantly, after showing, whenever you get `on_completed` or `on_error`, do NOT try to `show()` again, or else your app/game may get rejected when reviewed by Google/Apple.
132 |
133 | - This plugin is sufficient for the rating process. Call `show()` and that's it. Do NOT show a Toast notification or a Dialog to tell the user to rate 5 star. Google/Apple will likely reject your game when reviewing.
134 |
135 | # Contribute
136 |
137 | I want to contribute to the Godot community so I create these plugins. I've prepared almost everything to help simplify and speed up the development and release progress.
138 |
139 | With only one command, you can build and release this plugin. Read [DEVELOP.md](./DEVELOP.md) for more information.
140 |
141 | If you find bugs, please open issues.
142 |
143 | If you have time to fix bugs or improve the plugins, please open PR. It's always welcomed and appreciated.
144 |
145 | # License
146 |
147 | MIT © [Kyoz](mailto:banminkyoz@gmail.com)
--------------------------------------------------------------------------------
/android/gradlew:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env sh
2 |
3 | #
4 | # Copyright 2015 the original author or authors.
5 | #
6 | # Licensed under the Apache License, Version 2.0 (the "License");
7 | # you may not use this file except in compliance with the License.
8 | # You may obtain a copy of the License at
9 | #
10 | # https://www.apache.org/licenses/LICENSE-2.0
11 | #
12 | # Unless required by applicable law or agreed to in writing, software
13 | # distributed under the License is distributed on an "AS IS" BASIS,
14 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 | # See the License for the specific language governing permissions and
16 | # limitations under the License.
17 | #
18 |
19 | ##############################################################################
20 | ##
21 | ## Gradle start up script for UN*X
22 | ##
23 | ##############################################################################
24 |
25 | # Attempt to set APP_HOME
26 | # Resolve links: $0 may be a link
27 | PRG="$0"
28 | # Need this for relative symlinks.
29 | while [ -h "$PRG" ] ; do
30 | ls=`ls -ld "$PRG"`
31 | link=`expr "$ls" : '.*-> \(.*\)$'`
32 | if expr "$link" : '/.*' > /dev/null; then
33 | PRG="$link"
34 | else
35 | PRG=`dirname "$PRG"`"/$link"
36 | fi
37 | done
38 | SAVED="`pwd`"
39 | cd "`dirname \"$PRG\"`/" >/dev/null
40 | APP_HOME="`pwd -P`"
41 | cd "$SAVED" >/dev/null
42 |
43 | APP_NAME="Gradle"
44 | APP_BASE_NAME=`basename "$0"`
45 |
46 | # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
47 | DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
48 |
49 | # Use the maximum available, or set MAX_FD != -1 to use that value.
50 | MAX_FD="maximum"
51 |
52 | warn () {
53 | echo "$*"
54 | }
55 |
56 | die () {
57 | echo
58 | echo "$*"
59 | echo
60 | exit 1
61 | }
62 |
63 | # OS specific support (must be 'true' or 'false').
64 | cygwin=false
65 | msys=false
66 | darwin=false
67 | nonstop=false
68 | case "`uname`" in
69 | CYGWIN* )
70 | cygwin=true
71 | ;;
72 | Darwin* )
73 | darwin=true
74 | ;;
75 | MINGW* )
76 | msys=true
77 | ;;
78 | NONSTOP* )
79 | nonstop=true
80 | ;;
81 | esac
82 |
83 | CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
84 |
85 |
86 | # Determine the Java command to use to start the JVM.
87 | if [ -n "$JAVA_HOME" ] ; then
88 | if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
89 | # IBM's JDK on AIX uses strange locations for the executables
90 | JAVACMD="$JAVA_HOME/jre/sh/java"
91 | else
92 | JAVACMD="$JAVA_HOME/bin/java"
93 | fi
94 | if [ ! -x "$JAVACMD" ] ; then
95 | die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
96 |
97 | Please set the JAVA_HOME variable in your environment to match the
98 | location of your Java installation."
99 | fi
100 | else
101 | JAVACMD="java"
102 | which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
103 |
104 | Please set the JAVA_HOME variable in your environment to match the
105 | location of your Java installation."
106 | fi
107 |
108 | # Increase the maximum file descriptors if we can.
109 | if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
110 | MAX_FD_LIMIT=`ulimit -H -n`
111 | if [ $? -eq 0 ] ; then
112 | if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
113 | MAX_FD="$MAX_FD_LIMIT"
114 | fi
115 | ulimit -n $MAX_FD
116 | if [ $? -ne 0 ] ; then
117 | warn "Could not set maximum file descriptor limit: $MAX_FD"
118 | fi
119 | else
120 | warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
121 | fi
122 | fi
123 |
124 | # For Darwin, add options to specify how the application appears in the dock
125 | if $darwin; then
126 | GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
127 | fi
128 |
129 | # For Cygwin or MSYS, switch paths to Windows format before running java
130 | if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
131 | APP_HOME=`cygpath --path --mixed "$APP_HOME"`
132 | CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
133 |
134 | JAVACMD=`cygpath --unix "$JAVACMD"`
135 |
136 | # We build the pattern for arguments to be converted via cygpath
137 | ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
138 | SEP=""
139 | for dir in $ROOTDIRSRAW ; do
140 | ROOTDIRS="$ROOTDIRS$SEP$dir"
141 | SEP="|"
142 | done
143 | OURCYGPATTERN="(^($ROOTDIRS))"
144 | # Add a user-defined pattern to the cygpath arguments
145 | if [ "$GRADLE_CYGPATTERN" != "" ] ; then
146 | OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
147 | fi
148 | # Now convert the arguments - kludge to limit ourselves to /bin/sh
149 | i=0
150 | for arg in "$@" ; do
151 | CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
152 | CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
153 |
154 | if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
155 | eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
156 | else
157 | eval `echo args$i`="\"$arg\""
158 | fi
159 | i=`expr $i + 1`
160 | done
161 | case $i in
162 | 0) set -- ;;
163 | 1) set -- "$args0" ;;
164 | 2) set -- "$args0" "$args1" ;;
165 | 3) set -- "$args0" "$args1" "$args2" ;;
166 | 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
167 | 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
168 | 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
169 | 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
170 | 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
171 | 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
172 | esac
173 | fi
174 |
175 | # Escape application args
176 | save () {
177 | for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
178 | echo " "
179 | }
180 | APP_ARGS=`save "$@"`
181 |
182 | # Collect all arguments for the java command, following the shell quoting and substitution rules
183 | eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
184 |
185 | exec "$JAVACMD" "$@"
186 |
--------------------------------------------------------------------------------
/ios/SConstruct:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env python
2 | import os
3 | import sys
4 | import subprocess
5 |
6 | if sys.version_info < (3,):
7 | def decode_utf8(x):
8 | return x
9 | else:
10 | import codecs
11 | def decode_utf8(x):
12 | return codecs.utf_8_decode(x)[0]
13 |
14 | # Most of the settings are taken from https://github.com/BastiaanOlij/gdnative_cpp_example
15 |
16 | opts = Variables([], ARGUMENTS)
17 |
18 | # Gets the standard flags CC, CCX, etc.
19 | env = DefaultEnvironment()
20 |
21 | # Define our options
22 | opts.Add(EnumVariable('target', "Compilation target", 'debug', ['debug', 'release', "release_debug"]))
23 | opts.Add(EnumVariable('arch', "Compilation Architecture", '', ['', 'arm64', 'armv7', 'x86_64']))
24 | opts.Add(BoolVariable('simulator', "Compilation platform", 'no'))
25 | opts.Add(BoolVariable('use_llvm', "Use the LLVM / Clang compiler", 'no'))
26 | opts.Add(PathVariable('target_path', 'The path where the lib is installed.', 'bin/'))
27 | opts.Add(EnumVariable('plugin', 'Plugin to build', '', ['', 'rating']))
28 | opts.Add(EnumVariable('version', 'Godot version to target', '', ['', '3.x', '4.0']))
29 |
30 | # Updates the environment with the option variables.
31 | opts.Update(env)
32 |
33 | # Process some arguments
34 | if env['use_llvm']:
35 | env['CC'] = 'clang'
36 | env['CXX'] = 'clang++'
37 |
38 | if env['arch'] == '':
39 | print("No valid arch selected.")
40 | quit();
41 |
42 | if env['plugin'] == '':
43 | print("No valid plugin selected.")
44 | quit();
45 |
46 | if env['version'] == '':
47 | print("No valid Godot version selected.")
48 | quit();
49 |
50 | # For the reference:
51 | # - CCFLAGS are compilation flags shared between C and C++
52 | # - CFLAGS are for C-specific compilation flags
53 | # - CXXFLAGS are for C++-specific compilation flags
54 | # - CPPFLAGS are for pre-processor flags
55 | # - CPPDEFINES are for pre-processor defines
56 | # - LINKFLAGS are for linking flags
57 |
58 | # Enable Obj-C modules
59 | env.Append(CCFLAGS=["-fmodules", "-fcxx-modules"])
60 |
61 | if env['simulator']:
62 | sdk_name = 'iphonesimulator'
63 | env.Append(CCFLAGS=['-mios-simulator-version-min=10.0'])
64 | env.Append(LINKFLAGS=["-mios-simulator-version-min=10.0"])
65 | else:
66 | sdk_name = 'iphoneos'
67 | env.Append(CCFLAGS=['-miphoneos-version-min=10.0'])
68 | env.Append(LINKFLAGS=["-miphoneos-version-min=10.0"])
69 |
70 | try:
71 | sdk_path = decode_utf8(subprocess.check_output(['xcrun', '--sdk', sdk_name, '--show-sdk-path']).strip())
72 | except (subprocess.CalledProcessError, OSError):
73 | raise ValueError("Failed to find SDK path while running xcrun --sdk {} --show-sdk-path.".format(sdk_name))
74 |
75 | env.Append(CCFLAGS=[
76 | '-fobjc-arc',
77 | '-fmessage-length=0', '-fno-strict-aliasing', '-fdiagnostics-print-source-range-info',
78 | '-fdiagnostics-show-category=id', '-fdiagnostics-parseable-fixits', '-fpascal-strings',
79 | '-fblocks', '-fvisibility=hidden', '-MMD', '-MT', 'dependencies', '-fno-exceptions',
80 | '-Wno-ambiguous-macro',
81 | '-Wall', '-Werror=return-type',
82 | # '-Wextra',
83 | ])
84 |
85 | env.Append(CCFLAGS=['-arch', env['arch'], "-isysroot", "$IOS_SDK_PATH", "-stdlib=libc++", '-isysroot', sdk_path])
86 | env.Append(CCFLAGS=['-DPTRCALL_ENABLED'])
87 | env.Prepend(CXXFLAGS=[
88 | '-DNEED_LONG_INT', '-DLIBYUV_DISABLE_NEON',
89 | '-DIOS_ENABLED', '-DUNIX_ENABLED', '-DCOREAUDIO_ENABLED'
90 | ])
91 | env.Append(LINKFLAGS=["-arch", env['arch'], '-isysroot', sdk_path, '-F' + sdk_path])
92 |
93 | if env['arch'] == 'armv7':
94 | env.Prepend(CXXFLAGS=['-fno-aligned-allocation'])
95 |
96 | if env['version'] == '3.x':
97 | env.Append(CCFLAGS=["$IPHONESDK"])
98 | env.Prepend(CXXFLAGS=['-DIPHONE_ENABLED'])
99 | env.Prepend(CXXFLAGS=['-DVERSION_3_X'])
100 |
101 | env.Prepend(CFLAGS=['-std=gnu11'])
102 | env.Prepend(CXXFLAGS=['-DGLES_ENABLED', '-std=gnu++14'])
103 |
104 | if env['target'] == 'debug':
105 | env.Prepend(CXXFLAGS=[
106 | '-gdwarf-2', '-O0',
107 | '-DDEBUG_MEMORY_ALLOC', '-DDISABLE_FORCED_INLINE',
108 | '-D_DEBUG', '-DDEBUG=1', '-DDEBUG_ENABLED',
109 | '-DPTRCALL_ENABLED',
110 | ])
111 | elif env['target'] == 'release_debug':
112 | env.Prepend(CXXFLAGS=['-O2', '-ftree-vectorize',
113 | '-DNDEBUG', '-DNS_BLOCK_ASSERTIONS=1', '-DDEBUG_ENABLED',
114 | '-DPTRCALL_ENABLED',
115 | ])
116 |
117 | if env['arch'] != 'armv7':
118 | env.Prepend(CXXFLAGS=['-fomit-frame-pointer'])
119 | else:
120 | env.Prepend(CXXFLAGS=[
121 | '-O2', '-ftree-vectorize',
122 | '-DNDEBUG', '-DNS_BLOCK_ASSERTIONS=1',
123 | '-DPTRCALL_ENABLED',
124 | ])
125 |
126 | if env['arch'] != 'armv7':
127 | env.Prepend(CXXFLAGS=['-fomit-frame-pointer'])
128 | elif env['version'] == '4.0':
129 | env.Append(CCFLAGS=["$IOS_SDK_PATH"])
130 | env.Prepend(CXXFLAGS=['-DIOS_ENABLED'])
131 | env.Prepend(CXXFLAGS=['-DVERSION_4_0'])
132 |
133 | env.Prepend(CFLAGS=['-std=gnu11'])
134 | env.Prepend(CXXFLAGS=['-DVULKAN_ENABLED', '-std=gnu++17'])
135 |
136 | if env['target'] == 'debug':
137 | env.Prepend(CXXFLAGS=[
138 | '-gdwarf-2', '-O0',
139 | '-DDEBUG_MEMORY_ALLOC', '-DDISABLE_FORCED_INLINE',
140 | '-D_DEBUG', '-DDEBUG=1', '-DDEBUG_ENABLED',
141 | ])
142 | elif env['target'] == 'release_debug':
143 | env.Prepend(CXXFLAGS=[
144 | '-O2', '-ftree-vectorize',
145 | '-DNDEBUG', '-DNS_BLOCK_ASSERTIONS=1', '-DDEBUG_ENABLED',
146 | ])
147 |
148 | if env['arch'] != 'armv7':
149 | env.Prepend(CXXFLAGS=['-fomit-frame-pointer'])
150 | else:
151 | env.Prepend(CXXFLAGS=[
152 | '-O2', '-ftree-vectorize',
153 | '-DNDEBUG', '-DNS_BLOCK_ASSERTIONS=1',
154 | ])
155 |
156 | if env['arch'] != 'armv7':
157 | env.Prepend(CXXFLAGS=['-fomit-frame-pointer'])
158 | else:
159 | print("No valid version to set flags for.")
160 | quit();
161 |
162 | # Adding header files
163 | if env['version'] == '3.x':
164 | env.Append(CPPPATH=[
165 | '.',
166 | 'godot',
167 | 'godot/platform/iphone',
168 | ])
169 | else:
170 | env.Append(CPPPATH=[
171 | '.',
172 | 'godot',
173 | 'godot/platform/ios',
174 | ])
175 |
176 | # tweak this if you want to use different folders, or more folders, to store your source code in.
177 | sources = Glob('plugin/' + env['plugin'] + '/*.mm')
178 | # sources.append(Glob('plugin/' + env['plugin'] + '/*.mm'))
179 | # sources.append(Glob('plugin/' + env['plugin'] + '/*.m'))
180 |
181 | # lib.-..a
182 | library_platform = env["arch"] + "-" + ("simulator" if env["simulator"] else ("iphone" if env['version'] == '3.x' else "ios"))
183 | library_name = env['plugin'] + "." + library_platform + "." + env["target"] + ".a"
184 | library = env.StaticLibrary(target=env['target_path'] + library_name, source=sources)
185 |
186 | Default(library)
187 |
188 | # Generates help for the -h scons option.
189 | Help(opts.GenerateHelpText(env))
--------------------------------------------------------------------------------
/example/godot_3/export_presets.cfg:
--------------------------------------------------------------------------------
1 | [preset.0]
2 |
3 | name="Android"
4 | platform="Android"
5 | runnable=true
6 | custom_features=""
7 | export_filter="all_resources"
8 | include_filter=""
9 | exclude_filter=""
10 | export_path="../../../../../Downloads/Example.aab"
11 | script_export_mode=1
12 | script_encryption_key=""
13 |
14 | [preset.0.options]
15 |
16 | custom_template/debug=""
17 | custom_template/release=""
18 | custom_build/use_custom_build=true
19 | custom_build/export_format=1
20 | custom_build/min_sdk="24"
21 | custom_build/target_sdk=""
22 | plugins/Rating=true
23 | architectures/armeabi-v7a=true
24 | architectures/arm64-v8a=true
25 | architectures/x86=false
26 | architectures/x86_64=false
27 | keystore/debug=""
28 | keystore/debug_user=""
29 | keystore/debug_password=""
30 | keystore/release=""
31 | keystore/release_user=""
32 | keystore/release_password=""
33 | one_click_deploy/clear_previous_install=false
34 | version/code=1
35 | version/name="1.0"
36 | package/unique_name="vn.kyoz.godot.example"
37 | package/name="Godot Example"
38 | package/signed=true
39 | package/classify_as_game=true
40 | package/retain_data_on_uninstall=false
41 | package/exclude_from_recents=false
42 | launcher_icons/main_192x192=""
43 | launcher_icons/adaptive_foreground_432x432=""
44 | launcher_icons/adaptive_background_432x432=""
45 | graphics/opengl_debug=false
46 | xr_features/xr_mode=0
47 | xr_features/hand_tracking=0
48 | xr_features/hand_tracking_frequency=0
49 | xr_features/passthrough=0
50 | screen/immersive_mode=true
51 | screen/support_small=true
52 | screen/support_normal=true
53 | screen/support_large=true
54 | screen/support_xlarge=true
55 | user_data_backup/allow=false
56 | command_line/extra_args=""
57 | apk_expansion/enable=false
58 | apk_expansion/SALT=""
59 | apk_expansion/public_key=""
60 | permissions/custom_permissions=PoolStringArray( )
61 | permissions/access_checkin_properties=false
62 | permissions/access_coarse_location=false
63 | permissions/access_fine_location=false
64 | permissions/access_location_extra_commands=false
65 | permissions/access_mock_location=false
66 | permissions/access_network_state=false
67 | permissions/access_surface_flinger=false
68 | permissions/access_wifi_state=false
69 | permissions/account_manager=false
70 | permissions/add_voicemail=false
71 | permissions/authenticate_accounts=false
72 | permissions/battery_stats=false
73 | permissions/bind_accessibility_service=false
74 | permissions/bind_appwidget=false
75 | permissions/bind_device_admin=false
76 | permissions/bind_input_method=false
77 | permissions/bind_nfc_service=false
78 | permissions/bind_notification_listener_service=false
79 | permissions/bind_print_service=false
80 | permissions/bind_remoteviews=false
81 | permissions/bind_text_service=false
82 | permissions/bind_vpn_service=false
83 | permissions/bind_wallpaper=false
84 | permissions/bluetooth=false
85 | permissions/bluetooth_admin=false
86 | permissions/bluetooth_privileged=false
87 | permissions/brick=false
88 | permissions/broadcast_package_removed=false
89 | permissions/broadcast_sms=false
90 | permissions/broadcast_sticky=false
91 | permissions/broadcast_wap_push=false
92 | permissions/call_phone=false
93 | permissions/call_privileged=false
94 | permissions/camera=false
95 | permissions/capture_audio_output=false
96 | permissions/capture_secure_video_output=false
97 | permissions/capture_video_output=false
98 | permissions/change_component_enabled_state=false
99 | permissions/change_configuration=false
100 | permissions/change_network_state=false
101 | permissions/change_wifi_multicast_state=false
102 | permissions/change_wifi_state=false
103 | permissions/clear_app_cache=false
104 | permissions/clear_app_user_data=false
105 | permissions/control_location_updates=false
106 | permissions/delete_cache_files=false
107 | permissions/delete_packages=false
108 | permissions/device_power=false
109 | permissions/diagnostic=false
110 | permissions/disable_keyguard=false
111 | permissions/dump=false
112 | permissions/expand_status_bar=false
113 | permissions/factory_test=false
114 | permissions/flashlight=false
115 | permissions/force_back=false
116 | permissions/get_accounts=false
117 | permissions/get_package_size=false
118 | permissions/get_tasks=false
119 | permissions/get_top_activity_info=false
120 | permissions/global_search=false
121 | permissions/hardware_test=false
122 | permissions/inject_events=false
123 | permissions/install_location_provider=false
124 | permissions/install_packages=false
125 | permissions/install_shortcut=false
126 | permissions/internal_system_window=false
127 | permissions/internet=false
128 | permissions/kill_background_processes=false
129 | permissions/location_hardware=false
130 | permissions/manage_accounts=false
131 | permissions/manage_app_tokens=false
132 | permissions/manage_documents=false
133 | permissions/manage_external_storage=false
134 | permissions/master_clear=false
135 | permissions/media_content_control=false
136 | permissions/modify_audio_settings=false
137 | permissions/modify_phone_state=false
138 | permissions/mount_format_filesystems=false
139 | permissions/mount_unmount_filesystems=false
140 | permissions/nfc=false
141 | permissions/persistent_activity=false
142 | permissions/process_outgoing_calls=false
143 | permissions/read_calendar=false
144 | permissions/read_call_log=false
145 | permissions/read_contacts=false
146 | permissions/read_external_storage=false
147 | permissions/read_frame_buffer=false
148 | permissions/read_history_bookmarks=false
149 | permissions/read_input_state=false
150 | permissions/read_logs=false
151 | permissions/read_phone_state=false
152 | permissions/read_profile=false
153 | permissions/read_sms=false
154 | permissions/read_social_stream=false
155 | permissions/read_sync_settings=false
156 | permissions/read_sync_stats=false
157 | permissions/read_user_dictionary=false
158 | permissions/reboot=false
159 | permissions/receive_boot_completed=false
160 | permissions/receive_mms=false
161 | permissions/receive_sms=false
162 | permissions/receive_wap_push=false
163 | permissions/record_audio=false
164 | permissions/reorder_tasks=false
165 | permissions/restart_packages=false
166 | permissions/send_respond_via_message=false
167 | permissions/send_sms=false
168 | permissions/set_activity_watcher=false
169 | permissions/set_alarm=false
170 | permissions/set_always_finish=false
171 | permissions/set_animation_scale=false
172 | permissions/set_debug_app=false
173 | permissions/set_orientation=false
174 | permissions/set_pointer_speed=false
175 | permissions/set_preferred_applications=false
176 | permissions/set_process_limit=false
177 | permissions/set_time=false
178 | permissions/set_time_zone=false
179 | permissions/set_wallpaper=false
180 | permissions/set_wallpaper_hints=false
181 | permissions/signal_persistent_processes=false
182 | permissions/status_bar=false
183 | permissions/subscribed_feeds_read=false
184 | permissions/subscribed_feeds_write=false
185 | permissions/system_alert_window=false
186 | permissions/transmit_ir=false
187 | permissions/uninstall_shortcut=false
188 | permissions/update_device_stats=false
189 | permissions/use_credentials=false
190 | permissions/use_sip=false
191 | permissions/vibrate=false
192 | permissions/wake_lock=false
193 | permissions/write_apn_settings=false
194 | permissions/write_calendar=false
195 | permissions/write_call_log=false
196 | permissions/write_contacts=false
197 | permissions/write_external_storage=false
198 | permissions/write_gservices=false
199 | permissions/write_history_bookmarks=false
200 | permissions/write_profile=false
201 | permissions/write_secure_settings=false
202 | permissions/write_settings=false
203 | permissions/write_sms=false
204 | permissions/write_social_stream=false
205 | permissions/write_sync_settings=false
206 | permissions/write_user_dictionary=false
207 |
208 | [preset.1]
209 |
210 | name="iOS"
211 | platform="iOS"
212 | runnable=true
213 | custom_features=""
214 | export_filter="all_resources"
215 | include_filter=""
216 | exclude_filter=""
217 | export_path="exported/ios/Example.ipa"
218 | script_export_mode=1
219 | script_encryption_key=""
220 |
221 | [preset.1.options]
222 |
223 | custom_template/debug=""
224 | custom_template/release=""
225 | architectures/armv7=false
226 | architectures/arm64=true
227 | application/app_store_team_id="123456"
228 | application/provisioning_profile_uuid_debug=""
229 | application/code_sign_identity_debug=""
230 | application/export_method_debug=1
231 | application/provisioning_profile_uuid_release=""
232 | application/code_sign_identity_release=""
233 | application/export_method_release=0
234 | application/targeted_device_family=2
235 | application/name="Godot Example"
236 | application/info="Made with Godot Engine"
237 | application/identifier="vn.kyoz.godot.example"
238 | application/signature="Kyoz"
239 | application/short_version="1.0"
240 | application/version="1.0"
241 | application/copyright=""
242 | plugins/Rating=true
243 | capabilities/access_wifi=false
244 | capabilities/push_notifications=false
245 | user_data/accessible_from_files_app=false
246 | user_data/accessible_from_itunes_sharing=false
247 | privacy/camera_usage_description=""
248 | privacy/microphone_usage_description=""
249 | privacy/photolibrary_usage_description=""
250 | icons/iphone_120x120=""
251 | icons/iphone_180x180=""
252 | icons/ipad_76x76=""
253 | icons/ipad_152x152=""
254 | icons/ipad_167x167=""
255 | icons/app_store_1024x1024="res://icon.png"
256 | icons/spotlight_40x40=""
257 | icons/spotlight_80x80=""
258 | storyboard/use_launch_screen_storyboard=false
259 | storyboard/image_scale_mode=0
260 | storyboard/custom_image@2x=""
261 | storyboard/custom_image@3x=""
262 | storyboard/use_custom_bg_color=false
263 | storyboard/custom_bg_color=Color( 0, 0, 0, 1 )
264 | landscape_launch_screens/iphone_2436x1125=""
265 | landscape_launch_screens/iphone_2208x1242=""
266 | landscape_launch_screens/ipad_1024x768=""
267 | landscape_launch_screens/ipad_2048x1536=""
268 | portrait_launch_screens/iphone_640x960=""
269 | portrait_launch_screens/iphone_640x1136=""
270 | portrait_launch_screens/iphone_750x1334=""
271 | portrait_launch_screens/iphone_1125x2436=""
272 | portrait_launch_screens/ipad_768x1024=""
273 | portrait_launch_screens/ipad_1536x2048=""
274 | portrait_launch_screens/iphone_1242x2208=""
275 |
--------------------------------------------------------------------------------
/example/godot_4/export_presets.cfg:
--------------------------------------------------------------------------------
1 | [preset.0]
2 |
3 | name="iOS"
4 | platform="iOS"
5 | runnable=true
6 | dedicated_server=false
7 | custom_features=""
8 | export_filter="all_resources"
9 | include_filter=""
10 | exclude_filter=""
11 | export_path="exported/ios/example.ipa"
12 | encryption_include_filters=""
13 | encryption_exclude_filters=""
14 | encrypt_pck=false
15 | encrypt_directory=false
16 |
17 | [preset.0.options]
18 |
19 | custom_template/debug=""
20 | custom_template/release=""
21 | architectures/arm64=true
22 | application/app_store_team_id="123456"
23 | application/code_sign_identity_debug=""
24 | application/export_method_debug=1
25 | application/code_sign_identity_release=""
26 | application/export_method_release=0
27 | application/targeted_device_family=2
28 | application/bundle_identifier="vn.kyoz.godot.example"
29 | application/signature="Kyoz"
30 | application/short_version="1.0"
31 | application/version="1.0"
32 | application/icon_interpolation=4
33 | application/launch_screens_interpolation=4
34 | plugins/Rating=true
35 | capabilities/access_wifi=false
36 | capabilities/push_notifications=false
37 | user_data/accessible_from_files_app=false
38 | user_data/accessible_from_itunes_sharing=false
39 | privacy/camera_usage_description=""
40 | privacy/camera_usage_description_localized={}
41 | privacy/microphone_usage_description=""
42 | privacy/microphone_usage_description_localized={}
43 | privacy/photolibrary_usage_description=""
44 | privacy/photolibrary_usage_description_localized={}
45 | icons/iphone_120x120=""
46 | icons/iphone_180x180=""
47 | icons/ipad_76x76=""
48 | icons/ipad_152x152=""
49 | icons/ipad_167x167=""
50 | icons/app_store_1024x1024="res://icon.png"
51 | icons/spotlight_40x40=""
52 | icons/spotlight_80x80=""
53 | icons/settings_58x58=""
54 | icons/settings_87x87=""
55 | icons/notification_40x40=""
56 | icons/notification_60x60=""
57 | storyboard/use_launch_screen_storyboard=false
58 | storyboard/image_scale_mode=0
59 | storyboard/custom_image@2x=""
60 | storyboard/custom_image@3x=""
61 | storyboard/use_custom_bg_color=false
62 | storyboard/custom_bg_color=Color(0, 0, 0, 1)
63 | landscape_launch_screens/iphone_2436x1125=""
64 | landscape_launch_screens/iphone_2208x1242=""
65 | landscape_launch_screens/ipad_1024x768=""
66 | landscape_launch_screens/ipad_2048x1536=""
67 | portrait_launch_screens/iphone_640x960=""
68 | portrait_launch_screens/iphone_640x1136=""
69 | portrait_launch_screens/iphone_750x1334=""
70 | portrait_launch_screens/iphone_1125x2436=""
71 | portrait_launch_screens/ipad_768x1024=""
72 | portrait_launch_screens/ipad_1536x2048=""
73 | portrait_launch_screens/iphone_1242x2208=""
74 |
75 | [preset.1]
76 |
77 | name="Android"
78 | platform="Android"
79 | runnable=true
80 | dedicated_server=false
81 | custom_features=""
82 | export_filter="all_resources"
83 | include_filter=""
84 | exclude_filter=""
85 | export_path=""
86 | encryption_include_filters=""
87 | encryption_exclude_filters=""
88 | encrypt_pck=false
89 | encrypt_directory=false
90 |
91 | [preset.1.options]
92 |
93 | custom_template/debug=""
94 | custom_template/release=""
95 | gradle_build/use_gradle_build=true
96 | gradle_build/export_format=0
97 | gradle_build/min_sdk=""
98 | gradle_build/target_sdk=""
99 | plugins/Rating=true
100 | architectures/armeabi-v7a=false
101 | architectures/arm64-v8a=true
102 | architectures/x86=false
103 | architectures/x86_64=false
104 | version/code=1
105 | version/name="1.0"
106 | package/unique_name="vn.kyoz.godot.example"
107 | package/name=""
108 | package/signed=true
109 | package/app_category=2
110 | package/retain_data_on_uninstall=false
111 | package/exclude_from_recents=false
112 | launcher_icons/main_192x192=""
113 | launcher_icons/adaptive_foreground_432x432=""
114 | launcher_icons/adaptive_background_432x432=""
115 | graphics/opengl_debug=false
116 | xr_features/xr_mode=0
117 | xr_features/hand_tracking=0
118 | xr_features/hand_tracking_frequency=0
119 | xr_features/passthrough=0
120 | screen/immersive_mode=true
121 | screen/support_small=true
122 | screen/support_normal=true
123 | screen/support_large=true
124 | screen/support_xlarge=true
125 | user_data_backup/allow=false
126 | command_line/extra_args=""
127 | apk_expansion/enable=false
128 | apk_expansion/SALT=""
129 | apk_expansion/public_key=""
130 | permissions/custom_permissions=PackedStringArray()
131 | permissions/access_checkin_properties=false
132 | permissions/access_coarse_location=false
133 | permissions/access_fine_location=false
134 | permissions/access_location_extra_commands=false
135 | permissions/access_mock_location=false
136 | permissions/access_network_state=false
137 | permissions/access_surface_flinger=false
138 | permissions/access_wifi_state=false
139 | permissions/account_manager=false
140 | permissions/add_voicemail=false
141 | permissions/authenticate_accounts=false
142 | permissions/battery_stats=false
143 | permissions/bind_accessibility_service=false
144 | permissions/bind_appwidget=false
145 | permissions/bind_device_admin=false
146 | permissions/bind_input_method=false
147 | permissions/bind_nfc_service=false
148 | permissions/bind_notification_listener_service=false
149 | permissions/bind_print_service=false
150 | permissions/bind_remoteviews=false
151 | permissions/bind_text_service=false
152 | permissions/bind_vpn_service=false
153 | permissions/bind_wallpaper=false
154 | permissions/bluetooth=false
155 | permissions/bluetooth_admin=false
156 | permissions/bluetooth_privileged=false
157 | permissions/brick=false
158 | permissions/broadcast_package_removed=false
159 | permissions/broadcast_sms=false
160 | permissions/broadcast_sticky=false
161 | permissions/broadcast_wap_push=false
162 | permissions/call_phone=false
163 | permissions/call_privileged=false
164 | permissions/camera=false
165 | permissions/capture_audio_output=false
166 | permissions/capture_secure_video_output=false
167 | permissions/capture_video_output=false
168 | permissions/change_component_enabled_state=false
169 | permissions/change_configuration=false
170 | permissions/change_network_state=false
171 | permissions/change_wifi_multicast_state=false
172 | permissions/change_wifi_state=false
173 | permissions/clear_app_cache=false
174 | permissions/clear_app_user_data=false
175 | permissions/control_location_updates=false
176 | permissions/delete_cache_files=false
177 | permissions/delete_packages=false
178 | permissions/device_power=false
179 | permissions/diagnostic=false
180 | permissions/disable_keyguard=false
181 | permissions/dump=false
182 | permissions/expand_status_bar=false
183 | permissions/factory_test=false
184 | permissions/flashlight=false
185 | permissions/force_back=false
186 | permissions/get_accounts=false
187 | permissions/get_package_size=false
188 | permissions/get_tasks=false
189 | permissions/get_top_activity_info=false
190 | permissions/global_search=false
191 | permissions/hardware_test=false
192 | permissions/inject_events=false
193 | permissions/install_location_provider=false
194 | permissions/install_packages=false
195 | permissions/install_shortcut=false
196 | permissions/internal_system_window=false
197 | permissions/internet=false
198 | permissions/kill_background_processes=false
199 | permissions/location_hardware=false
200 | permissions/manage_accounts=false
201 | permissions/manage_app_tokens=false
202 | permissions/manage_documents=false
203 | permissions/manage_external_storage=false
204 | permissions/master_clear=false
205 | permissions/media_content_control=false
206 | permissions/modify_audio_settings=false
207 | permissions/modify_phone_state=false
208 | permissions/mount_format_filesystems=false
209 | permissions/mount_unmount_filesystems=false
210 | permissions/nfc=false
211 | permissions/persistent_activity=false
212 | permissions/process_outgoing_calls=false
213 | permissions/read_calendar=false
214 | permissions/read_call_log=false
215 | permissions/read_contacts=false
216 | permissions/read_external_storage=false
217 | permissions/read_frame_buffer=false
218 | permissions/read_history_bookmarks=false
219 | permissions/read_input_state=false
220 | permissions/read_logs=false
221 | permissions/read_phone_state=false
222 | permissions/read_profile=false
223 | permissions/read_sms=false
224 | permissions/read_social_stream=false
225 | permissions/read_sync_settings=false
226 | permissions/read_sync_stats=false
227 | permissions/read_user_dictionary=false
228 | permissions/reboot=false
229 | permissions/receive_boot_completed=false
230 | permissions/receive_mms=false
231 | permissions/receive_sms=false
232 | permissions/receive_wap_push=false
233 | permissions/record_audio=false
234 | permissions/reorder_tasks=false
235 | permissions/restart_packages=false
236 | permissions/send_respond_via_message=false
237 | permissions/send_sms=false
238 | permissions/set_activity_watcher=false
239 | permissions/set_alarm=false
240 | permissions/set_always_finish=false
241 | permissions/set_animation_scale=false
242 | permissions/set_debug_app=false
243 | permissions/set_orientation=false
244 | permissions/set_pointer_speed=false
245 | permissions/set_preferred_applications=false
246 | permissions/set_process_limit=false
247 | permissions/set_time=false
248 | permissions/set_time_zone=false
249 | permissions/set_wallpaper=false
250 | permissions/set_wallpaper_hints=false
251 | permissions/signal_persistent_processes=false
252 | permissions/status_bar=false
253 | permissions/subscribed_feeds_read=false
254 | permissions/subscribed_feeds_write=false
255 | permissions/system_alert_window=false
256 | permissions/transmit_ir=false
257 | permissions/uninstall_shortcut=false
258 | permissions/update_device_stats=false
259 | permissions/use_credentials=false
260 | permissions/use_sip=false
261 | permissions/vibrate=false
262 | permissions/wake_lock=false
263 | permissions/write_apn_settings=false
264 | permissions/write_calendar=false
265 | permissions/write_call_log=false
266 | permissions/write_contacts=false
267 | permissions/write_external_storage=false
268 | permissions/write_gservices=false
269 | permissions/write_history_bookmarks=false
270 | permissions/write_profile=false
271 | permissions/write_secure_settings=false
272 | permissions/write_settings=false
273 | permissions/write_sms=false
274 | permissions/write_social_stream=false
275 | permissions/write_sync_settings=false
276 | permissions/write_user_dictionary=false
277 |
--------------------------------------------------------------------------------
/ios/plugin/rating.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 56;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | BD8AECFD2A5744C000222717 /* rating.mm in Sources */ = {isa = PBXBuildFile; fileRef = BD8AECFC2A5744C000222717 /* rating.mm */; };
11 | BD8AECFE2A5744C000222717 /* rating.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = BD8AECFB2A5744C000222717 /* rating.h */; };
12 | BDF397C62A5BE8D50073C2AD /* rating_module.mm in Sources */ = {isa = PBXBuildFile; fileRef = BDF397C52A5BE8D50073C2AD /* rating_module.mm */; };
13 | /* End PBXBuildFile section */
14 |
15 | /* Begin PBXCopyFilesBuildPhase section */
16 | BD8AECF62A5744C000222717 /* CopyFiles */ = {
17 | isa = PBXCopyFilesBuildPhase;
18 | buildActionMask = 2147483647;
19 | dstPath = "include/$(PRODUCT_NAME)";
20 | dstSubfolderSpec = 16;
21 | files = (
22 | BD8AECFE2A5744C000222717 /* rating.h in CopyFiles */,
23 | );
24 | runOnlyForDeploymentPostprocessing = 0;
25 | };
26 | /* End PBXCopyFilesBuildPhase section */
27 |
28 | /* Begin PBXFileReference section */
29 | BD8AECF82A5744C000222717 /* librating.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = librating.a; sourceTree = BUILT_PRODUCTS_DIR; };
30 | BD8AECFB2A5744C000222717 /* rating.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rating.h; sourceTree = ""; };
31 | BD8AECFC2A5744C000222717 /* rating.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = rating.mm; sourceTree = ""; };
32 | BDF397C22A5B4A5A0073C2AD /* rating_module.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = rating_module.h; sourceTree = ""; };
33 | BDF397C52A5BE8D50073C2AD /* rating_module.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; path = rating_module.mm; sourceTree = ""; };
34 | /* End PBXFileReference section */
35 |
36 | /* Begin PBXFrameworksBuildPhase section */
37 | BD8AECF52A5744C000222717 /* Frameworks */ = {
38 | isa = PBXFrameworksBuildPhase;
39 | buildActionMask = 2147483647;
40 | files = (
41 | );
42 | runOnlyForDeploymentPostprocessing = 0;
43 | };
44 | /* End PBXFrameworksBuildPhase section */
45 |
46 | /* Begin PBXGroup section */
47 | BD8AECEF2A5744C000222717 = {
48 | isa = PBXGroup;
49 | children = (
50 | BD8AECFA2A5744C000222717 /* rating */,
51 | BD8AECF92A5744C000222717 /* Products */,
52 | );
53 | sourceTree = "";
54 | };
55 | BD8AECF92A5744C000222717 /* Products */ = {
56 | isa = PBXGroup;
57 | children = (
58 | BD8AECF82A5744C000222717 /* librating.a */,
59 | );
60 | name = Products;
61 | sourceTree = "";
62 | };
63 | BD8AECFA2A5744C000222717 /* rating */ = {
64 | isa = PBXGroup;
65 | children = (
66 | BDF397C52A5BE8D50073C2AD /* rating_module.mm */,
67 | BD8AECFB2A5744C000222717 /* rating.h */,
68 | BD8AECFC2A5744C000222717 /* rating.mm */,
69 | BDF397C22A5B4A5A0073C2AD /* rating_module.h */,
70 | );
71 | path = rating;
72 | sourceTree = "";
73 | };
74 | /* End PBXGroup section */
75 |
76 | /* Begin PBXNativeTarget section */
77 | BD8AECF72A5744C000222717 /* rating */ = {
78 | isa = PBXNativeTarget;
79 | buildConfigurationList = BD8AED012A5744C000222717 /* Build configuration list for PBXNativeTarget "rating" */;
80 | buildPhases = (
81 | BD8AECF42A5744C000222717 /* Sources */,
82 | BD8AECF52A5744C000222717 /* Frameworks */,
83 | BD8AECF62A5744C000222717 /* CopyFiles */,
84 | );
85 | buildRules = (
86 | );
87 | dependencies = (
88 | );
89 | name = rating;
90 | productName = rating;
91 | productReference = BD8AECF82A5744C000222717 /* librating.a */;
92 | productType = "com.apple.product-type.library.static";
93 | };
94 | /* End PBXNativeTarget section */
95 |
96 | /* Begin PBXProject section */
97 | BD8AECF02A5744C000222717 /* Project object */ = {
98 | isa = PBXProject;
99 | attributes = {
100 | BuildIndependentTargetsInParallel = 1;
101 | LastUpgradeCheck = 1420;
102 | TargetAttributes = {
103 | BD8AECF72A5744C000222717 = {
104 | CreatedOnToolsVersion = 14.2;
105 | };
106 | };
107 | };
108 | buildConfigurationList = BD8AECF32A5744C000222717 /* Build configuration list for PBXProject "rating" */;
109 | compatibilityVersion = "Xcode 14.0";
110 | developmentRegion = en;
111 | hasScannedForEncodings = 0;
112 | knownRegions = (
113 | en,
114 | Base,
115 | );
116 | mainGroup = BD8AECEF2A5744C000222717;
117 | productRefGroup = BD8AECF92A5744C000222717 /* Products */;
118 | projectDirPath = "";
119 | projectRoot = "";
120 | targets = (
121 | BD8AECF72A5744C000222717 /* rating */,
122 | );
123 | };
124 | /* End PBXProject section */
125 |
126 | /* Begin PBXSourcesBuildPhase section */
127 | BD8AECF42A5744C000222717 /* Sources */ = {
128 | isa = PBXSourcesBuildPhase;
129 | buildActionMask = 2147483647;
130 | files = (
131 | BD8AECFD2A5744C000222717 /* rating.mm in Sources */,
132 | BDF397C62A5BE8D50073C2AD /* rating_module.mm in Sources */,
133 | );
134 | runOnlyForDeploymentPostprocessing = 0;
135 | };
136 | /* End PBXSourcesBuildPhase section */
137 |
138 | /* Begin XCBuildConfiguration section */
139 | BD8AECFF2A5744C000222717 /* Debug */ = {
140 | isa = XCBuildConfiguration;
141 | buildSettings = {
142 | ALWAYS_SEARCH_USER_PATHS = NO;
143 | CLANG_ANALYZER_NONNULL = YES;
144 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
145 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
146 | CLANG_ENABLE_MODULES = YES;
147 | CLANG_ENABLE_OBJC_ARC = YES;
148 | CLANG_ENABLE_OBJC_WEAK = YES;
149 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
150 | CLANG_WARN_BOOL_CONVERSION = YES;
151 | CLANG_WARN_COMMA = YES;
152 | CLANG_WARN_CONSTANT_CONVERSION = YES;
153 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
154 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
155 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
156 | CLANG_WARN_EMPTY_BODY = YES;
157 | CLANG_WARN_ENUM_CONVERSION = YES;
158 | CLANG_WARN_INFINITE_RECURSION = YES;
159 | CLANG_WARN_INT_CONVERSION = YES;
160 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
161 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
162 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
163 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
164 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
165 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
166 | CLANG_WARN_STRICT_PROTOTYPES = YES;
167 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
168 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
169 | CLANG_WARN_UNREACHABLE_CODE = YES;
170 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
171 | COPY_PHASE_STRIP = NO;
172 | DEBUG_INFORMATION_FORMAT = dwarf;
173 | ENABLE_STRICT_OBJC_MSGSEND = YES;
174 | ENABLE_TESTABILITY = YES;
175 | GCC_C_LANGUAGE_STANDARD = gnu11;
176 | GCC_DYNAMIC_NO_PIC = NO;
177 | GCC_NO_COMMON_BLOCKS = YES;
178 | GCC_OPTIMIZATION_LEVEL = 0;
179 | GCC_PREPROCESSOR_DEFINITIONS = (
180 | "DEBUG=1",
181 | "$(inherited)",
182 | );
183 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
184 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
185 | GCC_WARN_UNDECLARED_SELECTOR = YES;
186 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
187 | GCC_WARN_UNUSED_FUNCTION = YES;
188 | GCC_WARN_UNUSED_VARIABLE = YES;
189 | IPHONEOS_DEPLOYMENT_TARGET = 16.2;
190 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
191 | MTL_FAST_MATH = YES;
192 | ONLY_ACTIVE_ARCH = YES;
193 | SDKROOT = iphoneos;
194 | };
195 | name = Debug;
196 | };
197 | BD8AED002A5744C000222717 /* Release */ = {
198 | isa = XCBuildConfiguration;
199 | buildSettings = {
200 | ALWAYS_SEARCH_USER_PATHS = NO;
201 | CLANG_ANALYZER_NONNULL = YES;
202 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
203 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++20";
204 | CLANG_ENABLE_MODULES = YES;
205 | CLANG_ENABLE_OBJC_ARC = YES;
206 | CLANG_ENABLE_OBJC_WEAK = YES;
207 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
208 | CLANG_WARN_BOOL_CONVERSION = YES;
209 | CLANG_WARN_COMMA = YES;
210 | CLANG_WARN_CONSTANT_CONVERSION = YES;
211 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
212 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
213 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
214 | CLANG_WARN_EMPTY_BODY = YES;
215 | CLANG_WARN_ENUM_CONVERSION = YES;
216 | CLANG_WARN_INFINITE_RECURSION = YES;
217 | CLANG_WARN_INT_CONVERSION = YES;
218 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
219 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
220 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
221 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
222 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
223 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
224 | CLANG_WARN_STRICT_PROTOTYPES = YES;
225 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
226 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
227 | CLANG_WARN_UNREACHABLE_CODE = YES;
228 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
229 | COPY_PHASE_STRIP = NO;
230 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
231 | ENABLE_NS_ASSERTIONS = NO;
232 | ENABLE_STRICT_OBJC_MSGSEND = YES;
233 | GCC_C_LANGUAGE_STANDARD = gnu11;
234 | GCC_NO_COMMON_BLOCKS = YES;
235 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
236 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
237 | GCC_WARN_UNDECLARED_SELECTOR = YES;
238 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
239 | GCC_WARN_UNUSED_FUNCTION = YES;
240 | GCC_WARN_UNUSED_VARIABLE = YES;
241 | IPHONEOS_DEPLOYMENT_TARGET = 16.2;
242 | MTL_ENABLE_DEBUG_INFO = NO;
243 | MTL_FAST_MATH = YES;
244 | SDKROOT = iphoneos;
245 | VALIDATE_PRODUCT = YES;
246 | };
247 | name = Release;
248 | };
249 | BD8AED022A5744C000222717 /* Debug */ = {
250 | isa = XCBuildConfiguration;
251 | buildSettings = {
252 | CODE_SIGN_STYLE = Automatic;
253 | DEVELOPMENT_TEAM = X8AT4MS8ZQ;
254 | HEADER_SEARCH_PATHS = (
255 | "${inherited}",
256 | "${SRCROOT}/../godot",
257 | "${SRCROOT}/../godot/platform/iphone",
258 | );
259 | OTHER_LDFLAGS = "-ObjC";
260 | PRODUCT_NAME = "$(TARGET_NAME)";
261 | SKIP_INSTALL = YES;
262 | TARGETED_DEVICE_FAMILY = "1,2";
263 | };
264 | name = Debug;
265 | };
266 | BD8AED032A5744C000222717 /* Release */ = {
267 | isa = XCBuildConfiguration;
268 | buildSettings = {
269 | CODE_SIGN_STYLE = Automatic;
270 | DEVELOPMENT_TEAM = X8AT4MS8ZQ;
271 | HEADER_SEARCH_PATHS = (
272 | "${inherited}",
273 | "${SRCROOT}/../godot",
274 | "${SRCROOT}/../godot/platform/iphone",
275 | );
276 | OTHER_LDFLAGS = "-ObjC";
277 | PRODUCT_NAME = "$(TARGET_NAME)";
278 | SKIP_INSTALL = YES;
279 | TARGETED_DEVICE_FAMILY = "1,2";
280 | };
281 | name = Release;
282 | };
283 | /* End XCBuildConfiguration section */
284 |
285 | /* Begin XCConfigurationList section */
286 | BD8AECF32A5744C000222717 /* Build configuration list for PBXProject "rating" */ = {
287 | isa = XCConfigurationList;
288 | buildConfigurations = (
289 | BD8AECFF2A5744C000222717 /* Debug */,
290 | BD8AED002A5744C000222717 /* Release */,
291 | );
292 | defaultConfigurationIsVisible = 0;
293 | defaultConfigurationName = Release;
294 | };
295 | BD8AED012A5744C000222717 /* Build configuration list for PBXNativeTarget "rating" */ = {
296 | isa = XCConfigurationList;
297 | buildConfigurations = (
298 | BD8AED022A5744C000222717 /* Debug */,
299 | BD8AED032A5744C000222717 /* Release */,
300 | );
301 | defaultConfigurationIsVisible = 0;
302 | defaultConfigurationName = Release;
303 | };
304 | /* End XCConfigurationList section */
305 | };
306 | rootObject = BD8AECF02A5744C000222717 /* Project object */;
307 | }
308 |
--------------------------------------------------------------------------------