From 1df30b9db3036832598615a48a6e772a50abf49e Mon Sep 17 00:00:00 2001 From: Dragan Milic Date: Tue, 26 Nov 2024 22:46:07 +0100 Subject: [PATCH 1/6] WIP --- .github/workflows/build-aar.yaml | 31 +++++++++++++++++++ app/app/build.gradle | 53 ++++++++++++++++---------------- app/settings.gradle | 22 ++++++++++--- 3 files changed, 76 insertions(+), 30 deletions(-) create mode 100644 .github/workflows/build-aar.yaml diff --git a/.github/workflows/build-aar.yaml b/.github/workflows/build-aar.yaml new file mode 100644 index 000000000..98e130d3e --- /dev/null +++ b/.github/workflows/build-aar.yaml @@ -0,0 +1,31 @@ +name: Build APK + +on: + workflow_dispatch: # Allows manual triggering + pull_request: + branches: + - main + +jobs: + build_aar: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: "21" + distribution: "zulu" + + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + + - name: Build Release apk + working-directory: app + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + # env: + # RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }} + # RELEASE_KEYSTORE_ALIAS: ${{ secrets.RELEASE_KEYSTORE_ALIAS }} + # RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} + run: ./gradlew assembleRelease --stacktrace diff --git a/app/app/build.gradle b/app/app/build.gradle index 0955c4b34..4d7202778 100644 --- a/app/app/build.gradle +++ b/app/app/build.gradle @@ -41,31 +41,32 @@ ext.envSecret = { envName -> } android { - ext.appVersion = { -> - def out = new ByteArrayOutputStream() - def osName = '' - def osArch = '' - switch (System.getProperty('os.name')) { - case 'Linux': - osName = 'linux' - break - case 'Mac OS X': - osName = 'darwin' - break - } - switch (System.getProperty('os.arch')) { - case 'amd64': - osArch = 'amd64' - case 'aarch64': - osArch = 'arm64' - break - } - exec { - executable "${bringyourHomeDir}/warp/warpctl/build/${osName}/${osArch}/warpctl" - args 'ls', 'version', '-b' - standardOutput out - } - out.toString().trim() + ext.appVersion = { -> "1.2.3" + + // def out = new ByteArrayOutputStream() + // def osName = '' + // def osArch = '' + // switch (System.getProperty('os.name')) { + // case 'Linux': + // osName = 'linux' + // break + // case 'Mac OS X': + // osName = 'darwin' + // break + // } + // switch (System.getProperty('os.arch')) { + // case 'amd64': + // osArch = 'amd64' + // case 'aarch64': + // osArch = 'arm64' + // break + // } + // exec { + // executable "${bringyourHomeDir}/warp/warpctl/build/${osName}/${osArch}/warpctl" + // args 'ls', 'version', '-b' + // standardOutput out + // } + // out.toString().trim() } ext.appVersionCode = { -> // hours since company founding @@ -296,7 +297,7 @@ dependencies { implementation 'com.google.android.gms:play-services-auth:21.2.0' implementation "com.android.installreferrer:installreferrer:2.2" - implementation 'circle.programmablewallet:sdk:1.0.1059' + implementation 'circle.programmablewallet:sdk:1.0.1066' implementation 'androidx.core:core-ktx:1.13.1' implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'com.google.android.material:material:1.12.0' diff --git a/app/settings.gradle b/app/settings.gradle index 2b66b4840..c9c990c20 100644 --- a/app/settings.gradle +++ b/app/settings.gradle @@ -20,13 +20,27 @@ dependencyResolutionManagement { // circle sdk maven { + + def mavenPassword = System.getenv("GITHUB_TOKEN") ?: null + + + Properties properties = new Properties() properties.load(new File(rootDir.absolutePath + "/dependencies.properties").newDataInputStream()) - url properties.getProperty('pwsdk.maven.url') - credentials { - username properties.getProperty('pwsdk.maven.username') - password properties.getProperty('pwsdk.maven.password') + if (mavenPassword != null) { + url properties.getProperty('pwsdk.maven.url') + credentials { + username 'x-access-token' + password mavenPassword + } + } else { + url properties.getProperty('pwsdk.maven.url') + + credentials { + username properties.getProperty('pwsdk.maven.username') + password properties.getProperty('pwsdk.maven.password') + } } } } From 0cb6939d42dc85647e8a9cc4990270ca6f89c631 Mon Sep 17 00:00:00 2001 From: Dragan Milic Date: Wed, 27 Nov 2024 00:11:19 +0100 Subject: [PATCH 2/6] no make --- app/app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/app/build.gradle b/app/app/build.gradle index 4d7202778..9443eccaf 100644 --- a/app/app/build.gradle +++ b/app/app/build.gradle @@ -271,8 +271,8 @@ android { } tasks.register('goclientBuild', Exec) { - workingDir "${bringyourHomeDir}/sdk" - commandLine 'make', 'init', 'build_android' + // workingDir "${bringyourHomeDir}/sdk" + commandLine 'echo' } tasks.withType(JavaCompile).tap { From 1eead869a6aabc84e37c988eff0ac74b89035821 Mon Sep 17 00:00:00 2001 From: Dragan Milic Date: Wed, 27 Nov 2024 16:31:18 +0100 Subject: [PATCH 3/6] download latest jar/aar --- app/app/build.gradle | 37 ++++++++++++++++++++++++++++++++----- 1 file changed, 32 insertions(+), 5 deletions(-) diff --git a/app/app/build.gradle b/app/app/build.gradle index 9443eccaf..2e9817992 100644 --- a/app/app/build.gradle +++ b/app/app/build.gradle @@ -20,9 +20,14 @@ plugins { import java.text.SimpleDateFormat import org.yaml.snakeyaml.Yaml +import groovy.json.JsonSlurper +import org.apache.commons.io.FilenameUtils +def githubRepo = 'urnetwork/sdk' +def latestReleaseUrl = "https://api.github.com/repos/${githubRepo}/releases/latest" +def downloadDir = "${buildDir}/downloads" -def bringyourHomeDir = System.getenv('BRINGYOUR_HOME') ?: "${System.env.HOME}/bringyour" +def bringyourHomeDir = System.getenv('BRINGYOUR_HOME') ?: "." ext.envSecret = { envName -> def servicesFile = file("$bringyourHomeDir/vault/$envName/services.yml") @@ -270,14 +275,36 @@ android { kotlinCompilerExtensionVersion = "1.5.13" } - tasks.register('goclientBuild', Exec) { - // workingDir "${bringyourHomeDir}/sdk" - commandLine 'echo' + // tasks.register('goclientBuild', Exec) { + // // workingDir "${bringyourHomeDir}/sdk" + // commandLine 'bash' '-c' '' + // } + + task downloadLatestReleaseArtifacts { + doLast { + def conn = new URL(latestReleaseUrl).openConnection() + + def json = new JsonSlurper().parse(conn.inputStream) + json.assets.each { asset -> + if (asset.name.endsWith('.jar') || asset.name.endsWith('.aar')) { + def downloadUrl = asset.browser_download_url + def fileName = FilenameUtils.getName(downloadUrl) + def file = new File(downloadDir, fileName) + if (!file.parentFile.exists()) { + file.parentFile.mkdirs() + } + println "Downloading ${downloadUrl}" + file.withOutputStream { out -> + new URL(downloadUrl).withInputStream { from -> out << from } + } + } + } + } } tasks.withType(JavaCompile).tap { configureEach { - compileTask -> compileTask.dependsOn goclientBuild + compileTask -> compileTask.dependsOn downloadLatestReleaseArtifacts } } } From fc75f99dace30e19714d0521af8dc350a9931a0f Mon Sep 17 00:00:00 2001 From: Dragan Milic Date: Wed, 27 Nov 2024 21:45:53 +0100 Subject: [PATCH 4/6] build using proper keys --- .github/workflows/build-aar.yaml | 31 --------------------------- .github/workflows/build-app.yaml | 36 ++++++++++++++++++++++++++++++++ app/app/build.gradle | 8 +++---- 3 files changed, 40 insertions(+), 35 deletions(-) delete mode 100644 .github/workflows/build-aar.yaml create mode 100644 .github/workflows/build-app.yaml diff --git a/.github/workflows/build-aar.yaml b/.github/workflows/build-aar.yaml deleted file mode 100644 index 98e130d3e..000000000 --- a/.github/workflows/build-aar.yaml +++ /dev/null @@ -1,31 +0,0 @@ -name: Build APK - -on: - workflow_dispatch: # Allows manual triggering - pull_request: - branches: - - main - -jobs: - build_aar: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Set up JDK 21 - uses: actions/setup-java@v4 - with: - java-version: "21" - distribution: "zulu" - - - name: Setup Android SDK - uses: android-actions/setup-android@v3 - - - name: Build Release apk - working-directory: app - env: - GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} - # env: - # RELEASE_KEYSTORE_PASSWORD: ${{ secrets.RELEASE_KEYSTORE_PASSWORD }} - # RELEASE_KEYSTORE_ALIAS: ${{ secrets.RELEASE_KEYSTORE_ALIAS }} - # RELEASE_KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }} - run: ./gradlew assembleRelease --stacktrace diff --git a/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml new file mode 100644 index 000000000..24d7a6fa6 --- /dev/null +++ b/.github/workflows/build-app.yaml @@ -0,0 +1,36 @@ +name: Build APP + +on: + workflow_dispatch: # Allows manual triggering + pull_request: + branches: + - main + +jobs: + build_app: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - name: Set up JDK 21 + uses: actions/setup-java@v4 + with: + java-version: "21" + distribution: "zulu" + + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + + - name: Create Keystore + env: + ANDROID_KEYSTORE_FILE: ${{ secrets.APP_SIGNING_KEY }} + run: | + mkdir -p $HOME/.android + echo $ANDROID_KEYSTORE_FILE | base64 --decode > $HOME/.android/debug.keystore + - name: Build Release apk + working-directory: app + env: + GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} + ANDROID_KEYSTORE_ALIAS: solana_dapp + ANDROID_KEYSTORE_PASSWORD: ${{ secrets.APP_SIGNING_KEYSTORE_PASSWORD }} + ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD: ${{ secrets.APP_SIGNING_KEY_SOLANA_DAPP_PASSWORD }} + run: ./gradlew assembleRelease --info diff --git a/app/app/build.gradle b/app/app/build.gradle index 2e9817992..d82b3c5cc 100644 --- a/app/app/build.gradle +++ b/app/app/build.gradle @@ -104,10 +104,10 @@ android { signingConfigs { debug { - storeFile file("${System.properties['user.home']}/.android/debug.keystore") - keyAlias 'androiddebugkey' - keyPassword 'android' - storePassword 'android' + storeFile file(System.getenv('ANDROID_KEYSTORE_FILE') ?: "${System.properties['user.home']}/.android/debug.keystore") + keyAlias System.getenv('ANDROID_KEYSTORE_ALIAS') ?: 'androiddebugkey' + keyPassword System.getenv('ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD') ?: 'android' + storePassword System.getenv('ANDROID_KEYSTORE_PASSWORD') ?: 'android' } } From 68dfb0aa498a9fc3f023a9a848104ce84711df3b Mon Sep 17 00:00:00 2001 From: Dragan Milic Date: Wed, 27 Nov 2024 22:33:12 +0100 Subject: [PATCH 5/6] show more errors --- .github/workflows/build-app.yaml | 2 +- app/app/build.gradle | 7 +++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml index 24d7a6fa6..20ef67f3f 100644 --- a/.github/workflows/build-app.yaml +++ b/.github/workflows/build-app.yaml @@ -33,4 +33,4 @@ jobs: ANDROID_KEYSTORE_ALIAS: solana_dapp ANDROID_KEYSTORE_PASSWORD: ${{ secrets.APP_SIGNING_KEYSTORE_PASSWORD }} ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD: ${{ secrets.APP_SIGNING_KEY_SOLANA_DAPP_PASSWORD }} - run: ./gradlew assembleRelease --info + run: ./gradlew assembleRelease diff --git a/app/app/build.gradle b/app/app/build.gradle index d82b3c5cc..d336d06b4 100644 --- a/app/app/build.gradle +++ b/app/app/build.gradle @@ -29,6 +29,13 @@ def downloadDir = "${buildDir}/downloads" def bringyourHomeDir = System.getenv('BRINGYOUR_HOME') ?: "." +subprojects { subproject -> + subproject.tasks.whenTaskAdded { + if (it.name.contains("kapt")) { + it.enabled = false + } + } +} ext.envSecret = { envName -> def servicesFile = file("$bringyourHomeDir/vault/$envName/services.yml") if (servicesFile.exists()) { From 0eb2f367cd02268b7dec273675ff6359c8cf6aed Mon Sep 17 00:00:00 2001 From: Dragan Milic Date: Wed, 27 Nov 2024 22:45:56 +0100 Subject: [PATCH 6/6] set source compatibility to jvm 18 --- .github/workflows/build-app.yaml | 2 +- app/app/build.gradle | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-app.yaml b/.github/workflows/build-app.yaml index 20ef67f3f..e4cc8ab33 100644 --- a/.github/workflows/build-app.yaml +++ b/.github/workflows/build-app.yaml @@ -33,4 +33,4 @@ jobs: ANDROID_KEYSTORE_ALIAS: solana_dapp ANDROID_KEYSTORE_PASSWORD: ${{ secrets.APP_SIGNING_KEYSTORE_PASSWORD }} ANDROID_KEYSTORE_PRIVATE_KEY_PASSWORD: ${{ secrets.APP_SIGNING_KEY_SOLANA_DAPP_PASSWORD }} - run: ./gradlew assembleRelease + run: ./gradlew assembleRelease --stacktrace diff --git a/app/app/build.gradle b/app/app/build.gradle index d336d06b4..be851c94a 100644 --- a/app/app/build.gradle +++ b/app/app/build.gradle @@ -53,6 +53,15 @@ ext.envSecret = { envName -> } android { + + compileOptions { + sourceCompatibility JavaVersion.VERSION_19 + targetCompatibility JavaVersion.VERSION_19 + } + kotlinOptions { + jvmTarget = '19' + } + ext.appVersion = { -> "1.2.3" // def out = new ByteArrayOutputStream() @@ -331,7 +340,7 @@ dependencies { implementation 'com.google.android.gms:play-services-auth:21.2.0' implementation "com.android.installreferrer:installreferrer:2.2" - implementation 'circle.programmablewallet:sdk:1.0.1066' + implementation 'circle.programmablewallet:sdk:1.0.1059' implementation 'androidx.core:core-ktx:1.13.1' implementation 'androidx.appcompat:appcompat:1.7.0' implementation 'com.google.android.material:material:1.12.0'