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
@@ -17,6 +17,7 @@ set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|||||||
set(IS_CLANG_CL TRUE)
|
set(IS_CLANG_CL TRUE)
|
||||||
set(CMAKE_INCLUDE_SYSTEM_FLAG_CXX "-imsvc")
|
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_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)
|
add_compile_options(-fsigned-char)
|
||||||
|
|
||||||
# Suppress all warnings
|
# Suppress all warnings
|
||||||
@@ -1351,4 +1352,11 @@ target_link_libraries(slic3r PRIVATE
|
|||||||
boost_wave
|
boost_wave
|
||||||
boost_wserialization
|
boost_wserialization
|
||||||
${OCCT_LIBS}
|
${OCCT_LIBS}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if(ANDROID)
|
||||||
|
target_link_options(slic3r PRIVATE
|
||||||
|
"-Wl,-z,common-page-size=16384"
|
||||||
|
"-Wl,-z,max-page-size=16384"
|
||||||
|
"-Wl,--rosegment")
|
||||||
|
endif()
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ android {
|
|||||||
applicationId "com.dark98.santoku"
|
applicationId "com.dark98.santoku"
|
||||||
minSdk 21
|
minSdk 21
|
||||||
targetSdk 35
|
targetSdk 35
|
||||||
versionCode 8
|
versionCode 1
|
||||||
versionName "0.0.1"
|
versionName "0.0.1"
|
||||||
|
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
@@ -50,6 +50,8 @@ android {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
debug {
|
debug {
|
||||||
|
applicationIdSuffix ".debug"
|
||||||
|
resValue "string", "AppName", "Santoku (Debug)"
|
||||||
buildConfigField "String", "COMMIT", "\"" + commit + "\""
|
buildConfigField "String", "COMMIT", "\"" + commit + "\""
|
||||||
ndk {
|
ndk {
|
||||||
debugSymbolLevel 'NONE'
|
debugSymbolLevel 'NONE'
|
||||||
@@ -67,7 +69,7 @@ android {
|
|||||||
cmake {
|
cmake {
|
||||||
path file('CMakeLists.txt')
|
path file('CMakeLists.txt')
|
||||||
}
|
}
|
||||||
ndkVersion "23.1.7779620"
|
ndkVersion "29.0.14206865"
|
||||||
}
|
}
|
||||||
|
|
||||||
buildFeatures {
|
buildFeatures {
|
||||||
@@ -76,7 +78,9 @@ android {
|
|||||||
|
|
||||||
applicationVariants.all { variant ->
|
applicationVariants.all { variant ->
|
||||||
variant.outputs.all {
|
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 wslExe = "${System.getenv("SystemRoot") ?: "C:/Windows"}/System32/wsl.exe"
|
||||||
def prebuiltTag = isWindows ? "windows-x86_64" : (isMac ? "darwin-x86_64" : "linux-x86_64")
|
def prebuiltTag = isWindows ? "windows-x86_64" : (isMac ? "darwin-x86_64" : "linux-x86_64")
|
||||||
def llvmBinDir = "${ndkDir}/toolchains/llvm/prebuilt/${prebuiltTag}/bin"
|
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 tbbSrc = "${rootDir}/third_party/openvdb-android/tbb-aarch64"
|
||||||
def tbbBuildArm64 = "${rootDir}/third_party/openvdb-android/build-tbb-android-21-arm64"
|
def tbbBuildArm64 = "${rootDir}/third_party/openvdb-android/build-tbb-android-21-arm64"
|
||||||
@@ -287,6 +293,7 @@ tasks.register("patchBoostForAndroid") {
|
|||||||
tasks.register("buildTbbArm64") {
|
tasks.register("buildTbbArm64") {
|
||||||
dependsOn("ensureThirdParty")
|
dependsOn("ensureThirdParty")
|
||||||
onlyIf {
|
onlyIf {
|
||||||
|
forceNativeRebuild ||
|
||||||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/arm64-v8a/libtbb.a").exists() ||
|
!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/jniImports/oneTBB/lib/arm64-v8a/libtbbmalloc.a").exists() ||
|
||||||
!file("${projectDir}/src/main/jniLibs/arm64-v8a/libtbb.so").exists() ||
|
!file("${projectDir}/src/main/jniLibs/arm64-v8a/libtbb.so").exists() ||
|
||||||
@@ -304,6 +311,7 @@ tasks.register("buildTbbArm64") {
|
|||||||
"-DANDROID_PLATFORM=android-21",
|
"-DANDROID_PLATFORM=android-21",
|
||||||
"-DANDROID_STL=c++_shared",
|
"-DANDROID_STL=c++_shared",
|
||||||
"-DCMAKE_BUILD_TYPE=Release",
|
"-DCMAKE_BUILD_TYPE=Release",
|
||||||
|
"-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
|
||||||
"-DCMAKE_INSTALL_PREFIX=${tbbInstallArm64}",
|
"-DCMAKE_INSTALL_PREFIX=${tbbInstallArm64}",
|
||||||
"-DTBB_BUILD_TESTS=Off"
|
"-DTBB_BUILD_TESTS=Off"
|
||||||
}
|
}
|
||||||
@@ -316,6 +324,7 @@ tasks.register("buildTbbArm64") {
|
|||||||
tasks.register("buildTbbArmv7") {
|
tasks.register("buildTbbArmv7") {
|
||||||
dependsOn("ensureThirdParty")
|
dependsOn("ensureThirdParty")
|
||||||
onlyIf {
|
onlyIf {
|
||||||
|
forceNativeRebuild ||
|
||||||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/armeabi-v7a/libtbb.a").exists() ||
|
!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/jniImports/oneTBB/lib/armeabi-v7a/libtbbmalloc.a").exists() ||
|
||||||
!file("${projectDir}/src/main/jniLibs/armeabi-v7a/libtbb.so").exists() ||
|
!file("${projectDir}/src/main/jniLibs/armeabi-v7a/libtbb.so").exists() ||
|
||||||
@@ -333,6 +342,7 @@ tasks.register("buildTbbArmv7") {
|
|||||||
"-DANDROID_PLATFORM=android-21",
|
"-DANDROID_PLATFORM=android-21",
|
||||||
"-DANDROID_STL=c++_shared",
|
"-DANDROID_STL=c++_shared",
|
||||||
"-DCMAKE_BUILD_TYPE=Release",
|
"-DCMAKE_BUILD_TYPE=Release",
|
||||||
|
"-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
|
||||||
"-DCMAKE_INSTALL_PREFIX=${tbbInstallArmv7}",
|
"-DCMAKE_INSTALL_PREFIX=${tbbInstallArmv7}",
|
||||||
"-DTBB_BUILD_TESTS=Off"
|
"-DTBB_BUILD_TESTS=Off"
|
||||||
}
|
}
|
||||||
@@ -345,6 +355,7 @@ tasks.register("buildTbbArmv7") {
|
|||||||
tasks.register("copyTbbArm64", Copy) {
|
tasks.register("copyTbbArm64", Copy) {
|
||||||
dependsOn("buildTbbArm64")
|
dependsOn("buildTbbArm64")
|
||||||
onlyIf {
|
onlyIf {
|
||||||
|
forceNativeRebuild ||
|
||||||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/arm64-v8a/libtbb.a").exists() ||
|
!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/jniImports/oneTBB/lib/arm64-v8a/libtbbmalloc.a").exists() ||
|
||||||
!file("${projectDir}/src/main/jniLibs/arm64-v8a/libtbb.so").exists() ||
|
!file("${projectDir}/src/main/jniLibs/arm64-v8a/libtbb.so").exists() ||
|
||||||
@@ -383,6 +394,7 @@ tasks.register("copyTbbArm64", Copy) {
|
|||||||
tasks.register("copyTbbArmv7", Copy) {
|
tasks.register("copyTbbArmv7", Copy) {
|
||||||
dependsOn("buildTbbArmv7")
|
dependsOn("buildTbbArmv7")
|
||||||
onlyIf {
|
onlyIf {
|
||||||
|
forceNativeRebuild ||
|
||||||
!file("${projectDir}/src/main/jniImports/oneTBB/lib/armeabi-v7a/libtbb.a").exists() ||
|
!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/jniImports/oneTBB/lib/armeabi-v7a/libtbbmalloc.a").exists() ||
|
||||||
!file("${projectDir}/src/main/jniLibs/armeabi-v7a/libtbb.so").exists() ||
|
!file("${projectDir}/src/main/jniLibs/armeabi-v7a/libtbb.so").exists() ||
|
||||||
@@ -504,7 +516,7 @@ tasks.register("copyBoostHeaders", Copy) {
|
|||||||
|
|
||||||
tasks.register("buildOcctArm64") {
|
tasks.register("buildOcctArm64") {
|
||||||
dependsOn("ensureThirdParty")
|
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 {
|
doLast {
|
||||||
exec {
|
exec {
|
||||||
commandLine cmakeExe, "-G", "Ninja",
|
commandLine cmakeExe, "-G", "Ninja",
|
||||||
@@ -516,6 +528,7 @@ tasks.register("buildOcctArm64") {
|
|||||||
"-DANDROID_PLATFORM=android-21",
|
"-DANDROID_PLATFORM=android-21",
|
||||||
"-DCMAKE_BUILD_TYPE=Release",
|
"-DCMAKE_BUILD_TYPE=Release",
|
||||||
"-DBUILD_LIBRARY_TYPE=Shared",
|
"-DBUILD_LIBRARY_TYPE=Shared",
|
||||||
|
"-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
|
||||||
"-DINSTALL_DIR_LIB=libs/arm64-v8a",
|
"-DINSTALL_DIR_LIB=libs/arm64-v8a",
|
||||||
"-DINSTALL_DIR_INCLUDE=inc",
|
"-DINSTALL_DIR_INCLUDE=inc",
|
||||||
"-DBUILD_DOC_Overview=OFF",
|
"-DBUILD_DOC_Overview=OFF",
|
||||||
@@ -533,7 +546,7 @@ tasks.register("buildOcctArm64") {
|
|||||||
|
|
||||||
tasks.register("buildOcctArmv7") {
|
tasks.register("buildOcctArmv7") {
|
||||||
dependsOn("ensureThirdParty")
|
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 {
|
doLast {
|
||||||
exec {
|
exec {
|
||||||
commandLine cmakeExe, "-G", "Ninja",
|
commandLine cmakeExe, "-G", "Ninja",
|
||||||
@@ -545,6 +558,7 @@ tasks.register("buildOcctArmv7") {
|
|||||||
"-DANDROID_PLATFORM=android-21",
|
"-DANDROID_PLATFORM=android-21",
|
||||||
"-DCMAKE_BUILD_TYPE=Release",
|
"-DCMAKE_BUILD_TYPE=Release",
|
||||||
"-DBUILD_LIBRARY_TYPE=Shared",
|
"-DBUILD_LIBRARY_TYPE=Shared",
|
||||||
|
"-DCMAKE_SHARED_LINKER_FLAGS=${pageSizeLinkerFlags}",
|
||||||
"-DINSTALL_DIR_LIB=libs/armeabi-v7a",
|
"-DINSTALL_DIR_LIB=libs/armeabi-v7a",
|
||||||
"-DINSTALL_DIR_INCLUDE=inc",
|
"-DINSTALL_DIR_INCLUDE=inc",
|
||||||
"-DBUILD_DOC_Overview=OFF",
|
"-DBUILD_DOC_Overview=OFF",
|
||||||
@@ -562,7 +576,7 @@ tasks.register("buildOcctArmv7") {
|
|||||||
|
|
||||||
tasks.register("copyOcctArm64", Copy) {
|
tasks.register("copyOcctArm64", Copy) {
|
||||||
dependsOn("buildOcctArm64")
|
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") {
|
from("${occtDistArm64}/libs/arm64-v8a") {
|
||||||
include "*.so"
|
include "*.so"
|
||||||
}
|
}
|
||||||
@@ -571,7 +585,7 @@ tasks.register("copyOcctArm64", Copy) {
|
|||||||
|
|
||||||
tasks.register("copyOcctArmv7", Copy) {
|
tasks.register("copyOcctArmv7", Copy) {
|
||||||
dependsOn("buildOcctArmv7")
|
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") {
|
from("${occtDistArmv7}/libs/armeabi-v7a") {
|
||||||
include "*.so"
|
include "*.so"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,4 +18,8 @@
|
|||||||
|
|
||||||
# If you keep the line number information, uncomment this to
|
# If you keep the line number information, uncomment this to
|
||||||
# hide the original source file name.
|
# 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.** { *; }
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
android:allowBackup="true"
|
android:allowBackup="true"
|
||||||
android:dataExtractionRules="@xml/data_extraction_rules"
|
android:dataExtractionRules="@xml/data_extraction_rules"
|
||||||
android:fullBackupContent="@xml/backup_rules"
|
android:fullBackupContent="@xml/backup_rules"
|
||||||
android:icon="@mipmap/icon"
|
android:icon="@mipmap/ic_launcher"
|
||||||
android:label="@string/AppName"
|
android:label="@string/AppName"
|
||||||
android:supportsRtl="true"
|
android:supportsRtl="true"
|
||||||
android:theme="@style/Theme.Santoku"
|
android:theme="@style/Theme.Santoku"
|
||||||
@@ -59,7 +59,7 @@
|
|||||||
<activity android:name=".SetupActivity" android:exported="false"/>
|
<activity android:name=".SetupActivity" android:exported="false"/>
|
||||||
<activity android:name=".SafeStartActivity" android:exported="false"/>
|
<activity android:name=".SafeStartActivity" android:exported="false"/>
|
||||||
<provider
|
<provider
|
||||||
android:authorities="com.dark98.santoku.provider"
|
android:authorities="${applicationId}.provider"
|
||||||
android:name="androidx.core.content.FileProvider"
|
android:name="androidx.core.content.FileProvider"
|
||||||
android:grantUriPermissions="true"
|
android:grantUriPermissions="true"
|
||||||
android:exported="false">
|
android:exported="false">
|
||||||
|
|||||||
|
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();
|
Toast.makeText(ctx, R.string.SettingsCloudManageSignUpMissingFields, Toast.LENGTH_SHORT).show();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
CloudAPI api = CloudController.getApiSafe();
|
||||||
|
if (api == null) {
|
||||||
|
Toast.makeText(ctx, R.string.SettingsCloudManageSignUpFailed, Toast.LENGTH_SHORT).show();
|
||||||
|
return;
|
||||||
|
}
|
||||||
signUpInProgress = true;
|
signUpInProgress = true;
|
||||||
bindLoginButton(true);
|
bindLoginButton(true);
|
||||||
CloudAPI.INSTANCE.signup(email, password, displayName, new APICallback<CloudAPI.AuthToken>() {
|
api.signup(email, password, displayName, new APICallback<CloudAPI.AuthToken>() {
|
||||||
@Override
|
@Override
|
||||||
public void onResponse(CloudAPI.AuthToken response) {
|
public void onResponse(CloudAPI.AuthToken response) {
|
||||||
Prefs.setCloudAPIToken(response.bearer);
|
Prefs.setCloudAPIToken(response.bearer);
|
||||||
|
|||||||
@@ -6,7 +6,13 @@ import com.dark98.santoku.BuildConfig;
|
|||||||
public class EventBusTask extends BootTask {
|
public class EventBusTask extends BootTask {
|
||||||
|
|
||||||
public EventBusTask() {
|
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();
|
onWorker();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,6 +38,11 @@ public interface CloudAPI extends APIRunner {
|
|||||||
}
|
}
|
||||||
return headers;
|
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() {
|
private static Runnable loginCheck = new Runnable() {
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
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
|
@Override
|
||||||
public void onResponse(CloudAPI.LoginState response) {
|
public void onResponse(CloudAPI.LoginState response) {
|
||||||
if (response.loggedIn) {
|
if (response.loggedIn) {
|
||||||
@@ -77,6 +84,15 @@ public class CloudController {
|
|||||||
|
|
||||||
private static Gson gson = new Gson();
|
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() {
|
public static void initCached() {
|
||||||
if (Prefs.getCloudAPIToken() != null) {
|
if (Prefs.getCloudAPIToken() != null) {
|
||||||
if (Prefs.getCloudCachedUserInfo() != null) {
|
if (Prefs.getCloudCachedUserInfo() != null) {
|
||||||
@@ -101,7 +117,11 @@ public class CloudController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void loadUserInfo() {
|
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
|
@Override
|
||||||
public void onResponse(CloudAPI.UserInfo response) {
|
public void onResponse(CloudAPI.UserInfo response) {
|
||||||
userInfo = response;
|
userInfo = response;
|
||||||
@@ -145,7 +165,13 @@ public class CloudController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void beginLogin0() {
|
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
|
@Override
|
||||||
public void onResponse(CloudAPI.LoginData response) {
|
public void onResponse(CloudAPI.LoginData response) {
|
||||||
loginSessionId = response.sessionId;
|
loginSessionId = response.sessionId;
|
||||||
@@ -172,7 +198,10 @@ public class CloudController {
|
|||||||
isLoggingIn = false;
|
isLoggingIn = false;
|
||||||
Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
|
Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
|
||||||
if (loginSessionId != null) {
|
if (loginSessionId != null) {
|
||||||
CloudAPI.INSTANCE.loginCancel(loginSessionId, response -> {});
|
CloudAPI api = getApiSafe();
|
||||||
|
if (api != null) {
|
||||||
|
api.loginCancel(loginSessionId, response -> {});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (beginLoginHandle != null && beginLoginHandle.isRunning()) {
|
if (beginLoginHandle != null && beginLoginHandle.isRunning()) {
|
||||||
beginLoginHandle.cancel();
|
beginLoginHandle.cancel();
|
||||||
@@ -184,7 +213,10 @@ public class CloudController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void logout() {
|
public static void logout() {
|
||||||
CloudAPI.INSTANCE.logout(response -> {});
|
CloudAPI api = getApiSafe();
|
||||||
|
if (api != null) {
|
||||||
|
api.logout(response -> {});
|
||||||
|
}
|
||||||
Prefs.setCloudAPIToken(null);
|
Prefs.setCloudAPIToken(null);
|
||||||
userInfo = null;
|
userInfo = null;
|
||||||
Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
|
Santoku.EVENT_BUS.fireEvent(new CloudLoginStateUpdatedEvent());
|
||||||
@@ -204,7 +236,12 @@ public class CloudController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void downloadData(long lastModified) {
|
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
|
@Override
|
||||||
public void onResponse(String response) {
|
public void onResponse(String response) {
|
||||||
IOUtils.IO_POOL.submit(() -> {
|
IOUtils.IO_POOL.submit(() -> {
|
||||||
@@ -251,11 +288,15 @@ public class CloudController {
|
|||||||
if (isSyncInProgress) {
|
if (isSyncInProgress) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
CloudAPI api = getApiSafe();
|
||||||
|
if (api == null) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
long modified = Prefs.getCloudLocalLastModified();
|
long modified = Prefs.getCloudLocalLastModified();
|
||||||
isSyncInProgress = true;
|
isSyncInProgress = true;
|
||||||
Santoku.EVENT_BUS.fireEvent(new NeedSnackbarEvent(SnackbarsLayout.Type.LOADING, R.string.CloudSyncInProgress).tag(CLOUD_SYNC_TAG));
|
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
|
@Override
|
||||||
public void onResponse(CloudAPI.SyncState response) {
|
public void onResponse(CloudAPI.SyncState response) {
|
||||||
if (Santoku.CONFIG == null && response.usedSize != 0) {
|
if (Santoku.CONFIG == null && response.usedSize != 0) {
|
||||||
@@ -324,7 +365,12 @@ public class CloudController {
|
|||||||
bos.close();
|
bos.close();
|
||||||
fis.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
|
@Override
|
||||||
public void onResponse(CloudAPI.SyncState response) {
|
public void onResponse(CloudAPI.SyncState response) {
|
||||||
isSyncInProgress = false;
|
isSyncInProgress = false;
|
||||||
|
|||||||
@@ -81,7 +81,7 @@ public class ConfigObject implements ProfileListFragment.ProfileListItem {
|
|||||||
|
|
||||||
public String serialize() {
|
public String serialize() {
|
||||||
StringBuilder sb = new StringBuilder();
|
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()) {
|
for (Map.Entry<String, String> en : values.entrySet()) {
|
||||||
String value = en.getValue();
|
String value = en.getValue();
|
||||||
if (value != null) {
|
if (value != null) {
|
||||||
|
|||||||
@@ -214,7 +214,7 @@ public class Slic3rConfigWrapper {
|
|||||||
|
|
||||||
public String serialize() {
|
public String serialize() {
|
||||||
StringBuilder sb = new StringBuilder();
|
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, "printer", printerConfigs);
|
||||||
serializeList(sb, "print", printConfigs);
|
serializeList(sb, "print", printConfigs);
|
||||||
serializeList(sb, "filament", filamentConfigs);
|
serializeList(sb, "filament", filamentConfigs);
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ public class Slic3rLocalization {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static String replaceStr(String val) {
|
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) {
|
public static String getString(String key) {
|
||||||
|
|||||||
@@ -553,7 +553,7 @@ public:
|
|||||||
traits.intersection(query, singleton_data());
|
traits.intersection(query, singleton_data());
|
||||||
break;
|
break;
|
||||||
default: // if(size() >= 2)
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -221,7 +221,7 @@ public:
|
|||||||
|
|
||||||
operator bool_type() const
|
operator bool_type() const
|
||||||
{
|
{
|
||||||
return (! (this->base() == nullptr)) ?
|
return (g != nullptr) ?
|
||||||
&Halfedge_around_source_iterator::this_type_does_not_support_comparisons : 0;
|
&Halfedge_around_source_iterator::this_type_does_not_support_comparisons : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -321,7 +321,7 @@ public:
|
|||||||
|
|
||||||
operator bool_type() const
|
operator bool_type() const
|
||||||
{
|
{
|
||||||
return (! (this->base() == nullptr)) ?
|
return (g != nullptr) ?
|
||||||
&Halfedge_around_target_iterator::this_type_does_not_support_comparisons : 0;
|
&Halfedge_around_target_iterator::this_type_does_not_support_comparisons : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -420,7 +420,7 @@ public:
|
|||||||
|
|
||||||
operator bool_type() const
|
operator bool_type() const
|
||||||
{
|
{
|
||||||
return (! (this->base() == nullptr)) ?
|
return (g != nullptr) ?
|
||||||
&Halfedge_around_face_iterator::this_type_does_not_support_comparisons : 0;
|
&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>
|
template<class T, class ArrItem>
|
||||||
void set_data(ArrItem &itm, const std::string &key, T &&data)
|
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>;
|
template<class T> constexpr bool IsReadWritableDataStore = IsDataStore<T> && IsWritableDataStore<T>;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@
|
|||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
#include <iterator>
|
#include <iterator>
|
||||||
#include <list>
|
#include <list>
|
||||||
|
#include <functional>
|
||||||
|
|
||||||
#include "linalg.h"
|
#include "linalg.h"
|
||||||
|
|
||||||
@@ -36,7 +37,7 @@ public:
|
|||||||
friend ostream & operator << (ostream &, RCTrial) ;
|
friend ostream & operator << (ostream &, RCTrial) ;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TrialGT : public unary_function<Trial, bool>
|
class TrialGT
|
||||||
// Predicate for Trial (needed for remove_if)
|
// Predicate for Trial (needed for remove_if)
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|||||||
@@ -327,7 +327,7 @@ private:
|
|||||||
void operator()(const NodeRange& range) const
|
void operator()(const NodeRange& range) const
|
||||||
{
|
{
|
||||||
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||||
OpT::template eval(mNodeOp, it);
|
OpT::eval(mNodeOp, it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const NodeOp mNodeOp;
|
const NodeOp mNodeOp;
|
||||||
@@ -347,7 +347,7 @@ private:
|
|||||||
void operator()(const NodeRange& range) const
|
void operator()(const NodeRange& range) const
|
||||||
{
|
{
|
||||||
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||||
OpT::template eval(mNodeOp, it);
|
OpT::eval(mNodeOp, it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
const NodeOp& mNodeOp;
|
const NodeOp& mNodeOp;
|
||||||
@@ -372,7 +372,7 @@ private:
|
|||||||
void operator()(const NodeRange& range)
|
void operator()(const NodeRange& range)
|
||||||
{
|
{
|
||||||
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
for (typename NodeRange::Iterator it = range.begin(); it; ++it) {
|
||||||
OpT::template eval(*mNodeOp, it);
|
OpT::eval(*mNodeOp, it);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
void join(const NodeReducer& other)
|
void join(const NodeReducer& other)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "gzguts.h"
|
#include "gzguts.h"
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
#if defined(_WIN32) && !defined(__BORLANDC__)
|
#if defined(_WIN32) && !defined(__BORLANDC__)
|
||||||
# define LSEEK _lseeki64
|
# define LSEEK _lseeki64
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "gzguts.h"
|
#include "gzguts.h"
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
/* Use read() to load a buffer -- return -1 on error, otherwise 0. Read from
|
/* 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.
|
state->fd, and update state->eof, state->err, and state->msg as appropriate.
|
||||||
|
|||||||
@@ -4,6 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "gzguts.h"
|
#include "gzguts.h"
|
||||||
|
#include <unistd.h>
|
||||||
|
|
||||||
/* Initialize state for writing a gzip file. Mark initialization by setting
|
/* 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
|
state->size to non-zero. Return -1 on a memory allocation failure, or 0 on
|
||||||
|
|||||||
@@ -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>
|
||||||
|
Before Width: | Height: | Size: 4.6 KiB |
|
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>
|
||||||
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 3.1 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
@@ -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>
|
|
||||||
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 4.3 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 6.9 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 113 KiB |
@@ -140,7 +140,7 @@
|
|||||||
<string name="IntroConfigured">Похоже всё настроено.\nПросто нажмите завершить!</string>
|
<string name="IntroConfigured">Похоже всё настроено.\nПросто нажмите завершить!</string>
|
||||||
<string name="IntroFinish">Завершить</string>
|
<string name="IntroFinish">Завершить</string>
|
||||||
<string name="IntroEarlyAccess">Ранний доступ</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="SettingsResetToDefault">Сбросить настройки по-умолчанию</string>
|
||||||
<string name="SettingsResetToDefaultTitle">Вы уверены?</string>
|
<string name="SettingsResetToDefaultTitle">Вы уверены?</string>
|
||||||
<string name="SettingsResetToDefaultDescription">Это действие не может быть отменено.</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>
|
||||||
@@ -140,7 +140,7 @@
|
|||||||
<string name="IntroConfigured">All seems to be configured.\nJust tap finish!</string>
|
<string name="IntroConfigured">All seems to be configured.\nJust tap finish!</string>
|
||||||
<string name="IntroFinish">Finish</string>
|
<string name="IntroFinish">Finish</string>
|
||||||
<string name="IntroEarlyAccess">Early access</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="SettingsResetToDefault">Reset to defaults</string>
|
||||||
<string name="SettingsResetToDefaultTitle">Are you sure?</string>
|
<string name="SettingsResetToDefaultTitle">Are you sure?</string>
|
||||||
<string name="SettingsResetToDefaultDescription">This action can not be undone.</string>
|
<string name="SettingsResetToDefaultDescription">This action can not be undone.</string>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||||
<style name="Base.Theme.Santoku" parent="Theme.Material3.Light.NoActionBar">
|
<style name="Base.Theme.Santoku" parent="Theme.Material3.Light.NoActionBar">
|
||||||
<item name="android:windowBackground">#FFF</item>
|
<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:windowSplashScreenIconBackgroundColor" tools:targetApi="s">#3A3A3A</item>
|
||||||
<item name="android:enforceNavigationBarContrast" tools:targetApi="q">false</item>
|
<item name="android:enforceNavigationBarContrast" tools:targetApi="q">false</item>
|
||||||
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
|
<item name="android:forceDarkAllowed" tools:targetApi="q">false</item>
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ if (hasSubmodules && missingSubmodule) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
rootProject.name = "Slice Beam"
|
rootProject.name = "Santoku"
|
||||||
include ':app', ':eventbus', ':eventbus_api', ':eventbus_processor', ':sapil'
|
include ':app', ':eventbus', ':eventbus_api', ':eventbus_processor', ':sapil'
|
||||||
|
|
||||||
project(':eventbus').projectDir = file('EventBus/eventbus')
|
project(':eventbus').projectDir = file('EventBus/eventbus')
|
||||||
|
|||||||