diff --git a/app/build.gradle b/app/build.gradle
index afc030050c..ba1ec0f15a 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -2,6 +2,7 @@ apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
+apply plugin: 'io.fabric'
static def generateVersionName() {
def gitCommitsCount = "git rev-list HEAD --count".execute().text.trim()
@@ -9,6 +10,9 @@ static def generateVersionName() {
return gitCommitsCount.toInteger() + 831// + "\\n" + gitCurrentBranch
}
+Properties properties = new Properties()
+properties.load(project.rootProject.file('local.properties').newDataInputStream())
+
android {
compileSdkVersion 28
defaultConfig {
@@ -25,12 +29,23 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debug
+ buildConfigField 'boolean', 'CRASHLYTICS', 'Boolean.parseBoolean("false")'
+ ext.enableCrashlytics = false
}
debug {
debuggable true
minifyEnabled false
applicationIdSuffix ".debug"
signingConfig signingConfigs.debug
+ buildConfigField 'boolean', 'CRASHLYTICS', 'Boolean.parseBoolean("false")'
+ ext.enableCrashlytics = false
+ }
+ debug_beta {
+ initWith debug
+ versionNameSuffix "-beta"
+ applicationIdSuffix ".debug_beta"
+ buildConfigField 'boolean', 'CRASHLYTICS', 'Boolean.parseBoolean("true")'
+ manifestPlaceholders = [fabric_api_key: properties.getProperty('fabric_api_key')]
}
}
flavorDimensions ""
@@ -65,6 +80,7 @@ android {
repositories {
maven { url "https://jitpack.io" }
+ maven { url 'https://maven.fabric.io/public' }
}
configurations {
all*.exclude group: 'com.google.guava', module: 'listenablefuture'
@@ -119,6 +135,9 @@ dependencies {
// implementation 'com.github.stellar:java-stellar-sdk:0.4.1'
implementation 'net.i2p.crypto:eddsa:0.3.0'
+ implementation('com.crashlytics.sdk.android:crashlytics:2.9.9') { transitive = true }
+ implementation('io.fabric.sdk.android:fabric:1.4.0@aar') { transitive = true }
+
implementation files('libs/ripple-core-0.0.1.jar')
//4 dependencies for ripple-core TODO: move to module?
implementation 'net.i2p.crypto:eddsa:0.3.0'
diff --git a/app/src/debug/res/values/strings.xml b/app/src/debug/res/values/strings.xml
index 9ef8838437..1c13a1dbc0 100644
--- a/app/src/debug/res/values/strings.xml
+++ b/app/src/debug/res/values/strings.xml
@@ -2,5 +2,6 @@
DEBUG
+ com.tangem.debug.data.LogFileProvider
\ No newline at end of file
diff --git a/app/src/debug_beta/AndroidManifest.xml b/app/src/debug_beta/AndroidManifest.xml
new file mode 100644
index 0000000000..9f07ca1097
--- /dev/null
+++ b/app/src/debug_beta/AndroidManifest.xml
@@ -0,0 +1,23 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/debug_beta/res/values/strings.xml b/app/src/debug_beta/res/values/strings.xml
new file mode 100644
index 0000000000..dd8d1b1737
--- /dev/null
+++ b/app/src/debug_beta/res/values/strings.xml
@@ -0,0 +1,6 @@
+
+
+
+ TangemBeta
+
+
\ No newline at end of file
diff --git a/app/src/main/java/com/tangem/App.kt b/app/src/main/java/com/tangem/App.kt
index 64d16a74e3..84e791d4ae 100644
--- a/app/src/main/java/com/tangem/App.kt
+++ b/app/src/main/java/com/tangem/App.kt
@@ -2,16 +2,18 @@ package com.tangem
import android.app.Application
import androidx.appcompat.app.AppCompatDelegate
+import com.crashlytics.android.Crashlytics
import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
-import com.tangem.data.local.PendingTransactionsStorage
import com.tangem.card_android.android.data.Firmwares
import com.tangem.card_android.android.data.PINStorage
import com.tangem.card_common.data.Issuer
import com.tangem.data.dp.PrefsManager
+import com.tangem.data.local.PendingTransactionsStorage
import com.tangem.di.*
import com.tangem.server_android.data.LocalStorage
import com.tangem.wallet.BuildConfig
+import io.fabric.sdk.android.Fabric
import java.io.InputStreamReader
import java.nio.charset.StandardCharsets
@@ -73,6 +75,7 @@ class App : Application() {
}
}
)
+ if (BuildConfig.CRASHLYTICS) Fabric.with(this, Crashlytics())
}
}
diff --git a/app/src/main/java/com/tangem/ui/activity/LogoActivity.kt b/app/src/main/java/com/tangem/ui/activity/LogoActivity.kt
index 841440d8f8..48d110b73f 100644
--- a/app/src/main/java/com/tangem/ui/activity/LogoActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/LogoActivity.kt
@@ -8,9 +8,9 @@ import androidx.appcompat.app.AppCompatActivity
import com.tangem.App
import com.tangem.Constant
import com.tangem.di.Navigator
-import com.tangem.wallet.TangemContext
import com.tangem.wallet.BuildConfig
import com.tangem.wallet.R
+import com.tangem.wallet.TangemContext
import kotlinx.android.synthetic.main.activity_logo.*
import javax.inject.Inject
@@ -34,7 +34,7 @@ class LogoActivity : AppCompatActivity() {
App.navigatorComponent.inject(this)
- ivLogo.setOnClickListener { hide() }
+ clLogoContainer.setOnClickListener { hide() }
}
override fun onPostCreate(savedInstanceState: Bundle?) {
diff --git a/app/src/main/java/com/tangem/ui/activity/MainActivity.kt b/app/src/main/java/com/tangem/ui/activity/MainActivity.kt
index 075ff25409..df3c3218b7 100644
--- a/app/src/main/java/com/tangem/ui/activity/MainActivity.kt
+++ b/app/src/main/java/com/tangem/ui/activity/MainActivity.kt
@@ -41,14 +41,17 @@ class MainActivity : AppCompatActivity() {
// private var onNfcReaderCallback: NfcAdapter.ReaderCallback? = null
-// override fun onNewIntent(intent: Intent?) {
-// super.onNewIntent(intent)
-// if (intent != null && (NfcAdapter.ACTION_TECH_DISCOVERED == intent.action || NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action)) {
-// val tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)
-// if (tag != null && onNfcReaderCallback != null)
-// onNfcReaderCallback?.onTagDiscovered(tag)
-// }
-// }
+ override fun onNewIntent(intent: Intent?) {
+ super.onNewIntent(intent)
+ if (intent != null && (NfcAdapter.ACTION_TECH_DISCOVERED == intent.action || NfcAdapter.ACTION_NDEF_DISCOVERED == intent.action)) {
+ val tag = intent.getParcelableExtra(NfcAdapter.EXTRA_TAG)
+ if (tag != null) {
+ val activeFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment)
+ ?.childFragmentManager?.primaryNavigationFragment
+ (activeFragment as? NfcAdapter.ReaderCallback)?.onTagDiscovered(tag)
+ }
+ }
+ }
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
diff --git a/app/src/main/res/layout/activity_logo.xml b/app/src/main/res/layout/activity_logo.xml
index 7c7e1de15a..eb036a5eab 100644
--- a/app/src/main/res/layout/activity_logo.xml
+++ b/app/src/main/res/layout/activity_logo.xml
@@ -1,4 +1,5 @@
Erase wallet
- BETA v.%1$s \n dev \n build %2$s
- BETA v.%1$s
+ ALPHA v.%1$s \n dev build %2$s
+ v.%1$s
Hello, %1$s! You have %2$d new messages.
diff --git a/build.gradle b/build.gradle
index 8820962821..0a6c7bd4a5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -3,11 +3,13 @@ buildscript {
repositories {
google()
jcenter()
+ maven { url 'https://maven.fabric.io/public' }
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
+ classpath 'io.fabric.tools:gradle:1.27.1'
}
}
diff --git a/card-android/build.gradle b/card-android/build.gradle
index 956d0c88fe..1dc0028332 100644
--- a/card-android/build.gradle
+++ b/card-android/build.gradle
@@ -20,6 +20,10 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
+ debug_beta {
+ initWith debug
+ versionNameSuffix "-beta"
+ }
}
buildToolsVersion '28.0.3'
diff --git a/fastlane/Fastfile b/fastlane/Fastfile
index bf598fdf5b..56dd357aba 100644
--- a/fastlane/Fastfile
+++ b/fastlane/Fastfile
@@ -16,46 +16,53 @@
default_platform(:android)
platform :android do
+
desc "Runs all the tests"
lane :test do
gradle(
- task: "test",
- flavor: "tangemAccess",
- build_type: "Debug")
+ task: "test",
+ flavor: "tangemAccess",
+ build_type: "DebugUnitTest")
end
- desc "Build a release APK"
- lane :release do
- gradle(
- task: "clean assemble",
- flavor: "tangemAccess",
- build_type: "Release")
+ desc "Build a signed release APK"
+ lane :release do |options|
+ gradle(
+ task: "clean assemble",
+ flavor: "tangemAccess",
+ build_type: "Release",
+ properties: {
+ "android.injected.signing.store.file" => options[:keystore],
+ "android.injected.signing.store.password" => options[:store_password],
+ "android.injected.signing.key.alias" => options[:key_alias],
+ "android.injected.signing.key.password" => options[:key_password],
+ })
end
- desc "Build a debug APK"
- lane :debug do
- gradle(task: "clean assemble",
- flavor: "tangemAccess",
- build_type: "Debug")
- end
+ desc "Build debug and release APKs"
+ lane :build do |options|
+ gradle(
+ task: "clean assemble",
+ flavor: "tangemAccess",
+ build_type: "Debug_beta")
+ gradle(
+ task: "assemble",
+ flavor: "tangemAccess",
+ build_type: "Release",
+ properties: {
+ "android.injected.signing.store.file" => options[:keystore],
+ "android.injected.signing.store.password" => options[:store_password],
+ "android.injected.signing.key.alias" => options[:key_alias],
+ "android.injected.signing.key.password" => options[:key_password],
+ })
+ end
desc "Submit a new Beta Build to Crashlytics Beta"
- lane :beta do
- gradle(task: "clean assemble",
- flavor: "tangemAccess",
- build_type: "Debug")
- crashlytics
-
- # sh "your_script.sh"
- # You can also use other beta testing services here
+ lane :beta do |options|
+ crashlytics(
+ api_token: options[:api_token],
+ build_secret: options[:build_secret],
+ apk_path: options[:apk_path])
end
- desc "Deploy a new version to the Google Play"
- lane :deploy do
- gradle(
- task: "clean assemble",
- flavor: "tangemAccess",
- build_type: "Release")
- upload_to_play_store
- end
end
diff --git a/fastlane/README.md b/fastlane/README.md
index 61b4a5d99a..7c3f972135 100644
--- a/fastlane/README.md
+++ b/fastlane/README.md
@@ -25,22 +25,17 @@ Runs all the tests
```
fastlane android release
```
-Build a release APK
-### android debug
+Build a signed release APK
+### android build
```
-fastlane android debug
+fastlane android build
```
-Build a debug APK
+Build debug and release APKs
### android beta
```
fastlane android beta
```
Submit a new Beta Build to Crashlytics Beta
-### android deploy
-```
-fastlane android deploy
-```
-Deploy a new version to the Google Play
----
diff --git a/server-android/build.gradle b/server-android/build.gradle
index 7aaa4af308..c6e7c5bfed 100644
--- a/server-android/build.gradle
+++ b/server-android/build.gradle
@@ -20,6 +20,10 @@ android {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
+ debug_beta {
+ initWith debug
+ versionNameSuffix "-beta"
+ }
}
productFlavors {
}