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
74a90860
Unverified
Commit
74a90860
authored
Feb 22, 2019
by
Dan Field
Committed by
GitHub
Feb 22, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Revert "Allow for gradle downloading missing SDK assets (#28097)" (#28295)
This reverts commit
6f5e88a5
.
parent
98455df4
Changes
12
Hide whitespace changes
Inline
Side-by-side
Showing
12 changed files
with
33 additions
and
201 deletions
+33
-201
android_device.dart
packages/flutter_tools/lib/src/android/android_device.dart
+1
-1
android_sdk.dart
packages/flutter_tools/lib/src/android/android_sdk.dart
+6
-30
android_workflow.dart
packages/flutter_tools/lib/src/android/android_workflow.dart
+5
-13
apk.dart
packages/flutter_tools/lib/src/android/apk.dart
+10
-2
gradle.dart
packages/flutter_tools/lib/src/android/gradle.dart
+0
-15
application_package.dart
packages/flutter_tools/lib/src/application_package.dart
+0
-3
user_messages.dart
packages/flutter_tools/lib/src/base/user_messages.dart
+2
-15
android_device_test.dart
packages/flutter_tools/test/android/android_device_test.dart
+1
-8
android_sdk_test.dart
packages/flutter_tools/test/android/android_sdk_test.dart
+0
-1
android_workflow_test.dart
...ges/flutter_tools/test/android/android_workflow_test.dart
+2
-22
application_package_test.dart
packages/flutter_tools/test/application_package_test.dart
+0
-77
mocks.dart
packages/flutter_tools/test/src/mocks.dart
+6
-14
No files found.
packages/flutter_tools/lib/src/android/android_device.dart
View file @
74a90860
...
...
@@ -372,7 +372,7 @@ class AndroidDevice extends Device {
if
(
buildInfo
.
targetPlatform
==
null
&&
devicePlatform
==
TargetPlatform
.
android_arm64
)
buildInfo
=
buildInfo
.
withTargetPlatform
(
TargetPlatform
.
android_arm64
);
if
(!
prebuiltApplication
||
androidSdk
.
licensesAvailable
&&
androidSdk
.
latestVersion
==
null
)
{
if
(!
prebuiltApplication
)
{
printTrace
(
'Building APK'
);
final
FlutterProject
project
=
await
FlutterProject
.
current
();
await
buildApk
(
...
...
packages/flutter_tools/lib/src/android/android_sdk.dart
View file @
74a90860
...
...
@@ -263,7 +263,7 @@ class AndroidNdk {
class
AndroidSdk
{
AndroidSdk
(
this
.
directory
,
[
this
.
ndk
])
{
reinitialize
();
_init
();
}
static
const
String
_javaHomeEnvironmentVariable
=
'JAVA_HOME'
;
...
...
@@ -278,23 +278,6 @@ class AndroidSdk {
List
<
AndroidSdkVersion
>
_sdkVersions
;
AndroidSdkVersion
_latestVersion
;
/// Whether the `platform-tools` directory exists in the Android SDK.
///
/// It is possible to have an Android SDK folder that is missing this with
/// the expectation that it will be downloaded later, e.g. by gradle or the
/// sdkmanager. The [licensesAvailable] property should be used to determine
/// whether the licenses are at least possibly accepted.
bool
get
platformToolsAvailable
=>
fs
.
directory
(
fs
.
path
.
join
(
directory
,
'platform-tools'
)).
existsSync
();
/// Whether the `licenses` directory exists in the Android SDK.
///
/// The existence of this folder normally indicates that the SDK licenses have
/// been accepted, e.g. via the sdkmanager, Android Studio, or by copying them
/// from another workstation such as in CI scenarios. If these files are valid
/// gradle or the sdkmanager will be able to download and use other parts of
/// the SDK on demand.
bool
get
licensesAvailable
=>
fs
.
directory
(
fs
.
path
.
join
(
directory
,
'licenses'
)).
existsSync
();
static
AndroidSdk
locateAndroidSdk
()
{
String
findAndroidHomeDir
()
{
String
androidHomeDir
;
...
...
@@ -365,7 +348,7 @@ class AndroidSdk {
}
static
bool
validSdkDirectory
(
String
dir
)
{
return
fs
.
isDirectorySync
(
fs
.
path
.
join
(
dir
,
'
license
s'
));
return
fs
.
isDirectorySync
(
fs
.
path
.
join
(
dir
,
'
platform-tool
s'
));
}
List
<
AndroidSdkVersion
>
get
sdkVersions
=>
_sdkVersions
;
...
...
@@ -393,8 +376,8 @@ class AndroidSdk {
/// Validate the Android SDK. This returns an empty list if there are no
/// issues; otherwise, it returns a list of issues found.
List
<
String
>
validateSdkWellFormed
()
{
if
(
adbPath
==
null
||
!
processManager
.
canRun
(
adbPath
))
return
<
String
>[
'Android SDK file not found:
$
{adbPath ?? 'adb'}
.'
];
if
(!
processManager
.
canRun
(
adbPath
))
return
<
String
>[
'Android SDK file not found:
$
adbPath
.'
];
if
(
sdkVersions
.
isEmpty
||
latestVersion
==
null
)
{
final
StringBuffer
msg
=
StringBuffer
(
'No valid Android SDK platforms found in
${_platformsDir.path}
.'
);
...
...
@@ -413,10 +396,7 @@ class AndroidSdk {
}
String
getPlatformToolsPath
(
String
binaryName
)
{
final
String
path
=
fs
.
path
.
join
(
directory
,
'platform-tools'
,
binaryName
);
if
(
fs
.
file
(
path
).
existsSync
())
return
path
;
return
null
;
return
fs
.
path
.
join
(
directory
,
'platform-tools'
,
binaryName
);
}
String
getEmulatorPath
()
{
...
...
@@ -440,11 +420,7 @@ class AndroidSdk {
return
null
;
}
/// Sets up various paths used internally.
///
/// This method should be called in a case where the tooling may have updated
/// SDK artifacts, such as after running a gradle build.
void
reinitialize
()
{
void
_init
()
{
List
<
Version
>
buildTools
=
<
Version
>[];
// 19.1.0, 22.0.1, ...
final
Directory
buildToolsDir
=
fs
.
directory
(
fs
.
path
.
join
(
directory
,
'build-tools'
));
...
...
packages/flutter_tools/lib/src/android/android_workflow.dart
View file @
74a90860
...
...
@@ -105,11 +105,6 @@ class AndroidValidator extends DoctorValidator {
return
ValidationResult
(
ValidationType
.
missing
,
messages
);
}
if
(
androidSdk
.
licensesAvailable
&&
!
androidSdk
.
platformToolsAvailable
)
{
messages
.
add
(
ValidationMessage
.
hint
(
userMessages
.
androidSdkLicenseOnly
(
kAndroidHome
)));
return
ValidationResult
(
ValidationType
.
partial
,
messages
);
}
messages
.
add
(
ValidationMessage
(
userMessages
.
androidSdkLocation
(
androidSdk
.
directory
)));
messages
.
add
(
ValidationMessage
(
androidSdk
.
ndk
==
null
...
...
@@ -254,9 +249,7 @@ class AndroidLicenseValidator extends DoctorValidator {
}
}
if
(!
_canRunSdkManager
())
{
return
LicensesAccepted
.
unknown
;
}
_ensureCanRunSdkManager
();
final
Process
process
=
await
runCommand
(
<
String
>[
androidSdk
.
sdkManagerPath
,
'--licenses'
],
...
...
@@ -286,9 +279,7 @@ class AndroidLicenseValidator extends DoctorValidator {
return
false
;
}
if
(!
_canRunSdkManager
())
{
throwToolExit
(
userMessages
.
androidMissingSdkManager
(
androidSdk
.
sdkManagerPath
));
}
_ensureCanRunSdkManager
();
final
Version
sdkManagerVersion
=
Version
.
parse
(
androidSdk
.
sdkManagerVersion
);
if
(
sdkManagerVersion
==
null
||
sdkManagerVersion
.
major
<
26
)
{
...
...
@@ -315,9 +306,10 @@ class AndroidLicenseValidator extends DoctorValidator {
return
exitCode
==
0
;
}
static
bool
_c
anRunSdkManager
()
{
static
void
_ensureC
anRunSdkManager
()
{
assert
(
androidSdk
!=
null
);
final
String
sdkManagerPath
=
androidSdk
.
sdkManagerPath
;
return
processManager
.
canRun
(
sdkManagerPath
);
if
(!
processManager
.
canRun
(
sdkManagerPath
))
throwToolExit
(
userMessages
.
androidMissingSdkManager
(
sdkManagerPath
));
}
}
packages/flutter_tools/lib/src/android/apk.dart
View file @
74a90860
...
...
@@ -8,6 +8,7 @@ import 'package:meta/meta.dart';
import
'../base/common.dart'
;
import
'../build_info.dart'
;
import
'../globals.dart'
;
import
'../project.dart'
;
import
'android_sdk.dart'
;
...
...
@@ -31,11 +32,18 @@ Future<void> buildApk({
if
(
androidSdk
==
null
)
throwToolExit
(
'No Android SDK found. Try setting the ANDROID_SDK_ROOT environment variable.'
);
await
buildGradleProject
(
final
List
<
String
>
validationResult
=
androidSdk
.
validateSdkWellFormed
();
if
(
validationResult
.
isNotEmpty
)
{
for
(
String
message
in
validationResult
)
{
printError
(
message
,
wrap:
false
);
}
throwToolExit
(
'Try re-installing or updating your Android SDK.'
);
}
return
buildGradleProject
(
project:
project
,
buildInfo:
buildInfo
,
target:
target
,
isBuildingBundle:
false
);
androidSdk
.
reinitialize
();
}
packages/flutter_tools/lib/src/android/gradle.dart
View file @
74a90860
...
...
@@ -111,21 +111,6 @@ Future<GradleProject> _gradleProject() async {
return
_cachedGradleProject
;
}
/// Runs `gradlew dependencies`, ensuring that dependencies are resolved and
/// potentially downloaded.
Future
<
void
>
checkGradleDependencies
()
async
{
final
Status
progress
=
logger
.
startProgress
(
'Ensuring gradle dependencies are up to date...'
,
timeout:
kSlowOperation
);
final
FlutterProject
flutterProject
=
await
FlutterProject
.
current
();
final
String
gradle
=
await
_ensureGradle
(
flutterProject
);
await
runCheckedAsync
(
<
String
>[
gradle
,
'dependencies'
],
workingDirectory:
flutterProject
.
android
.
hostAppGradleRoot
.
path
,
environment:
_gradleEnv
,
);
androidSdk
.
reinitialize
();
progress
.
stop
();
}
// Note: Dependencies are resolved and possibly downloaded as a side-effect
// of calculating the app properties using Gradle. This may take minutes.
Future
<
GradleProject
>
_readGradleProject
()
async
{
...
...
packages/flutter_tools/lib/src/application_package.dart
View file @
74a90860
...
...
@@ -34,9 +34,6 @@ class ApplicationPackageFactory {
case
TargetPlatform
.
android_arm64
:
case
TargetPlatform
.
android_x64
:
case
TargetPlatform
.
android_x86
:
if
(
androidSdk
?.
licensesAvailable
==
true
&&
androidSdk
.
latestVersion
==
null
)
{
await
checkGradleDependencies
();
}
return
applicationBinary
==
null
?
await
AndroidApk
.
fromAndroidProject
((
await
FlutterProject
.
current
()).
android
)
:
AndroidApk
.
fromApk
(
applicationBinary
);
...
...
packages/flutter_tools/lib/src/base/user_messages.dart
View file @
74a90860
...
...
@@ -45,15 +45,6 @@ class UserMessages {
String
androidCantRunJavaBinary
(
String
javaBinary
)
=>
'Cannot execute
$javaBinary
to determine the version'
;
String
get
androidUnknownJavaVersion
=>
'Could not determine java version'
;
String
androidJavaVersion
(
String
javaVersion
)
=>
'Java version
$javaVersion
'
;
String
androidSdkLicenseOnly
(
String
envKey
)
=>
'Android SDK contains licenses only.
\n
'
'Your first build of an Android application will take longer than usual, '
'while gradle downloads the missing components. This functionality will '
'only work if the licenses in the licenses folder in
$envKey
are valid.
\n
'
'If the Android SDK has been installed to another location, set
$envKey
to that location.
\n
'
'You may also want to add it to your PATH environment variable.
\n\n
'
'Certain features, such as `flutter emulators` and `flutter devices`, will '
'not work without the currently missing SDK components.'
;
String
androidBadSdkDir
(
String
envKey
,
String
homeDir
)
=>
'
$envKey
=
$homeDir
\n
'
'but Android SDK not found at this location.'
;
...
...
@@ -62,7 +53,7 @@ class UserMessages {
'Install Android Studio from: https://developer.android.com/studio/index.html
\n
'
'On first launch it will assist you in installing the Android SDK components.
\n
'
'(or visit https://flutter.io/setup/#android-setup for detailed instructions).
\n
'
'If
the
Android SDK has been installed to a custom location, set
$envKey
to that location.
\n
'
'If Android SDK has been installed to a custom location, set
$envKey
to that location.
\n
'
'You may also want to add it to your PATH environment variable.
\n
'
;
String
androidSdkLocation
(
String
directory
)
=>
'Android SDK at
$directory
'
;
String
androidSdkPlatformToolsVersion
(
String
platform
,
String
tools
)
=>
...
...
@@ -84,11 +75,7 @@ class UserMessages {
String
get
androidLicensesAll
=>
'All Android licenses accepted.'
;
String
get
androidLicensesSome
=>
'Some Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses'
;
String
get
androidLicensesNone
=>
'Android licenses not accepted. To resolve this, run: flutter doctor --android-licenses'
;
String
get
androidLicensesUnknown
=>
'Android license status unknown.
\n
'
'Try re-installing or updating your Android SDK Manager.
\n
'
'See https://developer.android.com/studio/#downloads or visit '
'https://flutter.io/setup/#android-setup for detailed instructions.'
;
String
get
androidLicensesUnknown
=>
'Android license status unknown.'
;
String
androidSdkManagerOutdated
(
String
managerPath
)
=>
'A newer version of the Android SDK is required. To update, run:
\n
'
'
$managerPath
--update
\n
'
;
...
...
packages/flutter_tools/test/android/android_device_test.dart
View file @
74a90860
...
...
@@ -27,23 +27,16 @@ void main() {
});
group
(
'getAdbDevices'
,
()
{
final
MockProcessManager
mockProcessManager
=
MockProcessManager
();
testUsingContext
(
'throws on missing adb path'
,
()
{
final
Directory
sdkDir
=
MockAndroidSdk
.
createSdkDirectory
();
Config
.
instance
.
setValue
(
'android-sdk'
,
sdkDir
.
path
);
final
File
adbExe
=
fs
.
file
(
getAdbPath
(
androidSdk
));
when
(
mockProcessManager
.
runSync
(
<
String
>[
adbExe
.
path
,
'devices'
,
'-l'
],
))
.
thenAnswer
(
(
_
)
=>
throw
ArgumentError
(
adbExe
.
path
),
);
adbExe
.
deleteSync
();
expect
(()
=>
getAdbDevices
(),
throwsToolExit
(
message:
RegExp
(
'Unable to run "adb".*
${adbExe.path}
'
)));
},
overrides:
<
Type
,
Generator
>{
AndroidSdk:
()
=>
MockAndroidSdk
(),
FileSystem:
()
=>
MemoryFileSystem
(),
ProcessManager:
()
=>
mockProcessManager
,
});
testUsingContext
(
'physical devices'
,
()
{
...
...
packages/flutter_tools/test/android/android_sdk_test.dart
View file @
74a90860
...
...
@@ -226,7 +226,6 @@ class MockBrokenAndroidSdk extends Mock implements AndroidSdk {
})
{
final
Directory
dir
=
fs
.
systemTempDirectory
.
createTempSync
(
'flutter_mock_android_sdk.'
);
_createSdkFile
(
dir
,
'licenses/dummy'
);
_createSdkFile
(
dir
,
'platform-tools/adb'
);
_createSdkFile
(
dir
,
'build-tools/sda/aapt'
);
...
...
packages/flutter_tools/test/android/android_workflow_test.dart
View file @
74a90860
...
...
@@ -42,12 +42,11 @@ void main() {
return
(
List
<
String
>
command
)
=>
MockProcess
(
stdout:
stdoutStream
);
}
testUsingContext
(
'licensesAccepted
returns LicensesAccepted.unknown
if cannot run sdkmanager'
,
()
async
{
testUsingContext
(
'licensesAccepted
throws
if cannot run sdkmanager'
,
()
async
{
processManager
.
succeed
=
false
;
when
(
sdk
.
sdkManagerPath
).
thenReturn
(
'/foo/bar/sdkmanager'
);
final
AndroidLicenseValidator
licenseValidator
=
AndroidLicenseValidator
();
final
LicensesAccepted
licenseStatus
=
await
licenseValidator
.
licensesAccepted
;
expect
(
licenseStatus
,
LicensesAccepted
.
unknown
);
expect
(
licenseValidator
.
licensesAccepted
,
throwsToolExit
());
},
overrides:
<
Type
,
Generator
>{
AndroidSdk:
()
=>
sdk
,
FileSystem:
()
=>
fs
,
...
...
@@ -179,27 +178,8 @@ void main() {
Stdio:
()
=>
stdio
,
});
testUsingContext
(
'detects license-only SDK installation'
,
()
async
{
when
(
sdk
.
licensesAvailable
).
thenReturn
(
true
);
when
(
sdk
.
platformToolsAvailable
).
thenReturn
(
false
);
final
ValidationResult
validationResult
=
await
AndroidValidator
().
validate
();
expect
(
validationResult
.
type
,
ValidationType
.
partial
);
expect
(
validationResult
.
messages
.
last
.
message
,
userMessages
.
androidSdkLicenseOnly
(
kAndroidHome
),
);
},
overrides:
<
Type
,
Generator
>{
AndroidSdk:
()
=>
sdk
,
FileSystem:
()
=>
fs
,
Platform:
()
=>
FakePlatform
()..
environment
=
<
String
,
String
>{
'HOME'
:
'/home/me'
},
ProcessManager:
()
=>
processManager
,
Stdio:
()
=>
stdio
,
});
testUsingContext
(
'detects minium required SDK and buildtools'
,
()
async
{
final
AndroidSdkVersion
mockSdkVersion
=
MockAndroidSdkVersion
();
when
(
sdk
.
licensesAvailable
).
thenReturn
(
true
);
when
(
sdk
.
platformToolsAvailable
).
thenReturn
(
true
);
// Test with invalid SDK and build tools
when
(
mockSdkVersion
.
sdkLevel
).
thenReturn
(
26
);
...
...
packages/flutter_tools/test/application_package_test.dart
View file @
74a90860
...
...
@@ -3,24 +3,18 @@
// found in the LICENSE file.
import
'dart:convert'
;
import
'dart:io'
show
ProcessResult
;
import
'package:file/file.dart'
;
import
'package:file/memory.dart'
;
import
'package:flutter_tools/src/base/platform.dart'
;
import
'package:flutter_tools/src/build_info.dart'
;
import
'package:flutter_tools/src/cache.dart'
;
import
'package:flutter_tools/src/project.dart'
;
import
'package:mockito/mockito.dart'
;
import
'package:flutter_tools/src/application_package.dart'
;
import
'package:flutter_tools/src/android/android_sdk.dart'
;
import
'package:flutter_tools/src/base/context.dart'
;
import
'package:flutter_tools/src/base/file_system.dart'
;
import
'package:flutter_tools/src/base/logger.dart'
;
import
'package:flutter_tools/src/base/os.dart'
;
import
'package:flutter_tools/src/ios/ios_workflow.dart'
;
import
'package:process/process.dart'
;
import
'src/common.dart'
;
import
'src/context.dart'
;
...
...
@@ -30,78 +24,7 @@ final Map<Type, Generator> noColorTerminalOverride = <Type, Generator>{
Platform:
_kNoColorTerminalPlatform
,
};
class
MockitoProcessManager
extends
Mock
implements
ProcessManager
{}
class
MockitoAndroidSdk
extends
Mock
implements
AndroidSdk
{}
class
MockitoAndroidSdkVersion
extends
Mock
implements
AndroidSdkVersion
{}
void
main
(
)
{
group
(
'Apk with partial Android SDK works'
,
()
{
AndroidSdk
sdk
;
ProcessManager
mockProcessManager
;
MemoryFileSystem
fs
;
File
gradle
;
final
Map
<
Type
,
Generator
>
overrides
=
<
Type
,
Generator
>{
AndroidSdk:
()
=>
sdk
,
ProcessManager:
()
=>
mockProcessManager
,
FileSystem:
()
=>
fs
,
};
setUp
(()
async
{
sdk
=
MockitoAndroidSdk
();
mockProcessManager
=
MockitoProcessManager
();
fs
=
MemoryFileSystem
();
Cache
.
flutterRoot
=
'../..'
;
when
(
sdk
.
licensesAvailable
).
thenReturn
(
true
);
when
(
mockProcessManager
.
canRun
(
any
)).
thenReturn
(
true
);
when
(
mockProcessManager
.
run
(
any
,
workingDirectory:
anyNamed
(
'workingDirectory'
),
environment:
anyNamed
(
'environment'
),
)).
thenAnswer
((
_
)
async
=>
ProcessResult
(
1
,
0
,
'stdout'
,
'stderr'
));
when
(
mockProcessManager
.
runSync
(
any
)).
thenReturn
(
ProcessResult
(
1
,
0
,
'stdout'
,
'stderr'
));
final
FlutterProject
project
=
await
FlutterProject
.
current
();
gradle
=
fs
.
file
(
project
.
android
.
hostAppGradleRoot
.
childFile
(
platform
.
isWindows
?
'gradlew.bat'
:
'gradlew'
,
).
path
)..
createSync
(
recursive:
true
);
});
testUsingContext
(
'Licenses available, build tools not, apk exists'
,
()
async
{
when
(
sdk
.
latestVersion
).
thenReturn
(
null
);
final
FlutterProject
project
=
await
FlutterProject
.
current
();
final
File
gradle
=
project
.
android
.
hostAppGradleRoot
.
childFile
(
platform
.
isWindows
?
'gradlew.bat'
:
'gradlew'
,
)..
createSync
(
recursive:
true
);
await
ApplicationPackageFactory
.
instance
.
getPackageForPlatform
(
TargetPlatform
.
android_arm
,
applicationBinary:
fs
.
file
(
'app.apk'
),
);
verify
(
mockProcessManager
.
run
(
argThat
(
equals
(<
String
>[
gradle
.
path
,
'dependencies'
])),
workingDirectory:
anyNamed
(
'workingDirectory'
),
environment:
anyNamed
(
'environment'
),
),
).
called
(
1
);
},
overrides:
overrides
);
testUsingContext
(
'Licenses available, build tools available, does not call gradle dependencies'
,
()
async
{
final
AndroidSdkVersion
sdkVersion
=
MockitoAndroidSdkVersion
();
when
(
sdk
.
latestVersion
).
thenReturn
(
sdkVersion
);
await
ApplicationPackageFactory
.
instance
.
getPackageForPlatform
(
TargetPlatform
.
android_arm
,
);
verifyNever
(
mockProcessManager
.
run
(
argThat
(
equals
(<
String
>[
gradle
.
path
,
'dependencies'
])),
workingDirectory:
anyNamed
(
'workingDirectory'
),
environment:
anyNamed
(
'environment'
),
),
);
},
overrides:
overrides
);
});
group
(
'ApkManifestData'
,
()
{
test
(
'Parses manifest with an Activity that has enabled set to true, action set to android.intent.action.MAIN and category set to android.intent.category.LAUNCHER'
,
()
{
final
ApkManifestData
data
=
ApkManifestData
.
parseFromXmlDump
(
_aaptDataWithExplicitEnabledAndMainLauncherActivity
);
...
...
packages/flutter_tools/test/src/mocks.dart
View file @
74a90860
...
...
@@ -44,24 +44,16 @@ class MockAndroidSdk extends Mock implements AndroidSdk {
int
ndkVersion
=
16
,
bool
withNdkSysroot
=
false
,
bool
withSdkManager
=
true
,
bool
withPlatformTools
=
true
,
bool
withBuildTools
=
true
,
})
{
final
Directory
dir
=
fs
.
systemTempDirectory
.
createTempSync
(
'flutter_mock_android_sdk.'
);
_create
Dir
(
dir
,
'licenses
'
);
_create
SdkFile
(
dir
,
'platform-tools/adb
'
);
if
(
withPlatformTools
)
{
_createSdkFile
(
dir
,
'platform-tools/adb'
);
}
if
(
withBuildTools
)
{
_createSdkFile
(
dir
,
'build-tools/19.1.0/aapt'
);
_createSdkFile
(
dir
,
'build-tools/22.0.1/aapt'
);
_createSdkFile
(
dir
,
'build-tools/23.0.2/aapt'
);
if
(
withAndroidN
)
_createSdkFile
(
dir
,
'build-tools/24.0.0-preview/aapt'
);
}
_createSdkFile
(
dir
,
'build-tools/19.1.0/aapt'
);
_createSdkFile
(
dir
,
'build-tools/22.0.1/aapt'
);
_createSdkFile
(
dir
,
'build-tools/23.0.2/aapt'
);
if
(
withAndroidN
)
_createSdkFile
(
dir
,
'build-tools/24.0.0-preview/aapt'
);
_createSdkFile
(
dir
,
'platforms/android-22/android.jar'
);
_createSdkFile
(
dir
,
'platforms/android-23/android.jar'
);
...
...
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