PlayStore & Debug Build Changes

*Updated Icon
*Upgraded NDK to 29.0.14206865
*Rebuilt Libs To 16KB Page Sizr Compatible
*Updated Debug APK Name And Package
This commit is contained in:
Dark98
2026-02-11 21:44:30 +00:00
parent d37c099060
commit bb07740d43
52 changed files with 158 additions and 41 deletions
+9 -1
View File
@@ -17,6 +17,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(IS_CLANG_CL TRUE)
set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-imsvc")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-old-style-cast -Wno-reserved-id-macro -Wno-c++98-compat-pedantic -funwind-tables -fopenmp -static-openmp -Wl,--no-merge-exidx-entries")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-z,common-page-size=16384 -Wl,-z,max-page-size=16384")
add_compile_options(-fsigned-char)
# Suppress all warnings
@@ -1351,4 +1352,11 @@ target_link_libraries(slic3r PRIVATE
boost_wave
boost_wserialization
${OCCT_LIBS}
)
)
if(ANDROID)
target_link_options(slic3r PRIVATE
"-Wl,-z,common-page-size=16384"
"-Wl,-z,max-page-size=16384"
"-Wl,--rosegment")
endif()
+21 -7
View File
@@ -17,7 +17,7 @@ android {
applicationId "com.dark98.santoku"
minSdk 21
targetSdk 35
versionCode 8
versionCode 1
versionName "0.0.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
@@ -50,6 +50,8 @@ android {
}
}
debug {
applicationIdSuffix ".debug"
resValue "string", "AppName", "Santoku (Debug)"
buildConfigField "String", "COMMIT", "\"" + commit + "\""
ndk {
debugSymbolLevel 'NONE'
@@ -67,7 +69,7 @@ android {
cmake {
path file('CMakeLists.txt')
}
ndkVersion "23.1.7779620"
ndkVersion "29.0.14206865"
}
buildFeatures {
@@ -76,7 +78,9 @@ android {
applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "Santoku_" + commit + ".apk"
def isDebug = variant.buildType.name == "debug"
def suffix = isDebug ? "_debug" : ""
outputFileName = "Santoku_" + commit + suffix + ".apk"
}
}
}
@@ -151,6 +155,8 @@ def toolchainFile = "${ndkDir}/build/cmake/android.toolchain.cmake"
def wslExe = "${System.getenv("SystemRoot") ?: "C:/Windows"}/System32/wsl.exe"
def prebuiltTag = isWindows ? "windows-x86_64" : (isMac ? "darwin-x86_64" : "linux-x86_64")
def llvmBinDir = "${ndkDir}/toolchains/llvm/prebuilt/${prebuiltTag}/bin"
def pageSizeLinkerFlags = "-Wl,-z,common-page-size=16384 -Wl,-z,max-page-size=16384"
def forceNativeRebuild = project.hasProperty("forceNativeRebuild") && project.property("forceNativeRebuild").toString().toLowerCase() == "true"
def tbbSrc = "${rootDir}/third_party/openvdb-android/tbb-aarch64"
def tbbBuildArm64 = "${rootDir}/third_party/openvdb-android/build-tbb-android-21-arm64"
@@ -287,6 +293,7 @@ tasks.register("patchBoostForAndroid") {
tasks.register("buildTbbArm64") {
dependsOn("ensureThirdParty")
onlyIf {
forceNativeRebuild ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/arm64-v8a/libtbb.a").exists() ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/arm64-v8a/libtbbmalloc.a").exists() ||
!file("${projectDir}/src/main/jniLibs/arm64-v8a/libtbb.so").exists() ||
@@ -304,6 +311,7 @@ tasks.register("buildTbbArm64") {
"-DANDROID_PLATFORM=android-21",
"-DANDROID_STL=c++_shared",
"-DCMAKE_BUILD_TYPE=Release",
"-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
"-DCMAKE_INSTALL_PREFIX=${tbbInstallArm64}",
"-DTBB_BUILD_TESTS=Off"
}
@@ -316,6 +324,7 @@ tasks.register("buildTbbArm64") {
tasks.register("buildTbbArmv7") {
dependsOn("ensureThirdParty")
onlyIf {
forceNativeRebuild ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/armeabi-v7a/libtbb.a").exists() ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/armeabi-v7a/libtbbmalloc.a").exists() ||
!file("${projectDir}/src/main/jniLibs/armeabi-v7a/libtbb.so").exists() ||
@@ -333,6 +342,7 @@ tasks.register("buildTbbArmv7") {
"-DANDROID_PLATFORM=android-21",
"-DANDROID_STL=c++_shared",
"-DCMAKE_BUILD_TYPE=Release",
"-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
"-DCMAKE_INSTALL_PREFIX=${tbbInstallArmv7}",
"-DTBB_BUILD_TESTS=Off"
}
@@ -345,6 +355,7 @@ tasks.register("buildTbbArmv7") {
tasks.register("copyTbbArm64", Copy) {
dependsOn("buildTbbArm64")
onlyIf {
forceNativeRebuild ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/arm64-v8a/libtbb.a").exists() ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/arm64-v8a/libtbbmalloc.a").exists() ||
!file("${projectDir}/src/main/jniLibs/arm64-v8a/libtbb.so").exists() ||
@@ -383,6 +394,7 @@ tasks.register("copyTbbArm64", Copy) {
tasks.register("copyTbbArmv7", Copy) {
dependsOn("buildTbbArmv7")
onlyIf {
forceNativeRebuild ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/armeabi-v7a/libtbb.a").exists() ||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/armeabi-v7a/libtbbmalloc.a").exists() ||
!file("${projectDir}/src/main/jniLibs/armeabi-v7a/libtbb.so").exists() ||
@@ -504,7 +516,7 @@ tasks.register("copyBoostHeaders", Copy) {
tasks.register("buildOcctArm64") {
dependsOn("ensureThirdParty")
onlyIf { !file("${projectDir}/src/main/occt/jniLibs/arm64-v8a/libTKDESTEP.so").exists() }
onlyIf { forceNativeRebuild || !file("${projectDir}/src/main/occt/jniLibs/arm64-v8a/libTKDESTEP.so").exists() }
doLast {
exec {
commandLine cmakeExe, "-G", "Ninja",
@@ -516,6 +528,7 @@ tasks.register("buildOcctArm64") {
"-DANDROID_PLATFORM=android-21",
"-DCMAKE_BUILD_TYPE=Release",
"-DBUILD_LIBRARY_TYPE=Shared",
"-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
"-DINSTALL_DIR_LIB=libs/arm64-v8a",
"-DINSTALL_DIR_INCLUDE=inc",
"-DBUILD_DOC_Overview=OFF",
@@ -533,7 +546,7 @@ tasks.register("buildOcctArm64") {
tasks.register("buildOcctArmv7") {
dependsOn("ensureThirdParty")
onlyIf { !file("${projectDir}/src/main/occt/jniLibs/armeabi-v7a/libTKDESTEP.so").exists() }
onlyIf { forceNativeRebuild || !file("${projectDir}/src/main/occt/jniLibs/armeabi-v7a/libTKDESTEP.so").exists() }
doLast {
exec {
commandLine cmakeExe, "-G", "Ninja",
@@ -545,6 +558,7 @@ tasks.register("buildOcctArmv7") {
"-DANDROID_PLATFORM=android-21",
"-DCMAKE_BUILD_TYPE=Release",
"-DBUILD_LIBRARY_TYPE=Shared",
"-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
"-DINSTALL_DIR_LIB=libs/armeabi-v7a",
"-DINSTALL_DIR_INCLUDE=inc",
"-DBUILD_DOC_Overview=OFF",
@@ -562,7 +576,7 @@ tasks.register("buildOcctArmv7") {
tasks.register("copyOcctArm64", Copy) {
dependsOn("buildOcctArm64")
onlyIf { !file("${projectDir}/src/main/occt/jniLibs/arm64-v8a/libTKDESTEP.so").exists() }
onlyIf { forceNativeRebuild || !file("${projectDir}/src/main/occt/jniLibs/arm64-v8a/libTKDESTEP.so").exists() }
from("${occtDistArm64}/libs/arm64-v8a") {
include "*.so"
}
@@ -571,7 +585,7 @@ tasks.register("copyOcctArm64", Copy) {
tasks.register("copyOcctArmv7", Copy) {
dependsOn("buildOcctArmv7")
onlyIf { !file("${projectDir}/src/main/occt/jniLibs/armeabi-v7a/libTKDESTEP.so").exists() }
onlyIf { forceNativeRebuild || !file("${projectDir}/src/main/occt/jniLibs/armeabi-v7a/libTKDESTEP.so").exists() }
from("${occtDistArmv7}/libs/armeabi-v7a") {
include "*.so"
}
+5 -1
View File
@@ -18,4 +18,8 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
#-renamesourcefileattribute SourceFile
# Keep cloud API and SAPIL runtime proxies.
-keep class com.dark98.santoku.cloud.** { *; }
-keep class ru.ytkab0bp.sapil.** { *; }
+2 -2
View File
@@ -16,7 +16,7 @@
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/icon"
android:icon="@mipmap/ic_launcher"
android:label="@string/AppName"
android:supportsRtl="true"
android:theme="@style/Theme.Santoku"
@@ -59,7 +59,7 @@
<activity android:name=".SetupActivity" android:exported="false"/>
<activity android:name=".SafeStartActivity" android:exported="false"/>
<provider
android:authorities="com.dark98.santoku.provider"
android:authorities="${applicationId}.provider"
android:name="androidx.core.content.FileProvider"
android:grantUriPermissions="true"
android:exported="false">
Binary file not shown.

After

Width:  |  Height:  |  Size: 6.8 KiB

@@ -898,9 +898,14 @@ public class SetupActivity extends AppCompatActivity {
Toast.makeText(ctx, R.string.SettingsCloudManageSignUpMissingFields, Toast.LENGTH_SHORT).show();
return;
}
CloudAPI api = CloudController.getApiSafe();
if (api == null) {
Toast.makeText(ctx, R.string.SettingsCloudManageSignUpFailed, Toast.LENGTH_SHORT).show();
return;
}
signUpInProgress = true;
bindLoginButton(true);
CloudAPI.INSTANCE.signup(email, password, displayName, new APICallback<CloudAPI.AuthToken>() {
api.signup(email, password, displayName, new APICallback<CloudAPI.AuthToken>() {
@Override
public void onResponse(CloudAPI.AuthToken response) {
Prefs.setCloudAPIToken(response.bearer);
@@ -6,7 +6,13 @@ import com.dark98.santoku.BuildConfig;
public class EventBusTask extends BootTask {
public EventBusTask() {
super(() -> EventBus.registerImpl(BuildConfig.APPLICATION_ID));
super(() -> {
String appId = BuildConfig.APPLICATION_ID;
if (BuildConfig.DEBUG && appId.endsWith(".debug")) {
appId = appId.substring(0, appId.length() - ".debug".length());
}
EventBus.registerImpl(appId);
});
onWorker();
}
}
@@ -38,6 +38,11 @@ public interface CloudAPI extends APIRunner {
}
return headers;
}
@Override
public ru.ytkab0bp.sapil.util.Pair<String, String> getNamingTransformPolicy() {
return null;
}
});
/**
@@ -51,7 +51,14 @@ public class CloudController {
private static Runnable loginCheck = new Runnable() {
@Override
public void run() {
CloudAPI.INSTANCE.loginCheck(loginSessionId, new APICallback<CloudAPI.LoginState>() {
CloudAPI api = getApiSafe();
if (api == null) {
loginSessionId = null;
isLoggingIn = false;
Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
return;
}
api.loginCheck(loginSessionId, new APICallback<CloudAPI.LoginState>() {
@Override
public void onResponse(CloudAPI.LoginState response) {
if (response.loggedIn) {
@@ -77,6 +84,15 @@ public class CloudController {
private static Gson gson = new Gson();
public static CloudAPI getApiSafe() {
try {
return CloudAPI.INSTANCE;
} catch (Throwable t) {
Log.e(TAG, "Cloud API unavailable", t);
return null;
}
}
public static void initCached() {
if (Prefs.getCloudAPIToken() != null) {
if (Prefs.getCloudCachedUserInfo() != null) {
@@ -101,7 +117,11 @@ public class CloudController {
}
private static void loadUserInfo() {
CloudAPI.INSTANCE.userGetInfo(new APICallback<CloudAPI.UserInfo>() {
CloudAPI api = getApiSafe();
if (api == null) {
return;
}
api.userGetInfo(new APICallback<CloudAPI.UserInfo>() {
@Override
public void onResponse(CloudAPI.UserInfo response) {
userInfo = response;
@@ -145,7 +165,13 @@ public class CloudController {
}
private static void beginLogin0() {
beginLoginHandle = CloudAPI.INSTANCE.loginBegin(new APICallback<CloudAPI.LoginData>() {
CloudAPI api = getApiSafe();
if (api == null) {
isLoggingIn = false;
Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
return;
}
beginLoginHandle = api.loginBegin(new APICallback<CloudAPI.LoginData>() {
@Override
public void onResponse(CloudAPI.LoginData response) {
loginSessionId = response.sessionId;
@@ -172,7 +198,10 @@ public class CloudController {
isLoggingIn = false;
Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
if (loginSessionId != null) {
CloudAPI.INSTANCE.loginCancel(loginSessionId, response -> {});
CloudAPI api = getApiSafe();
if (api != null) {
api.loginCancel(loginSessionId, response -> {});
}
}
if (beginLoginHandle != null && beginLoginHandle.isRunning()) {
beginLoginHandle.cancel();
@@ -184,7 +213,10 @@ public class CloudController {
}
public static void logout() {
CloudAPI.INSTANCE.logout(response -> {});
CloudAPI api = getApiSafe();
if (api != null) {
api.logout(response -> {});
}
Prefs.setCloudAPIToken(null);
userInfo = null;
Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
@@ -204,7 +236,12 @@ public class CloudController {
}
private static void downloadData(long lastModified) {
CloudAPI.INSTANCE.syncGet(new APICallback<String>() {
CloudAPI api = getApiSafe();
if (api == null) {
isSyncInProgress = false;
return;
}
api.syncGet(new APICallback<String>() {
@Override
public void onResponse(String response) {
IOUtils.IO_POOL.submit(() -> {
@@ -251,11 +288,15 @@ public class CloudController {
if (isSyncInProgress) {
return;
}
CloudAPI api = getApiSafe();
if (api == null) {
return;
}
long modified = Prefs.getCloudLocalLastModified();
isSyncInProgress = true;
Santoku.EVENT_BUS.fireEvent(new NeedSnackbarEvent(SnackbarsLayout.Type.LOADING, R.string.CloudSyncInProgress).tag(CLOUD_SYNC_TAG));
CloudAPI.INSTANCE.syncGetState(new APICallback<CloudAPI.SyncState>() {
api.syncGetState(new APICallback<CloudAPI.SyncState>() {
@Override
public void onResponse(CloudAPI.SyncState response) {
if (Santoku.CONFIG == null && response.usedSize != 0) {
@@ -324,7 +365,12 @@ public class CloudController {
bos.close();
fis.close();
CloudAPI.INSTANCE.syncUpload(Base64.encodeToString(bos.toByteArray(), Base64.NO_WRAP), "application/ini", new APICallback<CloudAPI.SyncState>() {
CloudAPI api = getApiSafe();
if (api == null) {
isSyncInProgress = false;
return;
}
api.syncUpload(Base64.encodeToString(bos.toByteArray(), Base64.NO_WRAP), "application/ini", new APICallback<CloudAPI.SyncState>() {
@Override
public void onResponse(CloudAPI.SyncState response) {
isSyncInProgress = false;
@@ -81,7 +81,7 @@ public class ConfigObject implements ProfileListFragment.ProfileListItem {
public String serialize() {
StringBuilder sb = new StringBuilder();
sb.append("# generated by Slice Beam ").append(BuildConfig.VERSION_NAME).append("\n\n");
sb.append("# generated by Santoku ").append(BuildConfig.VERSION_NAME).append("\n\n");
for (Map.Entry<String, String> en : values.entrySet()) {
String value = en.getValue();
if (value != null) {
@@ -214,7 +214,7 @@ public class Slic3rConfigWrapper {
public String serialize() {
StringBuilder sb = new StringBuilder();
sb.append("# generated by Slice Beam ").append(BuildConfig.VERSION_NAME).append("\n\n");
sb.append("# generated by Santoku ").append(BuildConfig.VERSION_NAME).append("\n\n");
serializeList(sb, "printer", printerConfigs);
serializeList(sb, "print", printConfigs);
serializeList(sb, "filament", filamentConfigs);
@@ -71,7 +71,7 @@ public class Slic3rLocalization {
}
private static String replaceStr(String val) {
return val.replace("\\n", "\n").replaceAll("\\\\(.)", "$1").replace("Slic3r", "Slice Beam").replace("PrusaSlicer", "Slice Beam");
return val.replace("\\n", "\n").replaceAll("\\\\(.)", "$1").replace("Slic3r", "Santoku").replace("PrusaSlicer", "Santoku");
}
public static String getString(String key) {
+1 -1
View File
@@ -553,7 +553,7 @@ public:
traits.intersection(query, singleton_data());
break;
default: // if(size() >= 2)
root_node()->template traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound);
root_node()->traversal_with_priority_and_group_traversal(m_primitives, query, traits, m_primitives.size(), 0, group_traversal_bound);
}
}
+3 -3
View File
@@ -221,7 +221,7 @@ public:
operator bool_type() const
{
return (! (this->base() == nullptr)) ?
return (g != nullptr) ?
&Halfedge_around_source_iterator::this_type_does_not_support_comparisons : 0;
}
@@ -321,7 +321,7 @@ public:
operator bool_type() const
{
return (! (this->base() == nullptr)) ?
return (g != nullptr) ?
&Halfedge_around_target_iterator::this_type_does_not_support_comparisons : 0;
}
@@ -420,7 +420,7 @@ public:
operator bool_type() const
{
return (! (this->base() == nullptr)) ?
return (g != nullptr) ?
&Halfedge_around_face_iterator::this_type_does_not_support_comparisons : 0;
}
@@ -71,7 +71,7 @@ template<class T, class TT = T> using WritableDataStoreOnly = std::enable_if_t<I
template<class T, class ArrItem>
void set_data(ArrItem &itm, const std::string &key, T &&data)
{
WritableDataStoreTraits<ArrItem>::template set(itm, key, std::forward<T>(data));
WritableDataStoreTraits<ArrItem>::set(itm, key, std::forward<T>(data));
}
template<class T> constexpr bool IsReadWritableDataStore = IsDataStore<T> && IsWritableDataStore<T>;
+2 -1
View File
@@ -10,6 +10,7 @@
#include <algorithm>
#include <iterator>
#include <list>
#include <functional>
#include "linalg.h"
@@ -36,7 +37,7 @@ public:
friend ostream & operator << (ostream &, RCTrial) ;
};
class TrialGT : public unary_function<Trial, bool>
class TrialGT
// Predicate for Trial (needed for remove_if)
{
public:
+3 -3
View File
@@ -327,7 +327,7 @@ private:
void operator()(const NodeRange& range) const
{
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
OpT::template eval(mNodeOp, it);
OpT::eval(mNodeOp, it);
}
}
const NodeOp mNodeOp;
@@ -347,7 +347,7 @@ private:
void operator()(const NodeRange& range) const
{
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
OpT::template eval(mNodeOp, it);
OpT::eval(mNodeOp, it);
}
}
const NodeOp& mNodeOp;
@@ -372,7 +372,7 @@ private:
void operator()(const NodeRange& range)
{
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
OpT::template eval(*mNodeOp, it);
OpT::eval(*mNodeOp, it);
}
}
void join(const NodeReducer& other)
+1
View File
@@ -4,6 +4,7 @@
*/
#include "gzguts.h"
#include <unistd.h>
#if defined(_WIN32) && !defined(__BORLANDC__)
# define LSEEK _lseeki64
+1
View File
@@ -4,6 +4,7 @@
*/
#include "gzguts.h"
#include <unistd.h>
/* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from
state->fd, and update state->eof, state->err, and state->msg as appropriate.
+1
View File
@@ -4,6 +4,7 @@
*/
#include "gzguts.h"
#include <unistd.h>
/* Initialize state for writing a gzip file. Mark initialization by setting
state->size to non-zero. Return -1 on a memory allocation failure, or 0 on
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,15 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="#000000">
<group android:scaleX="0.696"
android:scaleY="0.696"
android:translateX="3.648"
android:translateY="3.648">
<path
android:fillColor="@android:color/white"
android:pathData="M19,8L5,8c-1.66,0 -3,1.34 -3,3v6h4v4h12v-4h4v-6c0,-1.66 -1.34,-3 -3,-3zM16,19L8,19v-5h8v5zM19,12c-0.55,0 -1,-0.45 -1,-1s0.45,-1 1,-1 1,0.45 1,1 -0.45,1 -1,1zM18,3L6,3v4h12L18,3z"/>
</group>
</vector>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>
@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_background"/>
<foreground android:drawable="@drawable/ic_launcher_foreground"/>
</adaptive-icon>
Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

-4
View File
@@ -1,4 +0,0 @@
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<foreground android:drawable="@drawable/icon_adaptive_foreground"/>
<background android:drawable="@drawable/icon_adaptive_background"/>
</adaptive-icon>
Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 KiB

+1 -1
View File
@@ -140,7 +140,7 @@
<string name="IntroConfigured">Похоже всё настроено.\nПросто нажмите завершить!</string>
<string name="IntroFinish">Завершить</string>
<string name="IntroEarlyAccess">Ранний доступ</string>
<string name="IntroEarlyAccessMessage">Вы используете ранний доступ Slice Beam.\nПожалуйста обратите внимание, что некоторые функции могут быть недоступны, содержать ошибки или работать не так, как ожидается.\nДля получения новостей о приложении подпишитесь на Telegram-канал разработчика.</string>
<string name="IntroEarlyAccessMessage">Вы используете ранний доступ Santoku.\nОбратите внимание, что некоторые функции могут быть недоступны, содержать ошибки или работать не так, как ожидается.</string>
<string name="SettingsResetToDefault">Сбросить настройки по-умолчанию</string>
<string name="SettingsResetToDefaultTitle">Вы уверены?</string>
<string name="SettingsResetToDefaultDescription">Это действие не может быть отменено.</string>
@@ -0,0 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="ic_launcher_background">#DC3D3D</color>
</resources>
+1 -1
View File
@@ -140,7 +140,7 @@
<string name="IntroConfigured">All seems to be configured.\nJust tap finish!</string>
<string name="IntroFinish">Finish</string>
<string name="IntroEarlyAccess">Early access</string>
<string name="IntroEarlyAccessMessage">You are using an Early Access of Slice Beam.\nPlease note that some features may be unavailable, buggy or work not as expected.\nPlease subscribe to developer\'s Telegram for app\'s news.</string>
<string name="IntroEarlyAccessMessage">You are using an Early Access of Santoku.\nPlease note that some features may be unavailable, buggy or work not as expected.</string>
<string name="SettingsResetToDefault">Reset to defaults</string>
<string name="SettingsResetToDefaultTitle">Are you sure?</string>
<string name="SettingsResetToDefaultDescription">This action can not be undone.</string>
+1 -1
View File
@@ -1,7 +1,7 @@
<resources xmlns:tools="http://schemas.android.com/tools">
<style name="Base.Theme.Santoku" parent="Theme.Material3.Light.NoActionBar">
<item name="android:windowBackground">#FFF</item>
<item name="android:windowSplashScreenAnimatedIcon" tools:targetApi="s">@drawable/icon_adaptive_foreground</item>
<item name="android:windowSplashScreenAnimatedIcon" tools:targetApi="s">@drawable/ic_launcher_foreground</item>
<item name="android:windowSplashScreenIconBackgroundColor" tools:targetApi="s">#3A3A3A</item>
<item name="android:enforceNavigationBarContrast" tools:targetApi="q">false</item>
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
+1 -1
View File
@@ -38,7 +38,7 @@ if (hasSubmodules && missingSubmodule) {
}
}
rootProject.name = "Slice Beam"
rootProject.name = "Santoku"
include ':app', ':eventbus', ':eventbus_api', ':eventbus_processor', ':sapil'
project(':eventbus').projectDir = file('EventBus/eventbus')