-
@ dannybuntu
2024-06-03 03:23:23Opinion about Tangem - Crypto wallet (android)
2024-06-03 We received a message via discord informing us that Tangem's source is already available. I checked it on Monday. I notice new commits - but there were still no releases and the latest tag was still at an old version: 4.5.1
Meanwhile, the Google Play version is already at 5.10.1
- The ISSUES tab in their repository is still hidden.
- There were still no build instructions and no readme file for building the app.
Nevertheless, I still attempted to build the app with an experimental method.
I used the 'tree' command to indicate the files and any tell-tale signs of which framework the Android app used:
This is the result PASTEBIN
From there, I commenced with determining the dependencies with the help of CGPT4, and created a Dockerfile:
```
Use an official image as a parent image
FROM ubuntu:20.04
Set environment variables
ENV DEBIAN_FRONTEND=noninteractive ENV ANDROID_SDK_ROOT=/usr/local/android-sdk ENV PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools:$ANDROID_SDK_ROOT/emulator
Install dependencies
RUN apt-get update && apt-get install -y \ openjdk-11-jdk \ wget \ unzip \ git \ curl \ build-essential \ && apt-get clean
Install Android SDK
RUN mkdir -p $ANDROID_SDK_ROOT/cmdline-tools \ && wget -q https://dl.google.com/android/repository/commandlinetools-linux-7583922_latest.zip -O /tmp/cmdline-tools.zip \ && unzip -q /tmp/cmdline-tools.zip -d $ANDROID_SDK_ROOT/cmdline-tools \ && mv $ANDROID_SDK_ROOT/cmdline-tools/cmdline-tools $ANDROID_SDK_ROOT/cmdline-tools/latest \ && rm /tmp/cmdline-tools.zip
Install required SDK packages
RUN yes | sdkmanager --licenses RUN sdkmanager "platform-tools" "platforms;android-30" "build-tools;30.0.3" "ndk;21.4.7075529" "cmake;3.10.2.4988404"
Install Node.js and npm (if needed for your project)
RUN curl -sL https://deb.nodesource.com/setup_14.x | bash - \ && apt-get install -y nodejs
Set the working directory
WORKDIR /workspace
Expose a port if needed
EXPOSE 8080
Keep the container running for interactive access
CMD ["bash"] ``` I initialized the Docker container:
and the build failed:
``` root@0d309885bc5a:/workspace# ls Dockerfile tangem-app-android root@0d309885bc5a:/workspace# cd tangem-app-android/ root@0d309885bc5a:/workspace/tangem-app-android# ls Gemfile app common data fastlane gradle gradlew libs settings.gradle.kts Gemfile.lock build.gradle.kts core domain features gradle.properties gradlew.bat plugins tangem-android-tools root@0d309885bc5a:/workspace/tangem-app-android# chmod +x gradlew root@0d309885bc5a:/workspace/tangem-app-android# ./gradlew assembleRelease Downloading https://services.gradle.org/distributions/gradle-8.2-bin.zip ..........................................................................................................................
Welcome to Gradle 8.2!
Here are the highlights of this release: - Kotlin DSL: new reference documentation, assignment syntax by default - Kotlin DSL is now the default with Gradle init - Improved suggestions to resolve errors in console output
For more details see https://docs.gradle.org/8.2/release-notes.html
Starting a Gradle Daemon (subsequent builds will be faster) Calculating task graph as no configuration cache is available for tasks: assembleRelease w: file:///workspace/tangem-app-android/settings.gradle.kts:83:9: 'jcenter(Action
!): MavenArtifactRepository!' is deprecated. Deprecated in Java local.properties not found, please create it next to build.gradle and set gpr.user and gpr.key (Create a GitHub package read only + non expiration token at https://github.com/settings/tokens) Or set GITHUB_ACTOR and GITHUB_TOKEN environment variables Type-safe project accessors is an incubating feature. Project accessors enabled, but root project name not explicitly set for 'tangem-app-android'. Checking out the project in different folders will impact the generated code and implicitly the buildscript classpath, breaking caching. Configure project : Project accessors enabled, but root project name not explicitly set for 'configuration'. Checking out the project in different folders will impact the generated code and implicitly the buildscript classpath, breaking caching.
0 problems were found storing the configuration cache.
See the complete report at file:///workspace/tangem-app-android/build/reports/configuration-cache/dppdh4vntszs5qk2brnk0vvuo/4db7xpibpova15d15pjhe3q6s/configuration-cache-report.html
FAILURE: Build failed with an exception.
-
What went wrong: A problem occurred configuring root project 'tangem-app-android'.
Could not resolve all files for configuration ':classpath'. Could not resolve androidx.room:room-gradle-plugin:2.6.1. Required by: project : > androidx.room:androidx.room.gradle.plugin:2.6.1 > No matching variant of androidx.room:room-gradle-plugin:2.6.1 was found. The consumer was configured to find a library for use during runtime, compatible with Java 11, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.gradle.plugin.api-version' with value '8.2' but: - Variant 'apiElements' capability androidx.room:room-gradle-plugin:2.6.1 declares a library, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares a component for use during compile-time, compatible with Java 17 and the consumer needed a component for use during runtime, compatible with Java 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '8.2') - Variant 'runtimeElements' capability androidx.room:room-gradle-plugin:2.6.1 declares a library for use during runtime, packaged as a jar, and its dependencies declared externally: - Incompatible because this component declares a component, compatible with Java 17 and the consumer needed a component, compatible with Java 11 - Other compatible attribute: - Doesn't say anything about org.gradle.plugin.api-version (required '8.2') - Variant 'sourcesElements' capability androidx.room:room-gradle-plugin:2.6.1 declares a component for use during runtime, and its dependencies declared externally: - Incompatible because this component declares documentation and the consumer needed a library - Other compatible attributes: - Doesn't say anything about its target Java version (required compatibility with Java 11) - Doesn't say anything about its elements (required them packaged as a jar) - Doesn't say anything about org.gradle.plugin.api-version (required '8.2')
-
Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights. Get more help at https://help.gradle.org.
Deprecated Gradle features were used in this build, making it incompatible with Gradle 9.0.
You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
For more on this, please refer to https://docs.gradle.org/8.2/userguide/command_line_interface.html#sec:command_line_warnings in the Gradle documentation.
BUILD FAILED in 1m 19s Configuration cache entry stored. ```
Further suggestions would involve modifying the contents of the repository, which is beyond the scope of this build attempt. I messaged them on twitter (x)
WalletScrutiny #nostrOpinion