mirror of https://github.com/m2049r/xmrwallet.git
Random fixes (#228)
* adapt for android studio 3.1 and remove witness * set networktype from node * add monero logging for DEBUG builds * do not reset timestamps in apk * no witness * new version & apk naming
This commit is contained in:
parent
b37adb4546
commit
e9c74d4d9c
|
@ -3,6 +3,8 @@
|
||||||
*.iml
|
*.iml
|
||||||
/.idea/libraries
|
/.idea/libraries
|
||||||
/.idea/workspace.xml
|
/.idea/workspace.xml
|
||||||
|
/.idea/caches
|
||||||
|
/.idea/codeStyles
|
||||||
/local.properties
|
/local.properties
|
||||||
/captures
|
/captures
|
||||||
.externalNativeBuild
|
.externalNativeBuild
|
||||||
|
|
|
@ -1,15 +1,14 @@
|
||||||
apply plugin: 'com.android.application'
|
apply plugin: 'com.android.application'
|
||||||
apply plugin: 'witness'
|
|
||||||
|
|
||||||
android {
|
android {
|
||||||
compileSdkVersion 25
|
compileSdkVersion 25
|
||||||
buildToolsVersion '26.0.2'
|
buildToolsVersion '27.0.3'
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "com.m2049r.xmrwallet"
|
applicationId "com.m2049r.xmrwallet"
|
||||||
minSdkVersion 21
|
minSdkVersion 21
|
||||||
targetSdkVersion 25
|
targetSdkVersion 25
|
||||||
versionCode 86
|
versionCode 87
|
||||||
versionName "1.4.6 'Monero Spedner'"
|
versionName "1.4.7 'Monero Spedner'"
|
||||||
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
|
||||||
externalNativeBuild {
|
externalNativeBuild {
|
||||||
cmake {
|
cmake {
|
||||||
|
@ -17,9 +16,6 @@ android {
|
||||||
arguments '-DANDROID_STL=c++_shared'
|
arguments '-DANDROID_STL=c++_shared'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ndk {
|
|
||||||
abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
buildTypes {
|
buildTypes {
|
||||||
|
@ -52,59 +48,35 @@ android {
|
||||||
// APKs for the same app that all have the same version information.
|
// APKs for the same app that all have the same version information.
|
||||||
android.applicationVariants.all { variant ->
|
android.applicationVariants.all { variant ->
|
||||||
// Assigns a different version code for each output APK.
|
// Assigns a different version code for each output APK.
|
||||||
variant.outputs.each {
|
variant.outputs.all {
|
||||||
output ->
|
output ->
|
||||||
def abiName = output.getFilter(com.android.build.OutputFile.ABI)
|
def abiName = output.getFilter(com.android.build.OutputFile.ABI)
|
||||||
output.versionCodeOverride = abiCodes.get(abiName, 0) + 10 * variant.versionCode
|
output.versionCodeOverride = abiCodes.get(abiName, 0) + 10 * variant.versionCode
|
||||||
|
|
||||||
|
if (abiName == null) abiName = "universal"
|
||||||
|
def v = "${variant.versionName}".replaceFirst(" .*\$", "").replace(".", "x")
|
||||||
|
outputFileName = "$rootProject.ext.apkName-" + v + "_" + abiName + ".apk"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compile 'com.android.support:appcompat-v7:25.4.0'
|
implementation 'com.android.support:appcompat-v7:25.4.0'
|
||||||
compile 'com.android.support:design:25.4.0'
|
implementation 'com.android.support:design:25.4.0'
|
||||||
compile 'com.android.support:support-v4:25.4.0'
|
implementation 'com.android.support:support-v4:25.4.0'
|
||||||
compile 'com.android.support:recyclerview-v7:25.4.0'
|
implementation 'com.android.support:recyclerview-v7:25.4.0'
|
||||||
compile 'com.android.support:cardview-v7:25.4.0'
|
implementation 'com.android.support:cardview-v7:25.4.0'
|
||||||
compile 'com.android.support.constraint:constraint-layout:1.0.2'
|
implementation 'com.android.support.constraint:constraint-layout:1.0.2'
|
||||||
compile 'me.dm7.barcodescanner:zxing:1.9.8'
|
implementation 'me.dm7.barcodescanner:zxing:1.9.8'
|
||||||
|
|
||||||
compile "com.squareup.okhttp3:okhttp:$rootProject.ext.okHttpVersion"
|
implementation "com.squareup.okhttp3:okhttp:$rootProject.ext.okHttpVersion"
|
||||||
compile "com.jakewharton.timber:timber:$rootProject.ext.timberVersion"
|
implementation "com.jakewharton.timber:timber:$rootProject.ext.timberVersion"
|
||||||
|
|
||||||
compile 'com.nulab-inc:zxcvbn:1.2.3'
|
implementation 'com.nulab-inc:zxcvbn:1.2.3'
|
||||||
|
|
||||||
testCompile "junit:junit:$rootProject.ext.junitVersion"
|
testImplementation "junit:junit:$rootProject.ext.junitVersion"
|
||||||
testCompile "org.mockito:mockito-all:$rootProject.ext.mockitoVersion"
|
testImplementation "org.mockito:mockito-all:$rootProject.ext.mockitoVersion"
|
||||||
testCompile "com.squareup.okhttp3:mockwebserver:$rootProject.ext.okHttpVersion"
|
testImplementation "com.squareup.okhttp3:mockwebserver:$rootProject.ext.okHttpVersion"
|
||||||
testCompile 'org.json:json:20140107'
|
testImplementation 'org.json:json:20140107'
|
||||||
testCompile 'net.jodah:concurrentunit:0.4.2'
|
testImplementation 'net.jodah:concurrentunit:0.4.2'
|
||||||
}
|
|
||||||
|
|
||||||
dependencyVerification {
|
|
||||||
verify = [
|
|
||||||
'com.android.support:design:3f409bf2019967ffc344cfaf11e52131fac982468a1707aaeb25bf3c52838966',
|
|
||||||
'com.android.support:appcompat-v7:70551e62660db15b790c5275f56b9de4dd9407d1494d07c8f3dd5698f3638677',
|
|
||||||
'com.android.support:transition:848270144fb180efd2bf928a00ed176dbbc5290badfd638390ffba90088df8b3',
|
|
||||||
'me.dm7.barcodescanner:zxing:d43973c9527c23fa8e6d338c6a2c458e373ce1ac6bcaa3bc41d11ae49116000d',
|
|
||||||
'me.dm7.barcodescanner:core:a5c8a704089b58029db166172ed8e55d756877d010a85a0b1c94fdc96ffb8f9a',
|
|
||||||
'com.android.support:support-v4:ee44c481a1f4d6978568e223e8125379b52b2ececdd53450e09ebae144bd377d',
|
|
||||||
'com.android.support:recyclerview-v7:a2fe121f9d01ed8980e97095b4a3fe9700a0aa0a7d4b0f8c594f765ad8455a0d',
|
|
||||||
'com.android.support:cardview-v7:f3fbbe1fcfdbec7333c6a2c516c5fd511a909d1975271818e268d6fe297d8c70',
|
|
||||||
'com.android.support.constraint:constraint-layout:b0c688cc2b7172608f8153a689d746da40f71e52d7e2fe2bfd9df2f92db77085',
|
|
||||||
'com.android.support:animated-vector-drawable:628ab1d56a6ee4cbedf32617af8b2a1fe02964ed0628e8f898cc09ddba6e1835',
|
|
||||||
'com.android.support:support-vector-drawable:077009d13882ee96f061e4bc2dbe7cce7ae1762d8297592a787ff741afbfb1f2',
|
|
||||||
'com.android.support:support-fragment:316d35d4d2d2902057efad104a73e4bdb50bee260a7075678185b8cd71170945',
|
|
||||||
'com.android.support:support-core-ui:e72ae29b823889686cff6fcb948d6745c2baf6d4c2af4fdffa1ec1e42e3833a3',
|
|
||||||
'com.android.support:support-media-compat:566a161d9cb0083ef62a53e46b71ce5b3d455b8635b1a0a4ae28d96d4b583de8',
|
|
||||||
'com.android.support:support-core-utils:34b8437dfa95ff28d29cf57ffa3b1354a9fa9bfe4059f0fd5ce2f5e4326a1748',
|
|
||||||
'com.android.support:support-compat:54019c63614ce08b02d7b9605490cd2b29ba5b2505f394a9517450b5f72b30ca',
|
|
||||||
'com.android.support:support-annotations:a774272036941b4e912eb426d70c848bde7f06a3bf5fb491f75a427dc6595270',
|
|
||||||
'com.android.support.constraint:constraint-layout-solver:8c62525a9bc5cff5633a96cb9b32fffeccaf41b8841aa87fc22607070dea9b8d',
|
|
||||||
'com.google.zxing:core:bba7724e02a997cec38213af77133ee8e24b0d5cf5fa7ecbc16a4fa93f11ee0d',
|
|
||||||
'com.squareup.okio:okio:734269c3ebc5090e3b23566db558f421f0b4027277c79ad5d176b8ec168bb850',
|
|
||||||
'com.squareup.okhttp3:okhttp:7265adbd6f028aade307f58569d814835cd02bc9beffb70c25f72c9de50d61c4',
|
|
||||||
'com.jakewharton.timber:timber:35c22867f2673132e97e17857d36bb2fc25f5790f0425406833ed0254d62fc66',
|
|
||||||
'com.nulab-inc:zxcvbn:18d7862a6abd2705defec478d77dedadf8f3bb7cf811df22995494f05485785f',
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1075,6 +1075,85 @@ Java_com_m2049r_xmrwallet_model_PendingTransaction_getTxCount(JNIEnv *env, jobje
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// these are all in Bitmonero::Wallet - which I find wrong, so they are here!
|
||||||
|
//static void init(const char *argv0, const char *default_log_base_name);
|
||||||
|
//static void debug(const std::string &category, const std::string &str);
|
||||||
|
//static void info(const std::string &category, const std::string &str);
|
||||||
|
//static void warning(const std::string &category, const std::string &str);
|
||||||
|
//static void error(const std::string &category, const std::string &str);
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
Java_com_m2049r_xmrwallet_model_WalletManager_initLogger(JNIEnv *env, jobject instance,
|
||||||
|
jstring argv0, jstring default_log_base_name) {
|
||||||
|
|
||||||
|
const char *_argv0 = env->GetStringUTFChars(argv0, NULL);
|
||||||
|
const char *_default_log_base_name = env->GetStringUTFChars(default_log_base_name, NULL);
|
||||||
|
|
||||||
|
Bitmonero::Wallet::init(_argv0, _default_log_base_name);
|
||||||
|
|
||||||
|
env->ReleaseStringUTFChars(argv0, _argv0);
|
||||||
|
env->ReleaseStringUTFChars(default_log_base_name, _default_log_base_name);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
Java_com_m2049r_xmrwallet_model_WalletManager_logDebug(JNIEnv *env, jobject instance,
|
||||||
|
jstring category, jstring message) {
|
||||||
|
|
||||||
|
const char *_category = env->GetStringUTFChars(category, NULL);
|
||||||
|
const char *_message = env->GetStringUTFChars(message, NULL);
|
||||||
|
|
||||||
|
Bitmonero::Wallet::debug(_category, _message);
|
||||||
|
|
||||||
|
env->ReleaseStringUTFChars(category, _category);
|
||||||
|
env->ReleaseStringUTFChars(message, _message);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
Java_com_m2049r_xmrwallet_model_WalletManager_logInfo(JNIEnv *env, jobject instance,
|
||||||
|
jstring category, jstring message) {
|
||||||
|
|
||||||
|
const char *_category = env->GetStringUTFChars(category, NULL);
|
||||||
|
const char *_message = env->GetStringUTFChars(message, NULL);
|
||||||
|
|
||||||
|
Bitmonero::Wallet::info(_category, _message);
|
||||||
|
|
||||||
|
env->ReleaseStringUTFChars(category, _category);
|
||||||
|
env->ReleaseStringUTFChars(message, _message);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
Java_com_m2049r_xmrwallet_model_WalletManager_logWarning(JNIEnv *env, jobject instance,
|
||||||
|
jstring category, jstring message) {
|
||||||
|
|
||||||
|
const char *_category = env->GetStringUTFChars(category, NULL);
|
||||||
|
const char *_message = env->GetStringUTFChars(message, NULL);
|
||||||
|
|
||||||
|
Bitmonero::Wallet::warning(_category, _message);
|
||||||
|
|
||||||
|
env->ReleaseStringUTFChars(category, _category);
|
||||||
|
env->ReleaseStringUTFChars(message, _message);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
Java_com_m2049r_xmrwallet_model_WalletManager_logError(JNIEnv *env, jobject instance,
|
||||||
|
jstring category, jstring message) {
|
||||||
|
|
||||||
|
const char *_category = env->GetStringUTFChars(category, NULL);
|
||||||
|
const char *_message = env->GetStringUTFChars(message, NULL);
|
||||||
|
|
||||||
|
Bitmonero::Wallet::error(_category, _message);
|
||||||
|
|
||||||
|
env->ReleaseStringUTFChars(category, _category);
|
||||||
|
env->ReleaseStringUTFChars(message, _message);
|
||||||
|
}
|
||||||
|
|
||||||
|
JNIEXPORT void JNICALL
|
||||||
|
Java_com_m2049r_xmrwallet_model_WalletManager_setLogLevel(JNIEnv *env, jobject instance,
|
||||||
|
jint level) {
|
||||||
|
Bitmonero::WalletManagerFactory::setLogLevel(level);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -743,7 +743,9 @@ public class LoginActivity extends SecureActivity
|
||||||
}
|
}
|
||||||
|
|
||||||
void startLoginFragment() {
|
void startLoginFragment() {
|
||||||
|
// we set these here because we cannot be ceratin we have permissions for storage before
|
||||||
Helper.setMoneroHome(this);
|
Helper.setMoneroHome(this);
|
||||||
|
Helper.initLogger(this);
|
||||||
Fragment fragment = new LoginFragment();
|
Fragment fragment = new LoginFragment();
|
||||||
getSupportFragmentManager().beginTransaction()
|
getSupportFragmentManager().beginTransaction()
|
||||||
.add(R.id.fragment_container, fragment).commit();
|
.add(R.id.fragment_container, fragment).commit();
|
||||||
|
|
|
@ -86,6 +86,10 @@ public class WalletNode {
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public NetworkType getNetworkType() {
|
||||||
|
return networkType;
|
||||||
|
}
|
||||||
|
|
||||||
public String getAddress() {
|
public String getAddress() {
|
||||||
return host + ":" + port;
|
return host + ":" + port;
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,6 +41,7 @@ public class WalletManager {
|
||||||
if (WalletManager.Instance == null) {
|
if (WalletManager.Instance == null) {
|
||||||
WalletManager.Instance = new WalletManager();
|
WalletManager.Instance = new WalletManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
return WalletManager.Instance;
|
return WalletManager.Instance;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,7 +216,7 @@ public class WalletManager {
|
||||||
//public void setDaemon(String address, NetworkType networkType, String username, String password) {
|
//public void setDaemon(String address, NetworkType networkType, String username, String password) {
|
||||||
public void setDaemon(WalletNode walletNode) {
|
public void setDaemon(WalletNode walletNode) {
|
||||||
this.daemonAddress = walletNode.getAddress();
|
this.daemonAddress = walletNode.getAddress();
|
||||||
this.networkType = networkType;
|
this.networkType = walletNode.getNetworkType();
|
||||||
this.daemonUsername = walletNode.getUsername();
|
this.daemonUsername = walletNode.getUsername();
|
||||||
this.daemonPassword = walletNode.getPassword();
|
this.daemonPassword = walletNode.getPassword();
|
||||||
setDaemonAddressJ(daemonAddress);
|
setDaemonAddressJ(daemonAddress);
|
||||||
|
@ -269,5 +270,17 @@ public class WalletManager {
|
||||||
|
|
||||||
//TODO static std::tuple<bool, std::string, std::string, std::string, std::string> checkUpdates(const std::string &software, const std::string &subdir);
|
//TODO static std::tuple<bool, std::string, std::string, std::string, std::string> checkUpdates(const std::string &software, const std::string &subdir);
|
||||||
|
|
||||||
|
static public native void initLogger(String argv0, String defaultLogBaseName);
|
||||||
|
//TODO: maybe put these in an enum like in monero core - but why?
|
||||||
|
static public int LOGLEVEL_SILENT = -1;
|
||||||
|
static public int LOGLEVEL_WARN = 0;
|
||||||
|
static public int LOGLEVEL_INFO = 1;
|
||||||
|
static public int LOGLEVEL_DEBUG = 2;
|
||||||
|
static public int LOGLEVEL_TRACE = 3;
|
||||||
|
static public int LOGLEVEL_MAX = 4;
|
||||||
|
static public native void setLogLevel(int level);
|
||||||
|
static public native void logDebug(String category, String message);
|
||||||
|
static public native void logInfo(String category, String message);
|
||||||
|
static public native void logWarning(String category, String message);
|
||||||
|
static public native void logError(String category, String message);
|
||||||
}
|
}
|
|
@ -38,6 +38,7 @@ import android.view.animation.Animation;
|
||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
import android.view.inputmethod.InputMethodManager;
|
import android.view.inputmethod.InputMethodManager;
|
||||||
|
|
||||||
|
import com.m2049r.xmrwallet.BuildConfig;
|
||||||
import com.m2049r.xmrwallet.R;
|
import com.m2049r.xmrwallet.R;
|
||||||
import com.m2049r.xmrwallet.model.NetworkType;
|
import com.m2049r.xmrwallet.model.NetworkType;
|
||||||
import com.m2049r.xmrwallet.model.Wallet;
|
import com.m2049r.xmrwallet.model.Wallet;
|
||||||
|
@ -287,4 +288,19 @@ public class Helper {
|
||||||
throw new IllegalStateException(ex);
|
throw new IllegalStateException(ex);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static public void initLogger(Context context) {
|
||||||
|
if (BuildConfig.DEBUG) {
|
||||||
|
initLogger(context, WalletManager.LOGLEVEL_DEBUG);
|
||||||
|
}
|
||||||
|
// no logger if not debug
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO make the log levels refer to the WalletManagerFactory::LogLevel enum ?
|
||||||
|
static public void initLogger(Context context, int level) {
|
||||||
|
String home = getStorage(context, HOME_DIR).getAbsolutePath();
|
||||||
|
WalletManager.initLogger(home + "/monerujo", "monerujo.log");
|
||||||
|
if (level >= WalletManager.LOGLEVEL_SILENT)
|
||||||
|
WalletManager.setLogLevel(level);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,10 +6,7 @@ buildscript {
|
||||||
google()
|
google()
|
||||||
}
|
}
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath 'com.android.tools.build:gradle:3.0.1'
|
classpath 'com.android.tools.build:gradle:3.1.1'
|
||||||
classpath files('external-libs/gradle-witness.jar')
|
|
||||||
// NOTE: Do not place your application dependencies here; they belong
|
|
||||||
// in the individual module build.gradle files
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -27,6 +24,7 @@ task clean(type: Delete) {
|
||||||
}
|
}
|
||||||
|
|
||||||
ext {
|
ext {
|
||||||
|
apkName = 'monerujo'
|
||||||
okHttpVersion = '3.9.0'
|
okHttpVersion = '3.9.0'
|
||||||
junitVersion = '4.12'
|
junitVersion = '4.12'
|
||||||
mockitoVersion = '1.10.19'
|
mockitoVersion = '1.10.19'
|
||||||
|
|
Binary file not shown.
|
@ -15,3 +15,6 @@ org.gradle.jvmargs=-Xmx1536m
|
||||||
# This option should only be used with decoupled projects. More details, visit
|
# This option should only be used with decoupled projects. More details, visit
|
||||||
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
|
||||||
# org.gradle.parallel=true
|
# org.gradle.parallel=true
|
||||||
|
|
||||||
|
# keep build timestamps in APK
|
||||||
|
android.keepTimestampsInApk = true
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#Wed Oct 25 23:06:49 CEST 2017
|
#Mon Apr 09 08:52:01 CEST 2018
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip
|
||||||
|
|
Loading…
Reference in New Issue