Skip to content

Commit

Permalink
merged
Browse files Browse the repository at this point in the history
  • Loading branch information
shikajiro committed Feb 7, 2018
2 parents 13fc8e9 + a6f997c commit e29e94c
Show file tree
Hide file tree
Showing 94 changed files with 519 additions and 517 deletions.
21 changes: 7 additions & 14 deletions .circleci/config.yml
Expand Up @@ -9,8 +9,6 @@ jobs:
GRADLE_OPTS: '-Dorg.gradle.daemon=false -Dorg.gradle.jvmargs="-Xmx1536m -XX:+HeapDumpOnOutOfMemoryError"'
steps:
- checkout
- restore_cache:
key: sdks-licenses-build-tools-extras-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- restore_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
- restore_cache:
Expand All @@ -25,48 +23,42 @@ jobs:
- run:
name: Download Dependencies
command: ./gradlew androidDependencies
- save_cache:
key: sdks-licenses-build-tools-extras-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
paths:
- /opt/android/sdk/licenses
- /opt/android/sdk/build-tools
- /opt/android/sdk/extras
- save_cache:
key: jars-{{ checksum "build.gradle" }}-{{ checksum "app/build.gradle" }}
paths:
- ~/.gradle
- run:
name: decrypt keystore
command: |
if [ $CIRCLE_BRANCH = 'master' ]; then
if [ $CIRCLE_BRANCH = 'master' -o $CIRCLE_BRANCH = 'release' ]; then
openssl aes-256-cbc -k $KEYSTORE_DECRYPT_PASSWORD -d -in encrypted-droidkaigi-key -out release.keystore
fi
- run:
name: decrypt json
command: |
if [ $CIRCLE_BRANCH = 'master' ]; then
if [ $CIRCLE_BRANCH = 'master' -o $CIRCLE_BRANCH = 'release' ]; then
openssl aes-256-cbc -k $JSON_DECRYPT_PASSWORD -d -in encrypted-google-services.json -out app/google-services.json
fi
- run:
name: Test
command: |
if [ $CIRCLE_BRANCH = 'master' ]; then
if [ $CIRCLE_BRANCH = 'master' -o $CIRCLE_BRANCH = 'release' ]; then
./gradlew --stacktrace testRelease
else
./gradlew --stacktrace test${APP_BUILD_TYPE^}
fi
- run:
name: Build
command: |
if [ $CIRCLE_BRANCH = 'master' ]; then
if [ $CIRCLE_BRANCH = 'master' -o $CIRCLE_BRANCH = 'release' ]; then
./gradlew --offline --stacktrace assembleRelease
else
./gradlew --offline --stacktrace assemble${APP_BUILD_TYPE^}
fi
- run:
name: Check
command: |
if [ ! $CIRCLE_BRANCH = 'master' ]; then
if [ ! $CIRCLE_BRANCH = 'master' -a ! $CIRCLE_BRANCH = 'release' ]; then
./gradlew --stacktrace lint${APP_BUILD_TYPE^}
./gradlew --stacktrace ktlint${APP_BUILD_TYPE^}Check
bundle exec danger
Expand All @@ -78,7 +70,8 @@ jobs:
./gradlew :app:uploadDeployGateRelease
elif [[ "${CIRCLE_TAG}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Deploy to Google Play"
./gradlew clean assembleRelease publishApkRelease
openssl aes-256-cbc -k $PUBLISHER_KEYS_JSON_DECRYPT_PASSWORD -d -in encrypted-publisher-keys.json -out app/publisher-keys.json
./gradlew publishApkRelease
fi
- store_artifacts:
path: app/build/reports
Expand Down
16 changes: 15 additions & 1 deletion README.md
Expand Up @@ -251,6 +251,19 @@ SessionsFragment.kt
})
```
## Release
The release process is automated by using [gradle-play-publisher](https://github.com/Triple-T/gradle-play-publisher).
When we add `git tag`, CI deploys the release apk to GooglePlay alpha.
To know more details, see [.circleci/config.yml](https://github.com/DroidKaigi/conference-app-2018/blob/master/.circleci/config.yml)
```shell
elif [[ "${CIRCLE_TAG}" =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
echo "Deploy to Google Play"
openssl aes-256-cbc -k $PUBLISHER_KEYS_JSON_DECRYPT_PASSWORD -d -in encrypted-publisher-keys.json -out app/publisher-keys.json
./gradlew publishApkRelease
fi
```
## iOS App with Kotlin/Native and Kotlin Multiplatform Projects
Some contributors are challenging to develop iOS app with [Kotlin/Native](https://kotlinlang.org/docs/reference/native-overview.html) and [Kotlin Multiplatform Projects](https://kotlinlang.org/docs/reference/multiplatform.html).
We are watching this project.
Expand Down Expand Up @@ -290,7 +303,7 @@ This project uses some modern Android libraries and source codes.
* Firebase
* [Cloud Firestore](https://firebase.google.com/docs/firestore/)
* [Auth](https://firebase.google.com/docs/auth/)
* [Dagger2](https://google.github.io/dagger/), Dagger Android Support, [Glide4](https://bumptech.github.io/glide/) - Google
* [KTX](https://github.com/android/android-ktx/), [Dagger2](https://google.github.io/dagger/), Dagger Android Support, [Glide4](https://bumptech.github.io/glide/) - Google
* [Kotlin](http://kotlinlang.org/) - JetBrains
* [Retrofit2](http://square.github.io/retrofit/), [Moshi](https://github.com/square/moshi/) - Square
* [RxJava2](https://github.com/ReactiveX/RxJava), [RxKotlin](https://github.com/ReactiveX/RxKotlin), RxAndroid - ReactiveX
Expand All @@ -304,6 +317,7 @@ This project uses some modern Android libraries and source codes.
* [RxBroadcast](https://github.com/cantrowitz/RxBroadcast) - cantrowitz
* [ProgressTimeLatch](https://github.com/chrisbanes/tivi/blob/96e7cae7560ffd358b8c58c47267ed1024df53f6/app/src/main/java/me/banes/chris/tivi/ui/ProgressTimeLatch.kt) - chrisbanes
* [Google I/O 2017](https://github.com/google/iosched)
* [DebouncingOnClickListener](https://github.com/JakeWharton/butterknife/blob/e78507711fe8a7c637ee61c44a7b09f1be8ff9f6/butterknife/src/main/java/butterknife/internal/DebouncingOnClickListener.java) - JakeWharton
## License
Expand Down
12 changes: 7 additions & 5 deletions app/build.gradle.kts
Expand Up @@ -24,8 +24,8 @@ plugins {
}

// Manifest version
val versionMajor = 0
val versionMinor = 1
val versionMajor = 1
val versionMinor = 0
val versionPatch = 0

android {
Expand Down Expand Up @@ -118,6 +118,7 @@ dependencies {

// Kotlin
implementation(Depends.Kotlin.stdlib)
implementation(Depends.ktx)

// //==================== Support Library ====================
implementation(Depends.Support.support_v4)
Expand Down Expand Up @@ -222,10 +223,11 @@ repositories {
}

play {
uploadImages = true
setTrack("alpha") // 'production' or 'rollout' or 'beta' or 'alpha'
untrackOld = true
// userFraction = 0.1
jsonFile = file("publisher-keys.json")
setTrack("beta") // 'production' or 'rollout' or 'beta' or 'alpha'
// userFraction = 0.1

}

ktlint {
Expand Down
12 changes: 0 additions & 12 deletions app/publisher_keys.json

This file was deleted.

@@ -1,12 +1,18 @@
package io.github.droidkaigi.confsched2018.test

import dagger.android.AndroidInjector
import dagger.android.support.DaggerApplication
import io.github.droidkaigi.confsched2018.di.DaggerAppComponent
import io.github.droidkaigi.confsched2018.presentation.App
import io.github.droidkaigi.confsched2018.test.di.TestAppInjector
import io.github.droidkaigi.confsched2018.test.di.StubDatabaseModule
import io.github.droidkaigi.confsched2018.test.di.StubNetworkModule

class TestApp : App() {

override fun setupDagger() {
TestAppInjector.init(this)
override fun applicationInjector(): AndroidInjector<out DaggerApplication> {
return DaggerAppComponent.builder()
.application(this)
.networkModule(StubNetworkModule())
.databaseModule(StubDatabaseModule())
.build()
}

}

This file was deleted.

Expand Up @@ -36,14 +36,14 @@ class ContributorDataRepository @Inject constructor(
if (DEBUG) it.forEach { Timber.d("$it") }
contributorDatabase.save(it)
}
.subscribeOn(schedulerProvider.computation())
.subscribeOn(schedulerProvider.io())
.toCompletable()
}

override val contributors: Flowable<List<Contributor>> =
contributorDatabase.getAll()
.map { it.toContributors() }
.subscribeOn(schedulerProvider.computation())
.subscribeOn(schedulerProvider.io())

companion object {
private const val OWNER = "DroidKaigi"
Expand Down
Expand Up @@ -68,7 +68,7 @@ class SessionDataRepository @Inject constructor(

speakerSessions + specialSessions
})
.subscribeOn(schedulerProvider.computation())
.subscribeOn(schedulerProvider.io())
.doOnNext {
if (DEBUG) Timber.d("size:${it.size} current:${System.currentTimeMillis()}")
}
Expand Down Expand Up @@ -145,7 +145,7 @@ class SessionDataRepository @Inject constructor(
.doOnSuccess { response ->
sessionDatabase.save(response)
}
.subscribeOn(schedulerProvider.computation())
.subscribeOn(schedulerProvider.io())
.toCompletable()
}

Expand All @@ -164,7 +164,7 @@ class SessionDataRepository @Inject constructor(

@CheckResult override fun saveSessionFeedback(sessionFeedback: SessionFeedback): Completable =
Completable.create { sessionDatabase.saveSessionFeedback(sessionFeedback) }
.subscribeOn(schedulerProvider.computation())
.subscribeOn(schedulerProvider.io())

@CheckResult override fun submitSessionFeedback(
session: Session.SpeechSession,
Expand All @@ -183,7 +183,7 @@ class SessionDataRepository @Inject constructor(
.flatMapCompletable {
return@flatMapCompletable saveSessionFeedback(sessionFeedback)
}
.subscribeOn(schedulerProvider.computation())
.subscribeOn(schedulerProvider.io())

companion object {
const val DEBUG = false
Expand Down
Expand Up @@ -30,6 +30,6 @@ class SponsorPlanDataRepository @Inject constructor(
}.doOnSuccess {
val plansResponse = it
sponsorDatabase.save(plansResponse.toSponsorsEntities())
}.subscribeOn(schedulerProvider.computation())
}.subscribeOn(schedulerProvider.io())
.toCompletable()
}
Expand Up @@ -17,11 +17,11 @@ class StaffDataRepository @Inject constructor(
private val schedulerProvider: SchedulerProvider
) : StaffRepository {
@CheckResult override fun loadStaff(): Completable = getStaff()
.subscribeOn(schedulerProvider.computation())
.subscribeOn(schedulerProvider.io())
.toCompletable()

override val staff: Flowable<List<Staff>>
get() = getStaff().toFlowable().subscribeOn(schedulerProvider.computation())
get() = getStaff().toFlowable().subscribeOn(schedulerProvider.io())

@CheckResult private fun getStaff(): Single<List<Staff>> {
return Single.create { emitter ->
Expand Down
Expand Up @@ -3,7 +3,8 @@ package io.github.droidkaigi.confsched2018.di
import android.app.Application
import dagger.BindsInstance
import dagger.Component
import dagger.android.AndroidInjectionModule
import dagger.android.AndroidInjector
import dagger.android.support.AndroidSupportInjectionModule
import io.github.droidkaigi.confsched2018.di.activitymodule.AboutThisAppActivityBuilder
import io.github.droidkaigi.confsched2018.di.activitymodule.ContributorsActivityBuilder
import io.github.droidkaigi.confsched2018.di.activitymodule.MainActivityBuilder
Expand All @@ -21,7 +22,7 @@ import javax.inject.Singleton

@Singleton
@Component(modules = [
AndroidInjectionModule::class,
AndroidSupportInjectionModule::class,
AppModule::class,
NetworkModule::class,
DatabaseModule::class,
Expand All @@ -39,7 +40,7 @@ import javax.inject.Singleton
TopicDetailActivityBuilder::class,
SessionsFeedbackActivityBuilder::class
])
interface AppComponent {
interface AppComponent : AndroidInjector<App> {
@Component.Builder
interface Builder {
@BindsInstance fun application(application: Application): Builder
Expand All @@ -48,5 +49,5 @@ interface AppComponent {
fun build(): AppComponent
}

fun inject(app: App)
override fun inject(app: App)
}

0 comments on commit e29e94c

Please sign in to comment.