Commit 2c2f485594 for strongswan.org
commit 2c2f485594f11aea6d428bf8d0fb69ac7ff817a1
Author: Tobias Brunner <tobias@strongswan.org>
Date: Thu Oct 22 11:27:55 2026 +0200
android: Make build work with non-constant resource IDs
diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/LogActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/LogActivity.java
index c7d052ecdd..8ba3cb478e 100644
--- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/LogActivity.java
+++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/LogActivity.java
@@ -56,36 +56,37 @@ public class LogActivity extends AppCompatActivity
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
- switch (item.getItemId())
+ if (item.getItemId() == android.R.id.home)
{
- case android.R.id.home:
- finish();
+ finish();
+ return true;
+ }
+ else if (item.getItemId() == R.id.menu_send_log)
+ {
+ File logfile = new File(getFilesDir(), CharonVpnService.LOG_FILE);
+ if (!logfile.exists() || logfile.length() == 0)
+ {
+ Toast.makeText(this, getString(R.string.empty_log), Toast.LENGTH_SHORT).show();
return true;
- case R.id.menu_send_log:
- File logfile = new File(getFilesDir(), CharonVpnService.LOG_FILE);
- if (!logfile.exists() || logfile.length() == 0)
- {
- Toast.makeText(this, getString(R.string.empty_log), Toast.LENGTH_SHORT).show();
- return true;
- }
+ }
- String version = "";
- try
- {
- version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
- }
- catch (NameNotFoundException e)
- {
- e.printStackTrace();
- }
+ String version = "";
+ try
+ {
+ version = getPackageManager().getPackageInfo(getPackageName(), 0).versionName;
+ }
+ catch (NameNotFoundException e)
+ {
+ e.printStackTrace();
+ }
- Intent intent = new Intent(Intent.ACTION_SEND);
- intent.putExtra(Intent.EXTRA_EMAIL, new String[]{MainActivity.CONTACT_EMAIL});
- intent.putExtra(Intent.EXTRA_SUBJECT, String.format(getString(R.string.log_mail_subject), version));
- intent.setType("text/plain");
- intent.putExtra(Intent.EXTRA_STREAM, LogContentProvider.createContentUri());
- startActivity(Intent.createChooser(intent, getString(R.string.send_log)));
- return true;
+ Intent intent = new Intent(Intent.ACTION_SEND);
+ intent.putExtra(Intent.EXTRA_EMAIL, new String[]{MainActivity.CONTACT_EMAIL});
+ intent.putExtra(Intent.EXTRA_SUBJECT, String.format(getString(R.string.log_mail_subject), version));
+ intent.setType("text/plain");
+ intent.putExtra(Intent.EXTRA_STREAM, LogContentProvider.createContentUri());
+ startActivity(Intent.createChooser(intent, getString(R.string.send_log)));
+ return true;
}
return super.onOptionsItemSelected(item);
}
diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java
index a1e647265c..74355a33e9 100644
--- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java
+++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/MainActivity.java
@@ -107,30 +107,35 @@ public class MainActivity extends AppCompatActivity implements OnVpnProfileSelec
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
- switch (item.getItemId())
+ if (item.getItemId() == R.id.menu_import_profile)
{
- case R.id.menu_import_profile:
- Intent intent = new Intent(this, VpnProfileImportActivity.class);
- startActivity(intent);
- return true;
- case R.id.menu_manage_certs:
- Intent certIntent = new Intent(this, TrustedCertificatesActivity.class);
- startActivity(certIntent);
- return true;
- case R.id.menu_crl_cache:
- clearCRLs();
- return true;
- case R.id.menu_show_log:
- Intent logIntent = new Intent(this, LogActivity.class);
- startActivity(logIntent);
- return true;
- case R.id.menu_settings:
- Intent settingsIntent = new Intent(this, SettingsActivity.class);
- startActivity(settingsIntent);
- return true;
- default:
- return super.onOptionsItemSelected(item);
+ Intent intent = new Intent(this, VpnProfileImportActivity.class);
+ startActivity(intent);
}
+ else if (item.getItemId() == R.id.menu_manage_certs)
+ {
+ Intent certIntent = new Intent(this, TrustedCertificatesActivity.class);
+ startActivity(certIntent);
+ }
+ else if (item.getItemId() == R.id.menu_crl_cache)
+ {
+ clearCRLs();
+ }
+ else if (item.getItemId() == R.id.menu_show_log)
+ {
+ Intent logIntent = new Intent(this, LogActivity.class);
+ startActivity(logIntent);
+ }
+ else if (item.getItemId() == R.id.menu_settings)
+ {
+ Intent settingsIntent = new Intent(this, SettingsActivity.class);
+ startActivity(settingsIntent);
+ }
+ else
+ {
+ return super.onOptionsItemSelected(item);
+ }
+ return true;
}
@Override
diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java
index a6fd0bc09c..1c564f7b9a 100644
--- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java
+++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/TrustedCertificatesActivity.java
@@ -114,20 +114,24 @@ public class TrustedCertificatesActivity extends AppCompatActivity implements Tr
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
- switch (item.getItemId())
+ if (item.getItemId() == android.R.id.home)
{
- case android.R.id.home:
- finish();
- return true;
- case R.id.menu_reload_certs:
- reloadCertificates();
- return true;
- case R.id.menu_import_certificate:
- Intent intent = new Intent(this, TrustedCertificateImportActivity.class);
- mImportCertificate.launch(intent);
- return true;
+ finish();
+ }
+ else if (item.getItemId() == R.id.menu_reload_certs)
+ {
+ reloadCertificates();
}
- return super.onOptionsItemSelected(item);
+ else if (item.getItemId() == R.id.menu_import_certificate)
+ {
+ Intent intent = new Intent(this, TrustedCertificateImportActivity.class);
+ mImportCertificate.launch(intent);
+ }
+ else
+ {
+ return super.onOptionsItemSelected(item);
+ }
+ return true;
}
@Override
diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileDetailActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileDetailActivity.java
index aeef179ce5..285e67a952 100644
--- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileDetailActivity.java
+++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileDetailActivity.java
@@ -449,18 +449,20 @@ public class VpnProfileDetailActivity extends AppCompatActivity
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
- switch (item.getItemId())
+ if (item.getItemId() == android.R.id.home ||
+ item.getItemId() == R.id.menu_cancel)
{
- case android.R.id.home:
- case R.id.menu_cancel:
- finish();
- return true;
- case R.id.menu_accept:
- saveProfile();
- return true;
- default:
- return super.onOptionsItemSelected(item);
+ finish();
+ }
+ else if (item.getItemId() == R.id.menu_accept)
+ {
+ saveProfile();
}
+ else
+ {
+ return super.onOptionsItemSelected(item);
+ }
+ return true;
}
/**
diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileImportActivity.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileImportActivity.java
index f10ce0e14b..c4dc92bc63 100644
--- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileImportActivity.java
+++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileImportActivity.java
@@ -313,17 +313,19 @@ public class VpnProfileImportActivity extends AppCompatActivity
@Override
public boolean onOptionsItemSelected(MenuItem item)
{
- switch (item.getItemId())
+ if (item.getItemId() == android.R.id.home)
{
- case android.R.id.home:
- finish();
- return true;
- case R.id.menu_accept:
- saveProfile();
- return true;
- default:
- return super.onOptionsItemSelected(item);
+ finish();
+ }
+ else if (item.getItemId() == R.id.menu_accept)
+ {
+ saveProfile();
}
+ else
+ {
+ return super.onOptionsItemSelected(item);
+ }
+ return true;
}
private void loadProfile(Uri uri)
diff --git a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileListFragment.java b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileListFragment.java
index e845cc6598..23c2bdbeb2 100644
--- a/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileListFragment.java
+++ b/src/frontends/android/app/src/main/java/org/strongswan/android/ui/VpnProfileListFragment.java
@@ -310,58 +310,54 @@ public class VpnProfileListFragment extends Fragment implements MenuProvider
@Override
public boolean onActionItemClicked(ActionMode mode, MenuItem item)
{
- switch (item.getItemId())
+ if (item.getItemId() == R.id.edit_profile)
{
- case R.id.edit_profile:
+ int position = mSelected.iterator().next();
+ VpnProfile profile = (VpnProfile)mListView.getItemAtPosition(position);
+ Intent connectionIntent = new Intent(getActivity(), VpnProfileDetailActivity.class);
+ connectionIntent.putExtra(VpnProfileDataSource.KEY_UUID, profile.getUUID().toString());
+ startActivity(connectionIntent);
+ }
+ else if (item.getItemId() == R.id.copy_profile)
+ {
+ int position = mSelected.iterator().next();
+ VpnProfile profile = (VpnProfile)mListView.getItemAtPosition(position);
+ profile = profile.clone();
+ profile.setUUID(UUID.randomUUID());
+ profile.setName(String.format(getString(R.string.copied_name), profile.getName()));
+ mDataSource.insertProfile(profile);
+
+ Intent intent = new Intent(Constants.VPN_PROFILES_CHANGED);
+ intent.putExtra(Constants.VPN_PROFILES_SINGLE, profile.getUUID().toString());
+ LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
+
+ Intent connectionIntent = new Intent(getActivity(), VpnProfileDetailActivity.class);
+ connectionIntent.putExtra(VpnProfileDataSource.KEY_UUID, profile.getUUID().toString());
+ startActivity(connectionIntent);
+ }
+ else if (item.getItemId() == R.id.delete_profile)
+ {
+ ArrayList<VpnProfile> profiles = new ArrayList<>();
+ for (int position : mSelected)
{
- int position = mSelected.iterator().next();
- VpnProfile profile = (VpnProfile)mListView.getItemAtPosition(position);
- Intent connectionIntent = new Intent(getActivity(), VpnProfileDetailActivity.class);
- connectionIntent.putExtra(VpnProfileDataSource.KEY_UUID, profile.getUUID().toString());
- startActivity(connectionIntent);
- break;
+ profiles.add((VpnProfile)mListView.getItemAtPosition(position));
}
- case R.id.copy_profile:
+ String[] uuids = new String[profiles.size()];
+ for (int i = 0; i < profiles.size(); i++)
{
- int position = mSelected.iterator().next();
- VpnProfile profile = (VpnProfile)mListView.getItemAtPosition(position);
- profile = profile.clone();
- profile.setUUID(UUID.randomUUID());
- profile.setName(String.format(getString(R.string.copied_name), profile.getName()));
- mDataSource.insertProfile(profile);
-
- Intent intent = new Intent(Constants.VPN_PROFILES_CHANGED);
- intent.putExtra(Constants.VPN_PROFILES_SINGLE, profile.getUUID().toString());
- LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
-
- Intent connectionIntent = new Intent(getActivity(), VpnProfileDetailActivity.class);
- connectionIntent.putExtra(VpnProfileDataSource.KEY_UUID, profile.getUUID().toString());
- startActivity(connectionIntent);
- break;
+ VpnProfile profile = profiles.get(i);
+ uuids[i] = profile.getUUID().toString();
+ mDataSource.deleteVpnProfile(profile);
}
- case R.id.delete_profile:
- {
- ArrayList<VpnProfile> profiles = new ArrayList<>();
- for (int position : mSelected)
- {
- profiles.add((VpnProfile)mListView.getItemAtPosition(position));
- }
- String[] uuids = new String[profiles.size()];
- for (int i = 0; i < profiles.size(); i++)
- {
- VpnProfile profile = profiles.get(i);
- uuids[i] = profile.getUUID().toString();
- mDataSource.deleteVpnProfile(profile);
- }
- Intent intent = new Intent(Constants.VPN_PROFILES_CHANGED);
- intent.putExtra(Constants.VPN_PROFILES_MULTIPLE, uuids);
- LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
- Toast.makeText(VpnProfileListFragment.this.getActivity(),
- R.string.profiles_deleted, Toast.LENGTH_SHORT).show();
- break;
- }
- default:
- return false;
+ Intent intent = new Intent(Constants.VPN_PROFILES_CHANGED);
+ intent.putExtra(Constants.VPN_PROFILES_MULTIPLE, uuids);
+ LocalBroadcastManager.getInstance(getActivity()).sendBroadcast(intent);
+ Toast.makeText(VpnProfileListFragment.this.getActivity(),
+ R.string.profiles_deleted, Toast.LENGTH_SHORT).show();
+ }
+ else
+ {
+ return false;
}
mode.finish();
return true;
diff --git a/src/frontends/android/gradle.properties b/src/frontends/android/gradle.properties
index bf5ebf57e7..dd1c0d5138 100644
--- a/src/frontends/android/gradle.properties
+++ b/src/frontends/android/gradle.properties
@@ -1,9 +1,5 @@
-android.defaults.buildfeatures.resvalues=true
-android.dependency.excludeLibraryComponentsFromConstraints=true
-android.dependency.useConstraints=true
-android.enableAppCompileTimeRClass=false
+android.dependency.useConstraints=false
android.enableJetifier=false
-android.nonFinalResIds=false
android.nonTransitiveRClass=false
android.r8.strictFullModeForKeepRules=false
android.uniquePackageNames=false