Skip to content

Commit ae28ffd

Browse files
committed
Merge branch 'develop'
2 parents 694dfd5 + 7a7cb23 commit ae28ffd

File tree

447 files changed

+34310
-13685
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

447 files changed

+34310
-13685
lines changed

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,12 @@ out/
2121
*.classpath
2222
# cpu profile generated by Android Studio
2323
/captures
24+
2425
gradle.properties
26+
27+
#Crashlytics
28+
2529
crashlytics.properties
30+
fabric.properties
31+
app/fabric.properties
32+
app/*.tap

.travis.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,32 +4,33 @@ android:
44
components:
55
- platform-tools
66
- tools
7-
- build-tools-22.0.1
8-
7+
- build-tools-23.0.1
8+
99
# The SDK version used to compile your project
10-
- android-19
10+
- android-23
1111

1212
# Additional components
1313
- extra-android-support
1414
- extra-google-google_play_services
1515
- extra-google-m2repository
1616
- extra-android-m2repository
17-
- addon-google_apis-google-19
17+
- addon-google_apis-google-23
1818

1919
# Specify at least one system image,
2020
# if you need to run emulator(s) during your tests
21-
- sys-img-armeabi-v7a-android-19
21+
#- sys-img-armeabi-v7a-android-23
22+
2223

2324
# Emulator Management: Create, Start and Wait
2425
# Re-enable this when we figure out how to reliably build on Travis
2526
#before_script:
2627
# - mkdir sdcard
2728
# - mksdcard -l gnucash-sdcard 64M sdcard/gnucash-sdcard.img
28-
# - echo no | android create avd --force -n test -t android-19 --abi armeabi-v7a
29+
# - echo no | android create avd --force -n test -t android-23 --abi armeabi-v7a
2930
# - emulator -avd test -no-skin -no-audio -no-window -no-boot-anim -sdcard sdcard/gnucash-sdcard.img &
3031
# - android-wait-for-emulator
3132
# - adb shell input keyevent 82 &
3233

3334
script:
3435
- ./gradlew build
35-
# - ./gradlew connectedCheck
36+
# - ./gradlew connectedCheck

CHANGELOG.md

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,37 @@
11
Change Log
22
===============================================================================
3+
Version 2.0.0 *(2015-11-01)*
4+
----------------------------
5+
* Feature: Updated app design to use Material Design guidelines
6+
* Feature: Setup wizard on first run of the application
7+
* Feature: Support for multi-currency transactions
8+
* Feature: New report summary page and more options for display/grouping reports
9+
* Feature: Calculator keyboard when entering transactions
10+
* Feature: Use appropriate decimal places per currency
11+
* Feature: New help & feedback section with UserVoice
12+
* Feature: New transaction detail view with running account balance
13+
* Feature: Export/import commodity prices to/from GnuCash XML
14+
* Feature: Prompt for rating the application after a number of starts
15+
* Feature: Support for Android M permissions model
16+
* Feature: New horizontal layout for account and transaction lists
17+
* Feature: Automatic sending of crash reports with user permission (opt-in)
18+
* Feature: Default transfer account setting propagates to child accounts
19+
* Feature: Export transactions from a particular date
20+
* Improved: Transactions are always balanced at the database layer before saving
21+
* Improved: OFX export do not try to support double entry anymore
22+
* Improved: Restructured the app settings categories
23+
* Improved: Highlight active scheduled actions
24+
* Improved: Restructured navigation drawer and added icons
25+
* Improved: Currencies are listed sorted by currency code
26+
* Improved: Show relative time in transaction list
27+
* Improved: Added Portuguese translation
28+
* Improved: Account balances are now computed faster (in parallel)
29+
* Fixed: Data leak through app screenshot when passcode is set
30+
* Fixed: Some inconsistencies when importing GnuCash XML
31+
* Fixed: "Save" and "Cancel" transaction buttons not displayed in Gingerbread
32+
* Fixed: Word-wrap on transaction type switch
33+
* Fixed: Crash when restoring backups with poorly formatted amount strings
34+
335
Version 1.6.4 *(2015-08-12)*
436
----------------------------
537
* Fixed: Crashes during backup restoration

CONTRIBUTORS

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
GnuCash for Android is a community effort which is made possible by the contributions of
1+
GnuCash for Android is a community effort which is made possible by the contributions of
22
several different people.
3-
Appreciation goes to Muslim Chochlov and the to whole GnuCash community for guiding the
3+
Appreciation goes to Muslim Chochlov and the to whole GnuCash community for guiding the
44
project through the early phases and providing valuable feedback.
55

6-
Lead Developer:
6+
Maintainer:
77
Ngewi Fet <[email protected]>
88

9-
Main contributors to core app experience:
9+
Core contributors:
1010
Yongxin Wang <[email protected]>
1111
Oleksandr Tyshkovets <[email protected]>
12+
Àlex Magaz Graça <[email protected]>
1213

13-
The following people (in no particular order) contributed (code and translations) to GnuCash for Android:
14+
The following people (in no particular order) contributed (patches and translations) to GnuCash Android:
1415
Christian Stimming <[email protected]>
1516
Cristian Marchi <[email protected]>
1617
Menelaos Maglis <[email protected]>
@@ -27,4 +28,4 @@ Alex Lei <[email protected]>
2728
Matthew Hague <[email protected]>
2829
Spanti Nicola <[email protected]>
2930
Jesse Shieh <[email protected]>
30-
Àlex Magaz Graça <rivaldi8@gmail.com>
31+
Terry Chung <terrywmc@gmail.com>

README.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
# Introduction
66

77
GnuCash Android is a companion expense-tracker application for GnuCash (desktop) designed for Android.
8-
It allows you to record transactions on-the-go and later import the data into GnuCash for the desktop.
8+
It allows you to record transactions on-the-go and later import the data into GnuCash for the desktop.
99

10-
The application supports Android 2.3.4 Gingerbread (API level 10) and above.
10+
The application supports Android 2.3.3 Gingerbread (API level 10) and above.
1111

1212
Features include:
1313

@@ -18,7 +18,7 @@ Features include:
1818

1919
* Split Transactions: A single transaction can be split into several pieces to record taxes, fees, and other compound entries.
2020

21-
* Double Entry: Every transaction must debit one account and credit another by an equal amount.
21+
* Double Entry: Every transaction must debit one account and credit another by an equal amount.
2222
This ensures that the "books balance": that the difference between income and outflow exactly
2323
equals the sum of all assets, be they bank, cash, stock or other.
2424

@@ -62,7 +62,7 @@ The app is configured to allow you to install a development and production versi
6262

6363
### With Android Studio
6464
The easiest way to build is to install [Android Studio](https://developer.android.com/sdk/index.html) v1.+
65-
with [Gradle](https://www.gradle.org/) v2.2.1.
65+
with [Gradle](https://www.gradle.org/) v2.4.
6666
Once installed, then you can import the project into Android Studio:
6767

6868
1. Open `File`
@@ -72,6 +72,10 @@ Once installed, then you can import the project into Android Studio:
7272

7373
Then, Gradle will do everything for you.
7474

75+
## Support
76+
77+
Google+ Community: https://plus.google.com/communities/104728406764752407046
78+
7579
## Contributing
7680

7781
There are several ways you could contribute to the development.
@@ -96,5 +100,5 @@ You may obtain a copy of the License at
96100
Unless required by applicable law or agreed to in writing, software
97101
distributed under the License is distributed on an "AS IS" BASIS,
98102
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
99-
See the License for the specific language governing permissions and
103+
See the License for the specific language governing permissions and
100104
limitations under the License.

app/build.gradle

Lines changed: 62 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
import java.text.SimpleDateFormat
22

33
apply plugin: 'com.android.application'
4-
apply plugin: 'crashlytics'
4+
apply plugin: 'io.fabric'
55

6-
def versionMajor = 1
7-
def versionMinor = 6
8-
def versionPatch = 4
9-
def versionBuild = 0
6+
def versionMajor = 2
7+
def versionMinor = 0
8+
def versionPatch = 0
9+
def versionBuild = 7
1010

1111
def buildTime() {
12-
def df = new SimpleDateFormat("yyyyMMdd")
12+
def df = new SimpleDateFormat("yyyyMMdd HH:mm 'UTC'")
1313
df.setTimeZone(TimeZone.getTimeZone("UTC"))
1414
return df.format(new Date())
1515
}
@@ -20,18 +20,20 @@ def gitSha() {
2020

2121

2222
android {
23-
compileSdkVersion 19
24-
buildToolsVersion "21.1.2" //maintain this version until we migrate to ActionBarCompat
23+
compileSdkVersion 23
24+
buildToolsVersion "23.0.1"
2525
defaultConfig {
2626
applicationId "org.gnucash.android"
2727
testApplicationId 'org.gnucash.android.test'
2828
minSdkVersion 10
29-
targetSdkVersion 19
29+
targetSdkVersion 23 //robolectric tests only support up to API level 21 at the moment
3030
versionCode versionMajor * 10000 + versionMinor * 1000 + versionPatch * 100 + versionBuild
3131
versionName "${versionMajor}.${versionMinor}.${versionPatch}"
3232
resValue "string", "app_version_name", "${versionName}"
3333
resValue "string", "app_minor_version", "${versionMinor}"
34-
buildConfigField "boolean", "USE_CRASHLYTICS", "false"
34+
buildConfigField "boolean", "CAN_REQUEST_RATING", "false"
35+
buildConfigField "String", "BUILD_TIME", "\"${buildTime()}\""
36+
3537
if (project.hasProperty("RELEASE_DROPBOX_APP_KEY")){
3638
resValue "string", "dropbox_app_key", RELEASE_DROPBOX_APP_KEY
3739
resValue "string", "dropbox_app_secret", RELEASE_DROPBOX_APP_SECRET
@@ -108,11 +110,12 @@ android {
108110
resValue "string", "app_name", "GnuCash - beta"
109111
versionName "${versionMajor}.${versionMinor}.${versionPatch}-beta${versionBuild}"
110112
resValue "string", "app_version_name", "${versionName}"
111-
buildConfigField "boolean", "USE_CRASHLYTICS", "true"
112113
}
113114

114115
production {
115116
resValue "string", "app_name", "GnuCash"
117+
buildConfigField "boolean", "CAN_REQUEST_RATING", "true"
118+
ext.enableCrashlytics = false
116119
}
117120

118121
}
@@ -129,11 +132,18 @@ def adb = android.getAdbExe().toString()
129132

130133
afterEvaluate {
131134
task grantAnimationPermissionDevel(type: Exec, dependsOn: 'installDevelopmentDebug') { // or install{productFlavour}{buildType}
132-
commandLine "$adb shell pm grant $android.productFlavors.development.applicationId android.permission.SET_ANIMATION_SCALE".split(' ')
135+
commandLine "$adb", 'devices'
136+
standardOutput = new ByteArrayOutputStream()
137+
138+
String output = standardOutput.toString()
139+
output.eachLine {
140+
def serial = it.split("\\s")[0]
141+
commandLine "$adb -s $serial shell pm grant $android.productFlavors.development.applicationId android.permission.SET_ANIMATION_SCALE".split(' ')
142+
}
133143
}
134144

135145
task grantAnimationPermissionProduction(type: Exec, dependsOn: 'installProductionDebug'){
136-
commandLine "$adb shell pm grant $android.defaultConfig.applicationId android.permission.SET_ANIMATION_SCALE".split(' ')
146+
commandLine "$adb -e shell pm grant $android.defaultConfig.applicationId android.permission.SET_ANIMATION_SCALE".split(' ')
137147
}
138148
// When launching individual tests from Android Studio, it seems that only the assemble tasks
139149
// get called directly, not the install* versions
@@ -148,29 +158,55 @@ afterEvaluate {
148158
}
149159
}
150160

161+
def androidSupportVersion = "22.2.1"
162+
def androidEspressoVersion = "2.2"
163+
def androidSupportTestVersion = "0.3"
151164

152165
dependencies {
153166
compile fileTree(dir: 'libs', include: ['*.jar'])
154-
compile('com.android.support:support-v4:22.1.1',
155-
'com.actionbarsherlock:actionbarsherlock:4.4.0@aar',
167+
compile('com.android.support:support-v4:' + androidSupportVersion,
168+
'com.android.support:appcompat-v7:' + androidSupportVersion,
169+
'com.android.support:design:' + androidSupportVersion,
170+
'com.android.support:cardview-v7:' + androidSupportVersion,
171+
'com.android.support:recyclerview-v7:' + androidSupportVersion,
156172
'com.viewpagerindicator:library:2.4.1@aar',
157-
'com.doomonafireball.betterpickers:library:1.6.0',
158-
'com.commonsware.cwac:merge:1.1.+',
159-
'com.github.PhilJay:MPAndroidChart:v2.1.0',
173+
'com.code-troopers.betterpickers:library:2.0.3',
174+
'org.jraf:android-switch-backport:2.0.1@aar',
175+
'com.github.PhilJay:MPAndroidChart:v2.1.3',
160176
'joda-time:joda-time:2.7',
177+
'org.ocpsoft.prettytime:prettytime:3.2.7.Final',
161178
'com.google.android.gms:play-services-drive:7.0.0',
162-
'com.crashlytics.android:crashlytics:1.+'
179+
'com.jakewharton:butterknife:7.0.1',
180+
'com.kobakei:ratethisapp:0.0.3',
181+
'com.squareup:android-times-square:1.6.4@aar',
182+
'com.github.techfreak:wizardpager:1.0.0',
183+
'net.objecthunter:exp4j:0.4.5'
163184
)
164185

165-
testCompile('org.robolectric:robolectric:3.0-rc2',
186+
compile ('com.uservoice:uservoice-android-sdk:1.2.+') {
187+
exclude module: 'commons-logging'
188+
exclude module: 'httpcore'
189+
exclude module: 'httpclient'
190+
}
191+
192+
compile('com.crashlytics.sdk.android:crashlytics:2.5.0@aar') {
193+
transitive = true;
194+
}
195+
196+
testCompile('org.robolectric:robolectric:3.0',
166197
'junit:junit:4.12',
167198
'org.assertj:assertj-core:1.7.1'
168199
)
169-
androidTestCompile 'com.android.support.test:runner:0.2'
170-
androidTestCompile 'com.android.support.test:rules:0.2'
171-
androidTestCompile('com.squareup.assertj:assertj-android:1.0.0'){
200+
androidTestCompile ('com.android.support:support-annotations:' + androidSupportVersion,
201+
'com.android.support.test:runner:' + androidSupportTestVersion,
202+
'com.android.support.test:rules:' + androidSupportTestVersion,
203+
'com.android.support.test.espresso:espresso-core:' + androidEspressoVersion)
204+
androidTestCompile ('com.android.support.test.espresso:espresso-contrib:' + androidEspressoVersion) {
205+
exclude group: 'com.android.support', module: 'support-v4'
206+
exclude module: 'recyclerview-v7'
207+
}
208+
209+
androidTestCompile('com.squareup.assertj:assertj-android:1.1.0'){
172210
exclude group: 'com.android.support', module:'support-annotations'
173211
}
174-
androidTestCompile ('com.android.support.test.espresso:espresso-core:2.1')
175-
androidTestCompile 'com.android.support:support-annotations:22.1.1'
176-
}
212+
}

app/proguard-project.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,8 @@
2323
protected Object[][] getContents();
2424
}
2525

26+
-keep class android.support.v7.widget.SearchView { *; }
27+
2628
-keep public class com.google.android.gms.common.internal.safeparcel.SafeParcelable {
2729
public static final *** NULL;
2830
}

app/project.properties

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#proguard.config=${sdk.dir}/tools/proguard/proguard-android.txt:proguard-project.txt
1212

1313
# Project target.
14-
target=android-18
15-
android.library.reference.1=gen-external-apklibs/com.actionbarsherlock_actionbarsherlock_4.4.0
16-
android.library.reference.2=gen-external-apklibs/com.viewpagerindicator_library_2.4.1
17-
14+
target=android-21
15+
android.library.reference.1=build/intermediates/exploded-aar/com.android.support/support-v4/22.2.1
16+
android.library.reference.2=build/intermediates/exploded-aar/com.android.support/appcompat-v7/22.2.1

0 commit comments

Comments
 (0)