Skip to content

Commit f72971a

Browse files
committed
First step towards support for Android-O Preview API.
1 parent 70db991 commit f72971a

File tree

9 files changed

+67
-18
lines changed

9 files changed

+67
-18
lines changed

Configuration.props

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
<MonoSgenBridgeVersion Condition=" '$(MonoSgenBridgeVersion)' == '' ">5</MonoSgenBridgeVersion>
3232
<HOME Condition=" '$(HOME)' == '' ">$(HOMEDRIVE)$(HOMEPATH)</HOME>
3333
<AndroidApiLevel Condition=" '$(AndroidApiLevel)' == '' ">25</AndroidApiLevel>
34+
<AndroidPlatformId Condition=" '$(AndroidPlatformId)' == '' ">25</AndroidPlatformId>
3435
<AndroidPreviousFrameworkVersion Condition=" '$(AndroidPreviousFrameworkVersion)' == '' ">v1.0</AndroidPreviousFrameworkVersion>
3536
<AndroidLatestFrameworkVersion>v7.1</AndroidLatestFrameworkVersion>
3637
<AndroidFrameworkVersion Condition=" '$(AndroidFrameworkVersion)' == '' ">$(AndroidLatestFrameworkVersion)</AndroidFrameworkVersion>
@@ -56,7 +57,7 @@
5657
<AllSupported32BitTargetAndroidAbis>armeabi;armeabi-v7a;x86</AllSupported32BitTargetAndroidAbis>
5758
<AllSupported64BitTargetAndroidAbis>arm64-v8a;x86_64</AllSupported64BitTargetAndroidAbis>
5859
<AllSupportedTargetAndroidAbis>$(AllSupported32BitTargetAndroidAbis);$(AllSupported64BitTargetAndroidAbis)</AllSupportedTargetAndroidAbis>
59-
<XABuildToolsVersion>25.0.1</XABuildToolsVersion>
60+
<XABuildToolsVersion>26-rc1</XABuildToolsVersion>
6061
</PropertyGroup>
6162
<PropertyGroup>
6263
<_MingwPrefixTail Condition=" '$(HostOS)' == 'Darwin' ">.static</_MingwPrefixTail>

build-tools/android-toolchain/android-toolchain.projitems

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,11 @@
1515
<HostOS>Linux</HostOS>
1616
<DestDir>build-tools\$(XABuildToolsVersion)</DestDir>
1717
</AndroidSdkItem>
18-
<AndroidSdkItem Include="platform-tools_r23-linux.zip">
18+
<AndroidSdkItem Include="platform-tools_r25.0.4-linux.zip">
1919
<HostOS>Linux</HostOS>
2020
<DestDir>platform-tools</DestDir>
2121
</AndroidSdkItem>
22-
<AndroidSdkItem Include="tools_r24.4.1-linux.zip">
22+
<AndroidSdkItem Include="sdk-tools-linux-3773319.zip">
2323
<HostOS>Linux</HostOS>
2424
<DestDir>tools</DestDir>
2525
</AndroidSdkItem>
@@ -30,11 +30,11 @@
3030
<HostOS>Darwin</HostOS>
3131
<DestDir>build-tools\$(XABuildToolsVersion)</DestDir>
3232
</AndroidSdkItem>
33-
<AndroidSdkItem Include="platform-tools_r23-macosx.zip">
33+
<AndroidSdkItem Include="platform-tools_r25.0.4-darwin.zip">
3434
<HostOS>Darwin</HostOS>
3535
<DestDir>platform-tools</DestDir>
3636
</AndroidSdkItem>
37-
<AndroidSdkItem Include="tools_r24.4.1-macosx.zip">
37+
<AndroidSdkItem Include="sdk-tools-darwin-3773319.zip">
3838
<HostOS>Darwin</HostOS>
3939
<DestDir>tools</DestDir>
4040
</AndroidSdkItem>
@@ -86,6 +86,10 @@
8686
<HostOS></HostOS>
8787
<DestDir>platforms\android-25</DestDir>
8888
</AndroidSdkItem>
89+
<AndroidSdkItem Include="platform-O_r01.zip">
90+
<HostOS></HostOS>
91+
<DestDir>platforms\android-O</DestDir>
92+
</AndroidSdkItem>
8993
<AndroidSdkItem Include="android_m2repository_r16.zip">
9094
<HostOS></HostOS>
9195
<DestDir>extras\android\m2repository</DestDir>

build-tools/api-xml-adjuster/Makefile

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ RUNTIME = mono
1313
RUN_CLASS_PARSE = $(RUNTIME) $(CLASS_PARSE)
1414
RUN_API_XML_TOOL = $(RUNTIME) $(API_XML_TOOL)
1515
DOCS_DIR = .
16-
API_LEVELS = 10 15 16 17 18 19 20 21 22 23 24 25
16+
API_LEVELS = 10 15 16 17 18 19 20 21 22 23 24 25 O
1717

1818
XML_OUTPUT_DIR = .
1919

@@ -79,6 +79,9 @@ docs-%.zip:
7979
docs-25_web.zip:
8080
curl -L https://dl.dropboxusercontent.com/u/493047/2016/docs-25-web.zip > $@ || exit 1
8181

82+
docs-O_web.zip:
83+
curl -L https://www.dropbox.com/s/3xr11fpd08xpolg/docs-O-web.zip?dl=0 > $@ || exit 1
84+
8285
# API level 10 is Android v2.3.3; it's API level 9 (Android v2.3) with a few
8386
# bugfixes which don't impact the documentation.
8487
docs-api-10: docs-2.3_r01-linux.zip
@@ -118,3 +121,5 @@ docs-api-24: docs-24_r01.zip
118121
docs-api-25: docs-25_web.zip # Google hadn't published docs component yet!
119122
$(call extract-docs,$<,docs)
120123

124+
docs-api-O: docs-O_web.zip # No preview docs yet
125+
$(call extract-docs,$<,docs)

build-tools/scripts/BuildEverything.mk

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ ZIP_OUTPUT = $(ZIP_OUTPUT_BASENAME).zip
1515

1616

1717
# $(ALL_API_LEVELS) and $(ALL_FRAMEWORKS) must be kept in sync w/ each other
18-
ALL_API_LEVELS = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
19-
# this was different when API Level 21 was "L". Same could happen in the future.
20-
ALL_PLATFORM_IDS = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
18+
ALL_API_LEVELS = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
19+
# this was different from ALL_API_LEVELS when API Level 26 was "O". Same could happen in the future.
20+
ALL_PLATFORM_IDS = 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 O
2121
# supported api levels
22-
ALL_FRAMEWORKS = _ _ _ _ _ _ _ _ _ v2.3 _ _ _ _ v4.0.3 v4.1 v4.2 v4.3 v4.4 v4.4.87 v5.0 v5.1 v6.0 v7.0 v7.1
23-
API_LEVELS = 10 15 16 17 18 19 20 21 22 23 24 25
22+
ALL_FRAMEWORKS = _ _ _ _ _ _ _ _ _ v2.3 _ _ _ _ v4.0.3 v4.1 v4.2 v4.3 v4.4 v4.4.87 v5.0 v5.1 v6.0 v7.0 v7.1 v7.99.0
23+
API_LEVELS = 10 15 16 17 18 19 20 21 22 23 24 25 26
2424
STABLE_API_LEVELS = 10 15 16 17 18 19 20 21 22 23 24
2525

2626
FRAMEWORKS = $(foreach a, $(API_LEVELS), $(word $(a),$(ALL_FRAMEWORKS)))
@@ -99,7 +99,7 @@ framework-assemblies:
9999
if [ $$? -ne 0 ] ; then \
100100
rm -f bin/$(conf)/lib/xbuild-frameworks/MonoAndroid/$${CUR_VERSION}/RedistList/FrameworkList.xml; \
101101
fi; \
102-
$(MSBUILD) $(MSBUILD_FLAGS) src/Mono.Android/Mono.Android.csproj /p:Configuration=$(conf) $(_MSBUILD_ARGS) /p:AndroidApiLevel=$${a} /p:AndroidFrameworkVersion=$${CUR_VERSION} /p:AndroidPreviousFrameworkVersion=$${PREV_VERSION}; ) \
102+
$(MSBUILD) $(MSBUILD_FLAGS) src/Mono.Android/Mono.Android.csproj /p:Configuration=$(conf) $(_MSBUILD_ARGS) /p:AndroidApiLevel=$${a} /p:AndroidPlatformId=$(word $(a), $(ALL_PLATFORM_IDS)) /p:AndroidFrameworkVersion=$${CUR_VERSION} /p:AndroidPreviousFrameworkVersion=$${PREV_VERSION}; ) \
103103
PREV_VERSION=$${CUR_VERSION}; \
104104
done
105105

@@ -111,7 +111,7 @@ opentk-jcw:
111111
$(foreach a, $(API_LEVELS), \
112112
$(foreach conf, $(CONFIGURATIONS), \
113113
touch bin/$(conf)/lib/xbuild-frameworks/MonoAndroid/*/OpenTK-1.0.dll; \
114-
$(MSBUILD) $(MSBUILD_FLAGS) src/OpenTK-1.0/OpenTK.csproj /t:GenerateJavaCallableWrappers /p:Configuration=$(conf) $(_MSBUILD_ARGS) /p:AndroidApiLevel=$(a) /p:AndroidFrameworkVersion=$(word $(a), $(ALL_FRAMEWORKS)); ))
114+
$(MSBUILD) $(MSBUILD_FLAGS) src/OpenTK-1.0/OpenTK.csproj /t:GenerateJavaCallableWrappers /p:Configuration=$(conf) $(_MSBUILD_ARGS) /p:AndroidApiLevel=$(a) /p:AndroidPlatformId=$(word $(a), $(ALL_PLATFORM_IDS)) /p:AndroidFrameworkVersion=$(word $(a), $(ALL_FRAMEWORKS)); ))
115115

116116
_BUNDLE_ZIPS_INCLUDE = \
117117
$(ZIP_OUTPUT_BASENAME)/bin/Debug \

build-tools/scripts/JavaCallableWrappers.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525
<PropertyGroup>
2626
<_Target>-source $(JavacSourceVersion) -target $(JavacSourceVersion)</_Target>
2727
<_D>-d "$(IntermediateOutputPath)jcw\bin"</_D>
28-
<_AndroidJar>"$(AndroidToolchainDirectory)\sdk\platforms\android-$(AndroidApiLevel)\android.jar"</_AndroidJar>
28+
<_AndroidJar>"$(AndroidToolchainDirectory)\sdk\platforms\android-$(AndroidPlatformId)\android.jar"</_AndroidJar>
2929
<_MonoAndroidJar>$(OutputPath)mono.android.jar</_MonoAndroidJar>
3030
</PropertyGroup>
3131
<Exec

external/Java.Interop

src/Mono.Android/Mono.Android.targets

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@
151151
Directories="$(IntermediateOutputPath)__dex"
152152
/>
153153
<Exec
154-
Command="java -jar &quot;$(AndroidSdkDirectory)&quot;\build-tools\$(XABuildToolsVersion)\jack.jar --output-dex=&quot;$(IntermediateOutputPath)__dex&quot; -cp &quot;$(AndroidToolchainDirectory)\sdk\platforms\android-$(AndroidApiLevel)\android.jar&quot; @&quot;$(IntermediateOutputPath)jcw\classes.txt&quot;"
154+
Command="java -jar &quot;$(AndroidSdkDirectory)&quot;\build-tools\$(XABuildToolsVersion)\jack.jar --output-dex=&quot;$(IntermediateOutputPath)__dex&quot; -cp &quot;$(AndroidToolchainDirectory)\sdk\platforms\android-$(AndroidPlatformId)\android.jar&quot; @&quot;$(IntermediateOutputPath)jcw\classes.txt&quot;"
155155
/>
156156
<Copy
157157
SourceFiles="$(IntermediateOutputPath)__dex\classes.dex"

src/Mono.Android/metadata

Lines changed: 37 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1128,7 +1128,7 @@
11281128
<!-- name conflict resolution -->
11291129
<attr path="/api/package[@name='android.net.wifi']/class[@name='WifiConfiguration']/field[@name='status']" name="managedName">StatusField</attr>
11301130

1131-
<!-- Android M -->
1131+
<!-- Android M (API Level 23) -->
11321132

11331133
<!-- FIXME: there is another M-preview specific build error:
11341134

@@ -1141,7 +1141,7 @@
11411141

11421142
<attr path="/api/package[@name='android.app']/class[@name='Notification']/method[@name='getLargeIcon']" name="propertyName"></attr>
11431143

1144-
<!-- Android N Preview -->
1144+
<!-- Android N (API Level 24-25) -->
11451145

11461146
<attr path="/api/package[@name='java.util.function']" name="managedName">Java.Util.Functions</attr>
11471147
<attr path="/api/package[@name='java.util.stream']" name="managedName">Java.Util.Streams</attr>
@@ -1319,4 +1319,39 @@
13191319
<attr path="/api/package[@name='java.util.concurrent.atomic']/class[@name='AtomicLong']/method[@name='getAndDecrement']" name="propertyName"></attr>
13201320
<attr path="/api/package[@name='java.util.concurrent.atomic']/class[@name='AtomicLong']/method[@name='getAndIncrement']" name="propertyName"></attr>
13211321

1322+
1323+
<!-- Android O (API Level 26) -->
1324+
1325+
<attr path="/api/package[@name='android.view.autofill']" name="managedName">Android.Views.AutoFill</attr>
1326+
<attr path="/api/package[@name='android.view.textclassifier']" name="managedName">Android.Views.TextClassifiers</attr>
1327+
<attr path="/api/package[@name='java.nio.file']" name="managedName">Java.Nio.FileNio</attr>
1328+
<attr path="/api/package[@name='java.nio.file.attribute']" name="managedName">Java.Nio.FileNio.Attributes</attr>
1329+
<attr path="/api/package[@name='java.nio.file.spi']" name="managedName">Java.Nio.FileNio.Spi</attr>
1330+
1331+
<!-- FIXME: fix build and enable these packages -->
1332+
<remove-node path="/api/package[@name='java.time']" api-since="26" />
1333+
<remove-node path="/api/package[@name='java.time.chrono']" api-since="26" />
1334+
1335+
<!-- FIXME: fix build and enable these types -->
1336+
<remove-node path="/api/package[@name='java.nio.channels']/class[@name='AsynchronousFileChannel']" api-since="26" />
1337+
<remove-node path="/api/package[@name='java.nio.channels']/class[@name='AsynchronousSocketChannel']" api-since="26" />
1338+
<remove-node path="/api/package[@name='java.nio.channels']/class[@name='AsynchronousServerSocketChannel']" api-since="26" />
1339+
1340+
<!-- FIXME: fix build and enable this method -->
1341+
<remove-node path="/api/package[@name='android.text']/class[@name='TextUtils']/method[@name='listEllipsize']" api-since="26" />
1342+
1343+
1344+
<!-- interface default method -->
1345+
<remove-node path="/api/package[@name='java.lang.reflect']/interface[@name='AnnotatedElement']/method[@name='isAnnotationPresent']" api-since="26" />
1346+
1347+
<!-- This is possibly a new kind of problem that a class can have a pair of
1348+
methods where one returns a CharSequence and the other returns java.lang.String.
1349+
Such a pair will result in build error as both result in System.String
1350+
overloads (therefore duplicates in C# land).
1351+
We remove one with java.lang.String; with a System.String overload it should be fine for most of managed developers. -->
1352+
<remove-node path="/api/package[@name='android.text']/class[@name='BidiFormatter']/method[@name='unicodeWrap' and @return='java.lang.String']" api-since="26" />
1353+
1354+
<!-- interfaces that implement BasicFileAttributeView often have return value of a derived type. So change the managed return type. -->
1355+
<attr path="/api/package[@name='java.nio.file.attribute']/*[implements[@name='java.nio.file.attribute.BasicFileAttributeView']]/method[@name='readAttributes']" name="managedReturn">Java.Nio.FileNio.Attributes.IBasicFileAttributes</attr>
1356+
13221357
</metadata>

src/Xamarin.Android.Build.Tasks/Utilities/MonoAndroidHelper.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -435,6 +435,8 @@ internal static IEnumerable<string> GetFrameworkAssembliesToTreatAsUserAssemblie
435435
public static string GetPlatformApiLevelName (string platformApiLevel)
436436
{
437437
switch (platformApiLevel.Trim ()) {
438+
case "26":
439+
return "O";
438440
default:
439441
return platformApiLevel;
440442
}
@@ -445,6 +447,8 @@ public static string GetPlatformApiLevelName (string platformApiLevel)
445447
public static string GetPlatformApiLevel (string platformApiLevelName)
446448
{
447449
switch (platformApiLevelName.Trim ()) {
450+
case "O":
451+
return "26";
448452
default:
449453
return platformApiLevelName;
450454
}

0 commit comments

Comments
 (0)