Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Android開発においての自動化あれこれ
Search
Rui
November 20, 2024
520
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Android開発においての自動化あれこれ
Rui
November 20, 2024
More Decks by Rui
See All by Rui
Protoファイルを使用しないProto DataStore実装
ruit
0
340
Featured
See All Featured
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
340
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
4.6k
Practical Orchestrator
shlominoach
192
12k
Building AI with AI
inesmontani
PRO
1
1.3k
The #1 spot is gone: here's how to win anyway
tamaranovitovic
4
1.2k
Building a Scalable Design System with Sketch
lauravandoore
464
34k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.5k
Visualization
eitanlees
153
17k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
25
2.1k
HTML-Aware ERB: The Path to Reactive Rendering @ RubyCon 2026, Rimini, Italy
marcoroth
5
750
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
780
Transcript
"OESPJE։ൃʹ͓͍ͯͷࣗಈԽ ͋Ε͜Ε 3VJ
3VJ OPUF "OESPJEΤϯδχΞ ,:050ϫούʔ͕ؾʹͳΔ
w ߦͳͬͨࣗಈԽ w ΠϯύΫτ͕͋ͬͨͷΛհͦͷ w ΠϯύΫτ͕͋ͬͨͷΛհͦͷ
ߦͳͬͨࣗಈԽ w ϦϦʔεϒϥϯν13࡞ɺ(PPHMF1MBZͷࣗಈΞοϓϩʔυ w ϦϦʔεϊʔτ13࡞ɺ4MBDL௨ w ,UMJOUνΣοΫ w 1VMM3FRVFTUʹMBCFMɺNJMFTUPOFɺBTTJHOFFΛࣗಈઃఆ w
1VMM3FRVFTUΛ"*ʹཁ
,UMJOUͱ w ,UMJOUɺ,PUMJOͷίʔυελΠϧΛνΣοΫ͠ɺࣗಈͰमਖ਼ͯ͘͠ΕΔπʔ ϧͰ͢ɻ w ,PUMJOͷίʔσΟϯάنͱ"OESPJE,PUMJOελΠϧΨΠυʹԊͬͯίʔυ Λܗ͠·͢ɻ ࢀরIUUQTQJOUFSFTUHJUIVCJPLUMJOUMBUFTU
,UMJOUͷࣗಈԽͰߦͳͬͨ͜ͱ w త13ʹ,UMJOUͰࢦఠ͞Εͨमਖ਼Օॴͷఏࣔ w ༻ͨ͠πʔϧ4QPUMFTTɺ3FWJFXEPH ࢀߟIUUQTRJJUBDPNUBLBIJSPNJUFNTBEF
,UMJOUͷࣗಈԽͰߦͳͬͨ͜ͱ name: ktLint-checker on: [ pull_request ] jobs: kotlin: name:
runner / suggester / spotless runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up JDK 17 uses: actions/setup-java@v4 with: java-version: '17' distribution: 'temurin' - run: ./gradlew ktlintFormat - run: ./gradlew spotlessKotlinApply - uses: reviewdog/action-suggester@v1 with: github_token: ${{ secrets.GITHUB_TOKEN }} tool_name: spotless w HJUIVCXPSL fl PXTLUMJOU DIFDLFSZNMͰ࡞͢Δ w TQPUMFTT,PUMJO"QQMZͰ,UMJOUʹԊ͏ Α͏ʹमਖ਼ͯ͠ɺSFWJFXEPXͰ TVHHFTUJPO͢Δ
,UMJOUͷࣗಈԽͰߦͳͬͨ͜ͱ tasks.register("ktlintFormat", JavaExec::class.java) { description = "Fix Kotlin code style
deviations." mainClass.set("com.pinterest.ktlint.Main") classpath = ktlint group = "formatting" args = listOf("-F", "src/**/*.kt") jvmArgs = listOf("--add-opens", "java.base/ java.lang=ALL-UNNAMED") } w TQPUMFTT,PUMJO"QQMZͷΈͩͱม ͯ͘͠Εͳ͍ͱ͜Ζ͕͋ͬͨͷͰɺ CVJMEHSBEMFLUTʹࣗ࡞Ͱ,UMJOUͰ ϑΥʔϚοτνΣοΫΛߦ͏ɻ
,UMJOUͷࣗಈԽͰߦͳͬͨ͜ͱ w 13Λ࡞ͨ͠ࡍʹɺ,UMJOUͷϑΥʔ ϚοτʹԊͬͨ4VHHFTUJPOΛͯ͘͠ ΕΔΑ͏ʹͳΓ·͢ɻ
,UMJOUͷࣗಈԽΛͯ͠Α͔ͬͨ͜ͱ w νʔϜͰͷίʔυελΠϧͷ౷Ұ w ίʔυ࣭ͷ্
(PPHMF1MBZͷࣗಈΞοϓϩʔυ w తϦϦʔεϒϥϯνʹίϛοτ͞ΕΔͨͼʹɺ(PPHMF1MBZͷࣗಈΞο ϓϩʔυ w ༻ͨ͠πʔϧ$JSDMF$*ɺ'BTUMBOF w ϦϦʔεϒϥϯνͷӡ༻εϓϦϯτຖͷ࣮͕ऴ͍ྃͯ͠Δஈ֊Ͱ࡞͠ ͯɺෆ۩߹मਖ਼͕͋ͬͨΒमਖ਼ΛؚΉɻ
$JSDMF$*ϑϩʔ
όʔδϣϯߋ৽ ৽ͨͳ $PNNJU WFSTJPO$PEF ߋ৽ $PNNJU WFSTJPO$PEF 6QMPBEUP (PPHMFQMBZ
όʔδϣϯίʔυΛߋ৽ - &update_version_code name: "commit & push update versionCode" command:
| git config user.email “
[email protected]
” git config user.name "note Android auto committer" git pull origin $(git branch --show-current) ./gradlew updateVersionCode git add note/app_version.properties git commit -m "[ci skip][auto commit] update to versionCode" git push origin HEAD w DJSDMFDJDPO fi HZNM w HJUDPO fi HͰϢʔβʔใΛઃఆ w $JSDMF$*ͷϏϧυ͕࠶ͼߦΘΕͳ͍ Α͏ʹ<DJTLJQ>Λ͚ͭΔ
όʔδϣϯίʔυΛߋ৽ // app_version.properties versionName=8.21.0 versionCode=366 // build.gradle.kts tasks.register("updateVersionCode") { doLast
{ val appVersionPropertyFile = "app_version.properties" val propertyKeyVersionCode = "versionCode" val propertyFile = file(appVersionPropertyFile) val props = loadProperties(propertyFile) val nextVersionCode = props.getProperty(propertyKeyVersionCode).toInt() + 1 props.setProperty(propertyKeyVersionCode, nextVersionCode.toString()) props.store(propertyFile.writer(), null) } } fun loadProperties(file: File): Properties { val props = Properties() file.inputStream().use { props.load(it) } return props } w BQQ@WFSTJPOQSPQFSUJFTʹόʔδϣ ϯίʔυΛఆٛ w #VJMEHSBEMFLUTͰ্هͷόʔδϣ ϯίʔυΛΠϯΫϦϝϯτ͢Δ
(PPHMF1MBZͷࣗಈΞοϓϩʔυ - &deploy_google_play_console name: "Deploy Google Play Console" command: |
bundle exec fastlane deploy w ࠷ޙʹGBTUMBOF༻ͯ͠ɺEFQMPZ͢ Δ
ࣗಈԽΛͯ͠Α͔ͬͨ͜ͱ w ϦϦʔεϒϥϯνΛ࡞͔ͯ͠Βɺίϛοτ͞ΕΔͨͼʹΞοϓϩʔυͯ͠ ͍ΔͷͰɺجຊతʹ৮Βͳ͍ͰΦοέʔ w ϦϦʔεपΓΛखಈͰΒͳ͍͍ͯ͘ͷͰɺਓతϛε͕গͳ͘ͳΔ w ݱࡏɺ4MBDLͷϫʔΫϑϩʔ͔Β;BQJFSΛ༻ͯ͠ɺϒϥϯνɺ13Λ࡞͠ ͯɺ(PPHMFQMBZͷΞοϓϩʔυɺ4MBDL௨·Ͱߦͳ͍ͬͯ·͢ɻ
5IBOLZPV