Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
Front-End
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
abdullh.alsoleman
Front-End
Commits
d8a5f3d1
Unverified
Commit
d8a5f3d1
authored
1 year ago
by
chunhtai
Committed by
GitHub
1 year ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Improves output file path logic in Android analyze (#136981)
parent
2dc81113
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
39 additions
and
22 deletions
+39
-22
flutter.groovy
packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
+2
-2
android_builder.dart
packages/flutter_tools/lib/src/android/android_builder.dart
+3
-1
gradle.dart
packages/flutter_tools/lib/src/android/gradle.dart
+10
-2
android_analyze.dart
packages/flutter_tools/lib/src/commands/android_analyze.dart
+1
-2
project.dart
packages/flutter_tools/lib/src/project.dart
+6
-5
android_analyze_test.dart
...ls/test/commands.shard/hermetic/android_analyze_test.dart
+4
-1
android_gradle_builder_test.dart
...st/general.shard/android/android_gradle_builder_test.dart
+7
-2
android_gradle_outputs_app_link_settings_test.dart
....shard/android_gradle_outputs_app_link_settings_test.dart
+4
-4
android_common.dart
packages/flutter_tools/test/src/android_common.dart
+2
-3
No files found.
packages/flutter_tools/gradle/src/main/groovy/flutter.groovy
View file @
d8a5f3d1
...
...
@@ -752,7 +752,7 @@ class FlutterPlugin implements Plugin<Project> {
//
// See https://developer.android.com/training/app-links/ for more information about app link.
//
// The json will be s
tored in <project>/build/app/app-link-settings-<variant>.json
// The json will be s
aved in path stored in outputPath parameter.
//
// An example json:
// {
...
...
@@ -830,7 +830,7 @@ class FlutterPlugin implements Plugin<Project> {
}
}
def
generator
=
new
JsonGenerator
.
Options
().
build
()
new
File
(
project
.
buildDir
,
"app-link-settings-${variant.name}.json"
).
write
(
generator
.
toJson
(
appLinkSettings
))
new
File
(
project
.
getProperty
(
"outputPath"
)
).
write
(
generator
.
toJson
(
appLinkSettings
))
}
}
}
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/lib/src/android/android_builder.dart
View file @
d8a5f3d1
...
...
@@ -44,7 +44,9 @@ abstract class AndroidBuilder {
Future
<
List
<
String
>>
getBuildVariants
({
required
FlutterProject
project
});
/// Outputs app link related project settings into a json file.
Future
<
void
>
outputsAppLinkSettings
(
///
/// The return future resolves to the path of the json file.
Future
<
String
>
outputsAppLinkSettings
(
String
buildVariant
,
{
required
FlutterProject
project
,
});
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/lib/src/android/gradle.dart
View file @
d8a5f3d1
...
...
@@ -810,16 +810,22 @@ class AndroidGradleBuilder implements AndroidBuilder {
}
@override
Future
<
void
>
outputsAppLinkSettings
(
Future
<
String
>
outputsAppLinkSettings
(
String
buildVariant
,
{
required
FlutterProject
project
,
})
async
{
final
String
taskName
=
_getOutputAppLinkSettingsTaskFor
(
buildVariant
);
final
Directory
directory
=
await
project
.
buildDirectory
.
childDirectory
(
'deeplink_data'
).
create
(
recursive:
true
);
final
String
outputPath
=
globals
.
fs
.
path
.
join
(
directory
.
absolute
.
path
,
'app-link-settings-
$buildVariant
.json'
,
);
final
Stopwatch
sw
=
Stopwatch
()
..
start
();
final
RunResult
result
=
await
_runGradleTask
(
taskName
,
options:
const
<
String
>[
'-q
'
],
options:
<
String
>[
'-q'
,
'-PoutputPath=
$outputPath
'
],
project:
project
,
);
_usage
.
sendTiming
(
'outputs'
,
'app link settings'
,
sw
.
elapsed
);
...
...
@@ -827,7 +833,9 @@ class AndroidGradleBuilder implements AndroidBuilder {
if
(
result
.
exitCode
!=
0
)
{
_logger
.
printStatus
(
result
.
stdout
,
wrap:
false
);
_logger
.
printError
(
result
.
stderr
,
wrap:
false
);
throwToolExit
(
result
.
stderr
);
}
return
outputPath
;
}
}
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/lib/src/commands/android_analyze.dart
View file @
d8a5f3d1
...
...
@@ -48,8 +48,7 @@ class AndroidAnalyze {
logger
.
printStatus
(
jsonEncode
(
await
project
.
android
.
getBuildVariants
()));
case
AndroidAnalyzeOption
.
outputAppLinkSettings
:
assert
(
buildVariant
!=
null
);
await
project
.
android
.
outputsAppLinkSettings
(
variant:
buildVariant
!);
final
String
filePath
=
fileSystem
.
path
.
join
(
project
.
directory
.
path
,
'build'
,
'app'
,
'app-link-settings-
$buildVariant
.json`'
);
final
String
filePath
=
await
project
.
android
.
outputsAppLinkSettings
(
variant:
buildVariant
!);
logger
.
printStatus
(
'result saved in
$filePath
'
);
}
}
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/lib/src/project.dart
View file @
d8a5f3d1
...
...
@@ -501,13 +501,14 @@ class AndroidProject extends FlutterProjectPlatform {
/// Outputs app link related settings into a json file.
///
/// The file is stored in
/// `<project>/build/app/app-link-settings-<variant>.json`.
Future
<
void
>
outputsAppLinkSettings
({
required
String
variant
})
async
{
/// The return future resolves to the path of the json file.
///
/// The future resolves to null if it fails to retrieve app link settings.
Future
<
String
>
outputsAppLinkSettings
({
required
String
variant
})
async
{
if
(!
existsSync
()
||
androidBuilder
==
null
)
{
return
;
throwToolExit
(
'Target directory
$hostAppGradleRoot
is not an Android project'
)
;
}
await
androidBuilder
!.
outputsAppLinkSettings
(
variant
,
project:
parent
);
return
androidBuilder
!.
outputsAppLinkSettings
(
variant
,
project:
parent
);
}
bool
_computeSupportedVersion
()
{
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/test/commands.shard/hermetic/android_analyze_test.dart
View file @
d8a5f3d1
...
...
@@ -94,6 +94,7 @@ void main() {
const
String
buildVariant
=
'release'
;
await
runner
.
run
(<
String
>[
'analyze'
,
'--android'
,
'--output-app-link-settings'
,
'--build-variant=
$buildVariant
'
,
tempDir
.
path
]);
expect
(
builder
.
outputVariant
,
buildVariant
);
expect
(
logger
.
statusText
,
contains
(
builder
.
outputPath
));
},
overrides:
<
Type
,
Generator
>{
AndroidBuilder:
()
=>
builder
,
});
...
...
@@ -116,6 +117,7 @@ void main() {
class
FakeAndroidBuilder
extends
Fake
implements
AndroidBuilder
{
List
<
String
>
variants
=
const
<
String
>[];
String
?
outputVariant
;
final
String
outputPath
=
'/'
;
@override
Future
<
List
<
String
>>
getBuildVariants
({
required
FlutterProject
project
})
async
{
...
...
@@ -123,7 +125,8 @@ class FakeAndroidBuilder extends Fake implements AndroidBuilder {
}
@override
Future
<
void
>
outputsAppLinkSettings
(
String
buildVariant
,
{
required
FlutterProject
project
})
async
{
Future
<
String
>
outputsAppLinkSettings
(
String
buildVariant
,
{
required
FlutterProject
project
})
async
{
outputVariant
=
buildVariant
;
return
outputPath
;
}
}
This diff is collapsed.
Click to expand it.
packages/flutter_tools/test/general.shard/android/android_gradle_builder_test.dart
View file @
d8a5f3d1
...
...
@@ -914,7 +914,9 @@ Gradle Crashed
AndroidStudio:
()
=>
FakeAndroidStudio
(),
});
testUsingContext
(
'can call custom gradle task getApplicationIdForVariant and parse the result'
,
()
async
{
testUsingContext
(
'can call custom gradle task outputFreeDebugAppLinkSettings and parse the result'
,
()
async
{
final
String
expectedOutputPath
;
expectedOutputPath
=
fileSystem
.
path
.
join
(
'/build/deeplink_data'
,
'app-link-settings-freeDebug.json'
);
final
AndroidGradleBuilder
builder
=
AndroidGradleBuilder
(
java:
FakeJava
(),
logger:
logger
,
...
...
@@ -927,10 +929,11 @@ Gradle Crashed
platform:
FakePlatform
(),
androidStudio:
FakeAndroidStudio
(),
);
processManager
.
addCommand
(
const
FakeCommand
(
processManager
.
addCommand
(
FakeCommand
(
command:
<
String
>[
'gradlew'
,
'-q'
,
'-PoutputPath=
$expectedOutputPath
'
,
'outputFreeDebugAppLinkSettings'
,
],
));
...
...
@@ -940,6 +943,8 @@ Gradle Crashed
);
},
overrides:
<
Type
,
Generator
>{
AndroidStudio:
()
=>
FakeAndroidStudio
(),
FileSystem:
()
=>
fileSystem
,
ProcessManager:
()
=>
processManager
,
});
testUsingContext
(
"doesn't indicate how to consume an AAR when printHowToConsumeAar is false"
,
()
async
{
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/test/integration.shard/android_gradle_outputs_app_link_settings_test.dart
View file @
d8a5f3d1
...
...
@@ -175,16 +175,16 @@ void main() {
expect
(
result
,
const
ProcessResultMatcher
());
final
Directory
androidApp
=
tempDir
.
childDirectory
(
'android'
);
final
io
.
File
fileDump
=
tempDir
.
childDirectory
(
'build'
).
childDirectory
(
'app'
).
childFile
(
'app-link-settings-debug.json'
);
result
=
await
processManager
.
run
(<
String
>[
'.
${platform.pathSeparator}${getGradlewFileName(platform)}
'
,
...
getLocalEngineArguments
(),
'-q'
,
// quiet output.
'-PoutputPath=
${fileDump.path}
'
,
'outputDebugAppLinkSettings'
,
],
workingDirectory:
androidApp
.
path
);
expect
(
result
,
const
ProcessResultMatcher
());
final
io
.
File
fileDump
=
tempDir
.
childDirectory
(
'build'
).
childDirectory
(
'app'
).
childFile
(
'app-link-settings-debug.json'
);
expect
(
fileDump
.
existsSync
(),
true
);
final
Map
<
String
,
dynamic
>
json
=
jsonDecode
(
fileDump
.
readAsStringSync
())
as
Map
<
String
,
dynamic
>;
expect
(
json
[
'applicationId'
],
'com.example.testapp'
);
...
...
@@ -220,16 +220,16 @@ void main() {
expect
(
result
,
const
ProcessResultMatcher
());
final
Directory
androidApp
=
tempDir
.
childDirectory
(
'android'
);
final
io
.
File
fileDump
=
tempDir
.
childDirectory
(
'build'
).
childDirectory
(
'app'
).
childFile
(
'app-link-settings-debug.json'
);
result
=
await
processManager
.
run
(<
String
>[
'.
${platform.pathSeparator}${getGradlewFileName(platform)}
'
,
...
getLocalEngineArguments
(),
'-q'
,
// quiet output.
'-PoutputPath=
${fileDump.path}
'
,
'outputDebugAppLinkSettings'
,
],
workingDirectory:
androidApp
.
path
);
expect
(
result
,
const
ProcessResultMatcher
());
final
io
.
File
fileDump
=
tempDir
.
childDirectory
(
'build'
).
childDirectory
(
'app'
).
childFile
(
'app-link-settings-debug.json'
);
expect
(
fileDump
.
existsSync
(),
true
);
final
Map
<
String
,
dynamic
>
json
=
jsonDecode
(
fileDump
.
readAsStringSync
())
as
Map
<
String
,
dynamic
>;
expect
(
json
[
'applicationId'
],
'com.example.testapp'
);
...
...
This diff is collapsed.
Click to expand it.
packages/flutter_tools/test/src/android_common.dart
View file @
d8a5f3d1
...
...
@@ -41,11 +41,10 @@ class FakeAndroidBuilder implements AndroidBuilder {
Future
<
List
<
String
>>
getBuildVariants
({
required
FlutterProject
project
})
async
=>
const
<
String
>[];
@override
Future
<
void
>
outputsAppLinkSettings
(
Future
<
String
>
outputsAppLinkSettings
(
String
buildVariant
,
{
required
FlutterProject
project
,
})
async
{}
})
async
=>
'/'
;
}
/// Creates a [FlutterProject] in a directory named [flutter_project]
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment