From 11cc310f168beb21616e3d0d76174c3db31a5644 Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Sun, 28 Sep 2025 09:18:11 +0800 Subject: [PATCH 1/2] chore: fix android test. --- .../javastellarsdkdemoapp/MainActivity.kt | 102 ++++++++++++++---- 1 file changed, 83 insertions(+), 19 deletions(-) diff --git a/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt index 9cab3b2..00fa1bf 100644 --- a/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt +++ b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt @@ -135,25 +135,96 @@ fun MainPreview() { } } -private fun testSDK(): String { - return try { - // send request to horizon server - val server = Server("https://horizon.stellar.org") - val horizonResp = server.root().execute() - if (horizonResp == null || horizonResp.networkPassphrase != Network.PUBLIC.networkPassphrase) { - throw Exception("Query Horizon failed") +class MainActivity : ComponentActivity() { + private lateinit var sdkTestViewModel: SdkTestViewModel + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + sdkTestViewModel = ViewModelProvider(this).get(SdkTestViewModel::class.java) + + setContent { + JavaStellarSDKDemoAppTheme { + Surface( + modifier = Modifier.fillMaxSize(), + color = MaterialTheme.colorScheme.background + ) { + Main(sdkTestViewModel) + } + } } + } +} - // send request to Soroban RPC server - val sorobanServer = SorobanServer("https://soroban-testnet.stellar.org:443") - if (sorobanServer.network.passphrase != Network.TESTNET.networkPassphrase) { - throw Exception("Query Soroban Server failed") +class SdkTestViewModel : ViewModel() { + private val _result = mutableStateOf(null) + val result: String? get() = _result.value + + fun runSDKTest() { + viewModelScope.launch { + _result.value = withContext(Dispatchers.IO) { + testSDK() + } } + } +} - // Test Federation +@Composable +fun Main(sdkTestViewModel: SdkTestViewModel, modifier: Modifier = Modifier) { + Column( + modifier = modifier.fillMaxSize(), + verticalArrangement = Arrangement.Center, + horizontalAlignment = Alignment.CenterHorizontally + ) { + Button( + onClick = { sdkTestViewModel.runSDKTest() } + ) { + Text(text = "Run Test") + } + + Spacer(modifier = Modifier.height(16.dp)) + + Text( + text = sdkTestViewModel.result ?: "Not Run", + modifier = Modifier.padding(horizontal = 16.dp) + ) + } +} + +@Preview(showBackground = true) +@Composable +fun MainPreview() { + JavaStellarSDKDemoAppTheme { + val sdkTestViewModel = SdkTestViewModel() + Main(sdkTestViewModel) + } +} + +private fun testSDK(): String { + return try { // Not enabled if Android SDK version is less than 26, // see https://stackoverflow.com/questions/64844311/certpathvalidatorexception-connecting-to-a-lets-encrypt-host-on-android-m-or-ea if (Build.VERSION.SDK_INT >= 26) { + // send request to horizon server + val server = Server("https://horizon.stellar.org") + val horizonResp = server.root().execute() + if (horizonResp == null || horizonResp.networkPassphrase != Network.PUBLIC.networkPassphrase) { + throw Exception("Query Horizon failed") + } + + // send request to Soroban RPC server + val sorobanServer = SorobanServer("https://soroban-testnet.stellar.org:443") + if (sorobanServer.network.passphrase != Network.TESTNET.networkPassphrase) { + throw Exception("Query Soroban Server failed") + } + + val xdr = + server.transactions().limit(1).includeFailed(false).execute().records.get(0).envelopeXdr + val tx: Transaction = Transaction.fromEnvelopeXdr(xdr, Network.PUBLIC) as Transaction + val resp = server.submitTransaction(tx) + Log.d("MainActivity", "testSDK resp: $resp") + + // Test Federation val fedResp = Federation().resolveAddress("example*lobstr.co") if (fedResp == null || fedResp.accountId == null) { throw Exception("Query Federation failed") @@ -280,13 +351,6 @@ private fun testSDK(): String { .rootInvocation(invocation) .build() Auth.authorizeEntry(entry.toXdrBase64(), signer, validUntilLedgerSeq, network) - - // send real transaction - val xdr = - server.transactions().limit(1).includeFailed(false).execute().records.get(0).envelopeXdr - val tx: Transaction = Transaction.fromEnvelopeXdr(xdr, Network.PUBLIC) as Transaction - val resp = server.submitTransaction(tx) - Log.d("MainActivity", "testSDK resp: $resp") "SUCCESS" } catch (e: Exception) { Log.e("MainActivity", "testSDK ERROR", e) From f019d802cee68f22163dc1ecbdd13bd45b8831bd Mon Sep 17 00:00:00 2001 From: Jun Luo <4catcode@gmail.com> Date: Sun, 28 Sep 2025 09:20:08 +0800 Subject: [PATCH 2/2] chore: fix android test. --- .../javastellarsdkdemoapp/MainActivity.kt | 65 ------------------- 1 file changed, 65 deletions(-) diff --git a/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt index 00fa1bf..fe3b2a3 100644 --- a/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt +++ b/android_test/app/src/main/java/org/stellar/javastellarsdkdemoapp/MainActivity.kt @@ -70,71 +70,6 @@ import org.stellar.sdk.xdr.Uint32 import org.stellar.sdk.xdr.XdrUnsignedInteger -class MainActivity : ComponentActivity() { - private lateinit var sdkTestViewModel: SdkTestViewModel - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - - sdkTestViewModel = ViewModelProvider(this).get(SdkTestViewModel::class.java) - - setContent { - JavaStellarSDKDemoAppTheme { - Surface( - modifier = Modifier.fillMaxSize(), - color = MaterialTheme.colorScheme.background - ) { - Main(sdkTestViewModel) - } - } - } - } -} - -class SdkTestViewModel : ViewModel() { - private val _result = mutableStateOf(null) - val result: String? get() = _result.value - - fun runSDKTest() { - viewModelScope.launch { - _result.value = withContext(Dispatchers.IO) { - testSDK() - } - } - } -} - -@Composable -fun Main(sdkTestViewModel: SdkTestViewModel, modifier: Modifier = Modifier) { - Column( - modifier = modifier.fillMaxSize(), - verticalArrangement = Arrangement.Center, - horizontalAlignment = Alignment.CenterHorizontally - ) { - Button( - onClick = { sdkTestViewModel.runSDKTest() } - ) { - Text(text = "Run Test") - } - - Spacer(modifier = Modifier.height(16.dp)) - - Text( - text = sdkTestViewModel.result ?: "Not Run", - modifier = Modifier.padding(horizontal = 16.dp) - ) - } -} - -@Preview(showBackground = true) -@Composable -fun MainPreview() { - JavaStellarSDKDemoAppTheme { - val sdkTestViewModel = SdkTestViewModel() - Main(sdkTestViewModel) - } -} - class MainActivity : ComponentActivity() { private lateinit var sdkTestViewModel: SdkTestViewModel