1
0
Fork 0
mirror of https://github.com/syncthing/syncthing-android.git synced 2024-11-22 12:21:15 +00:00

Compile and target SDK version 31, increase min Sdk to 21 (#1864)

The upgraded compile SDK requires an upgrade of gradle, which introduces a
build error with api lvl <21:
   > Error while processing [...]/app/src/main/res/drawable/ic_close_24dp.xml :
     Invalid color value ?attr/colorControlNormal
Explanation: https://stackoverflow.com/a/49501629

Also minor NDK update
This commit is contained in:
Simon Frei 2022-11-27 20:27:54 +01:00 committed by GitHub
parent 21b00edfcc
commit 2942072594
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 24 additions and 22 deletions

View file

@ -26,8 +26,8 @@ dependencies {
android { android {
// Changes to these values need to be reflected in `../docker/Dockerfile` // Changes to these values need to be reflected in `../docker/Dockerfile`
compileSdkVersion 30 compileSdkVersion 31
buildToolsVersion '30.0.0' buildToolsVersion '31.0.0'
ndkVersion = "${ndkVersionShared}" ndkVersion = "${ndkVersionShared}"
buildTypes.debug.applicationIdSuffix ".debug" buildTypes.debug.applicationIdSuffix ".debug"
@ -40,8 +40,8 @@ android {
} }
defaultConfig { defaultConfig {
applicationId "com.nutomic.syncthingandroid" applicationId "com.nutomic.syncthingandroid"
minSdkVersion 16 minSdkVersion 21
targetSdkVersion 30 targetSdkVersion 31
versionCode 4327 versionCode 4327
versionName "1.22.2-rc.3" versionName "1.22.2-rc.3"
testApplicationId 'com.nutomic.syncthingandroid.test' testApplicationId 'com.nutomic.syncthingandroid.test'

View file

@ -57,6 +57,15 @@ public class RestApi {
private static final String TAG = "RestApi"; private static final String TAG = "RestApi";
private static final SimpleDateFormat dateFormat;
static {
if (android.os.Build.VERSION.SDK_INT < 24) {
dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
} else {
dateFormat = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX");
}
}
/** /**
* Compares folders by labels, uses the folder ID as fallback if the label is empty * Compares folders by labels, uses the folder ID as fallback if the label is empty
*/ */
@ -276,7 +285,7 @@ public class RestApi {
remoteIgnoredDevice.deviceID = deviceId; remoteIgnoredDevice.deviceID = deviceId;
remoteIgnoredDevice.address = deviceAddress; remoteIgnoredDevice.address = deviceAddress;
remoteIgnoredDevice.name = deviceName; remoteIgnoredDevice.name = deviceName;
remoteIgnoredDevice.time = dateString(new Date()); remoteIgnoredDevice.time = dateFormat.format(new Date());
mConfig.remoteIgnoredDevices.add(remoteIgnoredDevice); mConfig.remoteIgnoredDevices.add(remoteIgnoredDevice);
sendConfig(); sendConfig();
Log.d(TAG, "Ignored device [" + deviceId + "]"); Log.d(TAG, "Ignored device [" + deviceId + "]");
@ -310,7 +319,7 @@ public class RestApi {
IgnoredFolder ignoredFolder = new IgnoredFolder(); IgnoredFolder ignoredFolder = new IgnoredFolder();
ignoredFolder.id = folderId; ignoredFolder.id = folderId;
ignoredFolder.label = folderLabel; ignoredFolder.label = folderLabel;
ignoredFolder.time = dateString(new Date()); ignoredFolder.time = dateFormat.format(new Date());
device.ignoredFolders.add(ignoredFolder); device.ignoredFolders.add(ignoredFolder);
if (BuildConfig.DEBUG) { if (BuildConfig.DEBUG) {
Log.v(TAG, "device.ignoredFolders = " + new Gson().toJson(device.ignoredFolders)); Log.v(TAG, "device.ignoredFolders = " + new Gson().toJson(device.ignoredFolders));
@ -718,8 +727,4 @@ public class RestApi {
} }
} }
private String dateString(Date date) {
return new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssXXX").format(date);
}
} }

View file

@ -4,14 +4,14 @@ buildscript {
ext { ext {
// Cannot be called "ndkVersion" as that leads to naming collision // Cannot be called "ndkVersion" as that leads to naming collision
// Changes to this value must be reflected in `./docker/Dockerfile` // Changes to this value must be reflected in `./docker/Dockerfile`
ndkVersionShared = '23.0.7599858' ndkVersionShared = '23.2.8568313'
} }
repositories { repositories {
google() google()
jcenter() jcenter()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:4.0.1' classpath 'com.android.tools.build:gradle:7.3.1'
classpath 'com.github.ben-manes:gradle-versions-plugin:0.36.0' classpath 'com.github.ben-manes:gradle-versions-plugin:0.36.0'
// NOTE: Do not place your application dependencies here; they belong // NOTE: Do not place your application dependencies here; they belong

View file

@ -2,9 +2,9 @@ FROM openjdk:11
ENV GO_VERSION 1.19.3 ENV GO_VERSION 1.19.3
ARG ANDROID_SDK_VERSION=7583922 # Can be found scrolling down on this page:
ARG ANDROID_SDK_FILENAME=commandlinetools-linux-${ANDROID_SDK_VERSION}_latest.zip # https://developer.android.com/studio/index.html#command-tools
ARG ANDROID_SDK_FILENAME=commandlinetools-linux-9123335_latest.zip
WORKDIR /opt WORKDIR /opt
# Install Go # Install Go
@ -26,11 +26,11 @@ ARG SDKMANAGER="${ANDROID_HOME}/cmdline-tools/bin/sdkmanager --sdk_root=${ANDROI
# Accept the SDK license, as we can't install packages otherwise # Accept the SDK license, as we can't install packages otherwise
RUN yes | $SDKMANAGER --licenses > /dev/null RUN yes | $SDKMANAGER --licenses > /dev/null
# NDK version (r22 fails to build) # NDK version
ENV NDK_VERSION 23.0.7599858 ENV NDK_VERSION 23.2.8568313
# Install other android packages, including NDK # Install other android packages, including NDK
RUN $SDKMANAGER tools platform-tools "build-tools;29.0.3" "platforms;android-29" "extras;android;m2repository" "ndk;${NDK_VERSION}" RUN $SDKMANAGER tools platform-tools "build-tools;31.0.0" "platforms;android-31" "extras;android;m2repository" "ndk;${NDK_VERSION}"
# Accept licenses of newly installed packages # Accept licenses of newly installed packages
RUN yes | $SDKMANAGER --licenses RUN yes | $SDKMANAGER --licenses

View file

@ -3,4 +3,4 @@ distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-6.9-bin.zip distributionUrl=https\://services.gradle.org/distributions/gradle-7.4-bin.zip

View file

@ -25,7 +25,6 @@ BUILD_TARGETS = [
'goarch': 'arm64', 'goarch': 'arm64',
'jni_dir': 'arm64-v8a', 'jni_dir': 'arm64-v8a',
'cc': 'aarch64-linux-android21-clang', 'cc': 'aarch64-linux-android21-clang',
'min_sdk': 21,
}, },
{ {
'arch': 'x86', 'arch': 'x86',
@ -38,7 +37,6 @@ BUILD_TARGETS = [
'goarch': 'amd64', 'goarch': 'amd64',
'jni_dir': 'x86_64', 'jni_dir': 'x86_64',
'cc': 'x86_64-linux-android21-clang', 'cc': 'x86_64-linux-android21-clang',
'min_sdk': 21,
} }
] ]
@ -88,7 +86,6 @@ subprocess.check_call([
]) ])
for target in BUILD_TARGETS: for target in BUILD_TARGETS:
target_min_sdk = str(target.get('min_sdk', min_sdk))
print('Building syncthing for', target['arch']) print('Building syncthing for', target['arch'])