μλ
νμΈμ μ¬λ¬λΆ,
μ΄λ¦: flutter_app
μ€λͺ
: μλ‘μ΄ Flutter μ ν리μΌμ΄μ
μ
λλ€.
λ²μ : 1.1.0+1
νκ²½:
SDK: ">=2.1.0 <3.0.0"
μμ‘΄μ±:
μ€λ£© 거리λ€:
SDK: νλ¬ν°
cupertino_icons: ^0.1.2
μμΉμΆμ κΈ°: ^3.0.1
κΆν μ²λ¦¬κΈ°: ^3.0.0
λ©ν: ^1.1.6
google_api_availability: ^2.0.0
dev_dependencies:
flutter_test:
SDK: νλ¬ν°
flutter_launcher_icons: ^0.6.1
flutter_icons:
image_path: "μμ°/img/location.png"
μλλ‘μ΄λ: μ¬μ€
μ€λ£© 거리λ€:
μ¬λ£ λμμΈ μ¬μ©: μ¬μ€
μμ°:
- μμ°/img/location.png
- μμ°/img/gps.png
- μμ°/img/no_gps.png
κ°μ Έμ€κΈ° ' ν¨ν€μ§:flutter/material.dart ';
κ°μ Έμ€κΈ° ' ν¨ν€μ§:geolocator/geolocator.dart ';
ν΄λμ€ LocationPage νμ₯ StatefulWidget {
@μ°μΈνλ€
LocationPageState createState() => LocationPageState();
}
ν΄λμ€ LocationPageStateλ μνλ₯Ό νμ₯ν©λλ€.
μ΄κΈ°ν μμΉ() λΉλκΈ°{
μμΉ μμΉ = λκΈ° Geolocator().getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
μΈμ(μμΉ);
}
μ΄κΈ°ν μν() {
super.initState();
μ΄κΈ°ν μμΉ();
}
@μ°μΈνλ€
μμ ― λΉλ(BuildContext 컨ν
μ€νΈ) {
λ¦¬ν΄ μ€μΊν΄λ(...);
}
flutter_appμμ "flutter packages get" μ€ν... 0.6s
λλ²κ·Έ λͺ¨λμ MI 6μμ lib/main.dart μμ μ€...
Gradle μ΄κΈ°ν μ€...
μ’
μμ± ν΄κ²° μ€...
Gradle μμ
'assembleDebug' μ€ν μ€...
FAILURE: μμΈμ ν¨κ» λΉλμ μ€ν¨νμ΅λλ€.
무μμ΄ μλͺ»λμλμ§:
μμ
': app:preDebugBuild 'μ λν μ€νμ μ€ν¨νμ΅λλ€.
Android μ’ μμ± 'androidx. core:core 'μλ μ»΄νμΌ(1.0.0) λ° λ°νμ(1.0.1) ν΄λμ€ κ²½λ‘μ λν λ²μ μ΄ λ€λ¦ λλ€. DependencyResolutionμ ν΅ν΄ λμΌν λ²μ μ μλμΌλ‘ μ€μ ν΄μΌ ν©λλ€.
λ
Έλ ₯νλ€:
--stacktrace μ΅μ
κ³Ό ν¨κ» μ€ννμ¬ μ€ν μΆμ μ κ°μ Έμ΅λλ€. λ λ§μ λ‘κ·Έ μΆλ ₯μ μ»μΌλ €λ©΄ --info λλ --debug μ΅μ
κ³Ό ν¨κ» μ€ννμμμ€. μ 체 ν΅μ°°λ ₯μ μ»μΌλ €λ©΄ --scanκ³Ό ν¨κ» μ€ννμμμ€.
https://help.gradle.org μμ λ λ§μ λμ λ°κΈ°
4μ΄ λ§μ κ΅¬μΆ μ€ν¨
Gradle μ€λ₯λ μ΄ Flutter μ±μ AndroidX λΉνΈνμ± λλ¬ΈμΌ μ μμ΅λλ€.
λ¬Έμ λ° ν΄κ²° λ°©λ²μ λν μμΈν λ΄μ©μ https://goo.gl/CP92wY λ₯Ό μ°Έμ‘°
μ€λ₯λ‘ μλ£λ¨: Gradle μμ assembleDebugκ° μ’ λ£ μ½λ 1κ³Ό ν¨κ» μ€ν¨νμ΅λλ€.
νλ¬ν° λ° -d
λ²μ : 3.0.1
νλ«νΌ:
[β] Flutter(Mac OS X 10.13.6 17G65μμ μμ μ μΈ μ±λ, v1.2.1, λ‘μΌμΌ en-UA)
[β] Android λꡬ λͺ¨μ - Android κΈ°κΈ°μ© κ°λ°(Android SDK λ²μ 28.0.3)
[β] iOS ν΄μ²΄μΈ - iOS κΈ°κΈ°μ© κ°λ°(Xcode 10.1)
[β] μλλ‘μ΄λ μ€νλμ€(λ²μ 3.3)
[β] VS μ½λ(λ²μ 1.31.1)
[β] μ°κ²°λ μ₯μΉ(1κ° μ¬μ© κ°λ₯)
β’ λ°κ²¬λ λ¬Έμ κ° μμ΅λλ€!
λλ₯Ό μν΄ gradle μμ± νμΌμ Android λ§μ΄κ·Έλ μ΄μ μ μΆκ°ν λ€μ ν΄λμ€ κ²½λ‘ 'com.android.tools.xml'μ λ³κ²½νμ΅λλ€. build:gradle :3.2.1'μ ν΄λμ€ κ²½λ‘ 'com.android.tools. λΉλ:κ·ΈλΌλ€ :3.3.1'. μ λ Geolocator 3.0.1μ μ¬μ©νκ³ μμ΅λλ€. μ΄ λ§ν¬λ₯Ό λ°λ₯΄μμμ€ https://www.youtube.com/watch?v=ZRl4t2KdEHQ κ·Έλ° λ€μ μμμ λ§ν κ²μ μν
λ
λλ₯Ό μν΄ gradle μμ± νμΌμ Android λ§μ΄κ·Έλ μ΄μ μ μΆκ°ν λ€μ ν΄λμ€ κ²½λ‘ 'com.android.tools.xml'μ λ³κ²½νμ΅λλ€. build:gradle :3.2.1'μ ν΄λμ€ κ²½λ‘ 'com.android.tools. λΉλ:κ·ΈλΌλ€ :3.3.1'. μ λ Geolocator 3.0.1μ μ¬μ©νκ³ μμ΅λλ€. μ΄ λ§ν¬λ₯Ό λ°λ₯΄μμμ€ https://www.youtube.com/watch?v=ZRl4t2KdEHQ κ·Έλ° λ€μ μμμ λ§ν κ²μ μν
λ΄κ° μΆκ°νμ λ (android.useAndroidX=true
android.enableJetifier=true)
gradle μμ± λλΆμ μλνμ΅λλ€.
@aidooyaw1992 κ°μ¬ν©λλ€. ν΄λμ€ κ²½λ‘λ₯Ό 3.3.1λ‘ λ³κ²½νλ©΄ μ μκ²λ
λ
λλ₯Ό μν΄ gradle μμ± νμΌμ Android λ§μ΄κ·Έλ μ΄μ μ μΆκ°ν λ€μ ν΄λμ€ κ²½λ‘ 'com.android.tools.xml'μ λ³κ²½νμ΅λλ€. build:gradle :3.2.1'μ ν΄λμ€ κ²½λ‘ 'com.android.tools. λΉλ:κ·ΈλΌλ€ :3.3.1'. μ λ Geolocator 3.0.1μ μ¬μ©νκ³ μμ΅λλ€. μ΄ λ§ν¬λ₯Ό λ°λ₯΄μμμ€ https://www.youtube.com/watch?v=ZRl4t2KdEHQ κ·Έλ° λ€μ μμμ λ§ν κ²μ μν
λ΄κ° μΆκ°νμ λ (android.useAndroidX=true
android.enableJetifier=true)
gradle μμ± λλΆμ μλνμ΅λλ€.
λλμ΄ μΈνΈλ₯Ό κ°μ§κ³ μμκ³ λμΌν λ¬Έμ κ° λ°μνμ΅λλ€.
λλ₯Ό μν΄ ν΄κ²° λ κ²μ @aidooyaw1992 μ νμ΄μκ³ ν΄λμ€ κ²½λ‘λ₯Ό gradle:3.3.1 λ‘ λ³κ²½νμ΅λλ€
κ°μ¬ν©λλ€, @aidooyaw1992!
μ²λ§μμ
2019λ
3μ 18μΌ μμμΌ, 17:17 Matheus Henrique de Oliveira, <
[email protected]>μ λ€μκ³Ό κ°μ΄ μΌμ΅λλ€.
λ
λλ₯Ό μν΄ gradle μμ± νμΌμ Android λ§μ΄κ·Έλ μ΄μ μ μΆκ°νκ³
κ·Έλ° λ€μ ν΄λμ€ κ²½λ‘ 'com.android.tools.xml'μ λ³κ²½νμ΅λλ€. build:gradle :3.2.1'μ ν΄λμ€ κ²½λ‘λ‘
'com.android.tools. λΉλ:κ·ΈλΌλ€ :3.3.1'. μ λ Geolocator 3.0.1μ μ¬μ©νκ³ μμ΅λλ€. λ°λ₯΄λ€
μ΄ λ§ν¬ https://www.youtube.com/watch?v=ZRl4t2KdEHQ λ€μ λ΄κ° 무μμ
μμμ λ§νλ€λ΄κ° μΆκ°νμ λ (android.useAndroidX=true
android.enableJetifier=true)
gradle μμ± λλΆμ μλνμ΅λλ€.λλμ΄ μΈνΈλ₯Ό κ°μ§κ³ μμκ³ λμΌν λ¬Έμ κ° λ°μνμ΅λλ€.
λλ₯Ό μν΄ ν΄κ²°λ κ²μ @aidooyaw1992μ νμ΄μμ΅λλ€.
https://github.com/aidooyaw1992 , ν΄λμ€ κ²½λ‘λ₯Ό gradle:3.3.1 λ‘ λ³κ²½ν©λλ€κ°μ¬ν©λλ€, @aidooyaw1992 https://github.com/aidooyaw1992 !
β
λΉμ μ΄ μΈκΈλμκΈ° λλ¬Έμ μ΄κ²μ λ°λ κ²μ λλ€.
μ΄ μ΄λ©μΌμ μ§μ λ΅μ₯νκ³ GitHubμμ νμΈνμΈμ.
https://github.com/BaseflowIT/flutter-geolocator/issues/228#issuecomment-474014943 ,
λλ μ€λ λ μμκ±°
https://github.com/notifications/unsubscribe-auth/AIG4X9VG3JH5L3NctGCqQ0NzTDuWl3XGks5vX8obgaJpZM4brXKj
.
μ°Έμ‘°: https://github.com/Lyokone/flutterlocation/issues/117
λΉμ·ν΄ 보μΈλ€.
μΉκ΅¬κ° μμ΅λλ€ ... λμΌν λ¬Έμ μ μ§λ©΄νμ¬ ν΄λμ€ κ²½λ‘λ₯Ό 3.2.1μμ gradle:3.3.0 (3.3.1μ΄ μλ)μΌλ‘ λ³κ²½νμ¬ ν΄κ²°νμ΅λλ€. λν (android.useAndroidX=true
android.enableJetifier=true) to gradle.properties ....
μ΄λ μͺ½μ΄ κ·Έλ κ² νλμ§ νμ€νμ§ μμ΅λλ€...
κ³ λ§μμ, νΌν° ν...
μ¬λ¬λΆ, μ΄λ€ νμΌμμ λ³κ²½νλμ§ μλ €μ£Όμλ©΄ λ§€μ° μ’μ κ²μ
λλ€. com.android.tools.build:gradle:
κ²μνλλ° 1κ°μ μΌμΉ νλͺ©μ μ°Ύμμ§λ§ μ΄μ λ€λ₯Έ μ€λ₯κ° λ°μν©λλ€.
Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
> com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives:
νΈμ§νλ€:
classPath λ³κ²½μ Android ν΄λμ 루νΈ, build.gradle
λ κ°μ λΆμΈ κ°μ Android ν΄λμ 루νΈμΈ gradle.properties
νμΌμλ μμ΅λλ€. λ μ€λ§ μΆκ°νλ©΄ λ©λλ€.
μ΄μ μλν©λλ€.
μμ±μ μμλ‘ λ³κ²½νλ κ²μ μννμ§ μμ΅λκΉ? κ·Έκ²μ μ¬μ ν ββμ΄μ Android λ²μ κ³Ό νΈνλ©λκΉ?
@Robuste , λ¬Έμ λ Geolocator νλ¬κ·ΈμΈμ΄ AndroidXλ₯Ό μ§μνλλ‘ μ κ·Έλ μ΄λνλ€λ κ²μ λλ€(μ΄μ Android λ²μ κ³Όλ μ¬μ ν νΈν κ°λ₯). μ¦, λ€μ μ§μΉ¨μ λ°λΌ μνν μ μλ μ±λ μ κ·Έλ μ΄λν΄μΌ ν©λλ€.
https://github.com/BaseflowIT/flutter-geolocator/issues/196#issuecomment -465460801
μ± μμ€μμ μ€ν¬λ¦½νΈ μΆκ° μλ
νμ νλ‘μ νΈ {
project.evaluationDependsOn(': μ±')
project.configurations.all {
resolutionStrategy.eachDependency { μΈλΆ μ 보 ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('λ©ν°λ±μ€') ) {
details.useλ²μ "28.0.0"
}
}
}
}
if (details.requested.group == 'androidx.core'
&& !details.requested.name.contains('androidx') ) {
details.useλ²μ "1.0.1"
}
λΉλ νλ‘μ νΈμ android.enableJetifier=true λ° android.useAndroidX=trueλ₯Ό μΆκ°νκ³ ν΄λμ€ κ²½λ‘λ₯Ό 3.3.1λ‘ λ³κ²½νμ¬ μ λλ‘ μλν©λλ€.
λ€μμ λ΄ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€.
(1) gradle μμ±μ λ μ€ μΆκ°
android.enableJetifier=μ°Έ
android.useAndroidX=μ°Έ
(2) λ£¨νΈ gradleμ λ€μ μΆκ°
νμ νλ‘μ νΈ {
project.evaluationDependsOn(': μ±')
project.configurations.all {
resolutionStrategy.eachDependency { μΈλΆ μ 보 ->
if (details.requested.group == 'com.android.support'
&& !details.requested.name.contains('λ©ν°λ±μ€') ) {
details.useλ²μ "29.0.0"
}
}
}
}
μ λ₯Ό μν΄ Android λ§μ΄κ·Έλ μ΄μ μ gradle μμ± νμΌμ μΆκ°ν λ€μ classpath'com.android.tools.build :gradle :3.2.1'μ classpath'com.android.tools.build :gradle : 3.3μΌλ‘ λ³κ²½νμ΅λλ€. 1'. μΈμ€ν΄νΈ λ©μμ§μ geolocator 3.0.1μ μ¬μ©νκ³ μμ΅λλ€.μ΄ λ§ν¬λ₯Ό λ°λΌ https://www.youtube.com/watch?v=ZRl4t2KdEHQ νκ³ μμμ λ§ν λλ‘ λ΄ λ¬Έμ λ₯Ό ν΄κ²°νμμμ€. κ°μ¬ν©λλ€.
λλ₯Ό μν΄ μΌν aidooyaw1992μκ² κ°μ¬λ립λλ€.
λ΄κ° κ°μ§ λ λ€λ₯Έ λ¬Έμ λ intl 0.16μ΄ flutter_localizationsμ νΈνλμ§ μμ§λ§ λ€μμ μ μΈν μ μλ€λ κ²μ
λλ€.
μμ‘΄μ±:
...
flutter_localizations:
SDK: νλ¬ν°
κ΅μ : 0.15.8
...
κ·Έλ° λ€μ μ¬μ μ
μ’
μμ± μ¬μ μ:
κ΅μ : ^0.16.0
intl ^0.16.0μ λν μ’ μμ±μ λν΄ μλν©λλ€.
κ°μ₯ μ μ©ν λκΈ
λλ₯Ό μν΄ gradle μμ± νμΌμ Android λ§μ΄κ·Έλ μ΄μ μ μΆκ°ν λ€μ ν΄λμ€ κ²½λ‘ 'com.android.tools.xml'μ λ³κ²½νμ΅λλ€. build:gradle :3.2.1'μ ν΄λμ€ κ²½λ‘ 'com.android.tools. λΉλ:κ·ΈλΌλ€ :3.3.1'. μ λ Geolocator 3.0.1μ μ¬μ©νκ³ μμ΅λλ€. μ΄ λ§ν¬λ₯Ό λ°λ₯΄μμμ€ https://www.youtube.com/watch?v=ZRl4t2KdEHQ κ·Έλ° λ€μ μμμ λ§ν κ²μ μν