Skip to content

Commit e151f86

Browse files
committed
First step towards support for Android-O Preview API.
1 parent b71265a commit e151f86

File tree

45 files changed

+444
-75
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+444
-75
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)' == '' ">$(AndroidApiLevel)</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_r26.0.0-rc1-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="tools_r25.2.5-linux.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_r26.0.0-rc1-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="tools_r25.2.5-macosx.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: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ API_XML_TOOL = $(BUILDBIN)/api-xml-adjuster.exe
1414
RUNTIME = mono
1515
RUN_CLASS_PARSE = $(RUNTIME) $(CLASS_PARSE)
1616
RUN_API_XML_TOOL = $(RUNTIME) $(API_XML_TOOL)
17-
API_LEVELS = 10 15 16 17 18 19 20 21 22 23 24 25
17+
API_LEVELS = 10 15 16 17 18 19 20 21 22 23 24 25 O
1818

1919
XML_OUTPUT_DIR = .
2020

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

84+
docs-O_web.zip:
85+
curl -L https://www.dropbox.com/s/3xr11fpd08xpolg/docs-O-web.zip?dl=0 > $@ || exit 1
86+
8487
# API level 10 is Android v2.3.3; it's API level 9 (Android v2.3) with a few
8588
# bugfixes which don't impact the documentation.
8689
$(DOCS_DIR)/docs-api-10: docs-2.3_r01-linux.zip
@@ -119,3 +122,9 @@ $(DOCS_DIR)/docs-api-24: docs-24_r01.zip
119122

120123
$(DOCS_DIR)/docs-api-25: docs-25_web.zip # Google hadn't published docs component yet!
121124
$(call extract-docs,$<,docs)
125+
<<<<<<< HEAD
126+
=======
127+
128+
docs-api-O: docs-O_web.zip # No preview docs yet
129+
$(call extract-docs,$<,docs)
130+
>>>>>>> First step towards support for Android-O Preview API.

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

src/Mono.Android/Mono.Android.targets

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -142,25 +142,6 @@
142142
Command="&quot;$(AndroidSdkDirectory)&quot;\build-tools\$(XABuildToolsVersion)\dx --dex --output=&quot;$(OutputPath)mono.android.dex&quot; &quot;$(OutputPath)mono.android.jar&quot;"
143143
/>
144144
</Target>
145-
<Target Name="_GenerateMonoAndroidDex18"
146-
AfterTargets="GenerateJavaCallableWrappers"
147-
Condition="'$(JavacSourceVersion)' == '1.8'"
148-
Inputs="$(OutputPath)mono.android.jar"
149-
Outputs="$(OutputPath)mono.android.dex">
150-
<MakeDir
151-
Directories="$(IntermediateOutputPath)__dex"
152-
/>
153-
<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;"
155-
/>
156-
<Copy
157-
SourceFiles="$(IntermediateOutputPath)__dex\classes.dex"
158-
DestinationFiles="$(OutputPath)mono.android.dex"
159-
/>
160-
<RemoveDir
161-
Directories="$(IntermediateOutputPath)__dex"
162-
/>
163-
</Target>
164145
<Target Name="_GenerateFrameworkList"
165146
BeforeTargets="GetTargetFrameworkProperties;GetReferenceAssemblyPaths;ResolveReferences"
166147
Inputs="$(MSBuildProjectFullPath)"

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
}
Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1 @@
1-
java/JavaLib/build.xml
2-
java/JavaLib/gen
3-
java/JavaLib/local.properties
41
libs

tests/CodeGen-Binding/Xamarin.Android.LibraryProjectZip-LibBinding/Properties/AssemblyInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
[assembly: Android.IncludeAndroidResourcesFromAttribute ("./",
2525
SourceUrl="file:///JavaLib.zip")]
26-
[assembly: Java.Interop.JavaLibraryReference ("bin/classes.jar",
26+
[assembly: Java.Interop.JavaLibraryReference ("classes.jar",
2727
SourceUrl="file:///JavaLib.zip")]
2828

2929
// native library path should contain abi

0 commit comments

Comments
 (0)