Question
My Tizen app was rejected by Samsung's review team because it uses certain C APIs that are not part of the official Tizen API set. These APIs are well-documented open-source libraries without any copyright issues.
I'm confused because:
- Other apps in the Tizen Store (like "App Locker") use similar undocumented APIs
- The review team didn't provide clear technical reasons for rejection
- The core_whitelist.txt file they reference is inaccessible
How can I:
- Understand which APIs are allowed/whitelisted?
- Appeal this decision effectively?
- Develop my app without running into these restrictions?
Answer
Problem Understanding
The issue stems from Tizen's strict API whitelist policy:
- Only specific .so libraries and their symbols are permitted
- Using non-whitelisted APIs results in automatic rejection
- The whitelist isn't publicly documented clearly
Solution Methods
-
Understand the Whitelist System:
- Tizen maintains a list of approved libraries and functions
- Even documented APIs might be restricted if marked as unstable/internal
- Example: Xlib functions are blocked due to Tizen's move to Wayland
-
Workaround Approaches:
- Use
dlopen()anddlsym()for dynamic loading (with proper error handling) - Create wrapper functions for restricted APIs
- Statically link critical functions where possible
- Use
-
Appeal Process:
- Join #tizen on irc.freenode.net for direct developer support
- Clearly document your API usage and justification
- Consider submitting a stripped-down version first to identify exact rejection reasons
Code Examples
// Example of dynamic loading workaround
void* lib_handle = dlopen("libexample.so", RTLD_LAZY);
if (lib_handle) {
typedef int (*func_ptr)(int);
func_ptr my_func = (func_ptr)dlsym(lib_handle, "restricted_function");
if (my_func) {
// Use the function
int result = my_func(42);
}
dlclose(lib_handle);
}
Additional Tips
-
The whitelist issue particularly affects:
- System-level functionality (like app locking)
- Low-level Linux APIs
- Certain multimedia functions
-
For app locker functionality specifically:
- Consider using Tizen's official AppControl API
- Target newer SDK versions (2.4+) for more features
- Be prepared for platform limitations on security-sensitive operations
-
Community Resources:
- #tizen and #edevelop on irc.freenode.net
- Tizen developer documentation at samsungtizenos.com
- Unity forums for whitelist examples