-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathAndroid.Build.targets
More file actions
113 lines (103 loc) · 10 KB
/
Android.Build.targets
File metadata and controls
113 lines (103 loc) · 10 KB
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
<Project>
<!-- Android Build Configuration using SokolApplicationBuilder -->
<PropertyGroup>
<SokolBuilderPath Condition="'$(SokolBuilderPath)' == ''">../../tools/SokolApplicationBuilder</SokolBuilderPath>
<AndroidDeviceId Condition="'$(AndroidDeviceId)' == ''"></AndroidDeviceId>
<AndroidBuildType Condition="'$(AndroidBuildType)' == ''">release</AndroidBuildType>
<AndroidOrientation Condition="'$(AndroidOrientation)' == ''">landscape</AndroidOrientation>
<SubTask Condition="'$(SubTask)' == ''"></SubTask>
<Interactive Condition="'$(Interactive)' == ''"></Interactive>
</PropertyGroup>
<!-- Build Android APK (Release) - No Install -->
<Target Name="BuildAndroid">
<PropertyGroup>
<AndroidBuildCommand Condition="'$(SubTask)' != ''">dotnet run -- --task build --type $(AndroidBuildType) --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --subtask $(SubTask)</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(SubTask)' == ''">dotnet run -- --task build --type $(AndroidBuildType) --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)"</AndroidBuildCommand>
</PropertyGroup>
<Message Text="Building Android APK (Release) with SokolApplicationBuilder..." Importance="high" />
<Message Text="Command: $(AndroidBuildCommand)" Importance="high" />
<Exec Command="$(AndroidBuildCommand)" WorkingDirectory="$(SokolBuilderPath)" />
</Target>
<!-- Build Android APK (Debug) - No Install -->
<Target Name="BuildAndroidDebug">
<PropertyGroup>
<AndroidBuildCommand Condition="'$(SubTask)' != ''">dotnet run -- --task build --type debug --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --subtask $(SubTask)</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(SubTask)' == ''">dotnet run -- --task build --type debug --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)"</AndroidBuildCommand>
</PropertyGroup>
<Message Text="Building Android APK (Debug) with SokolApplicationBuilder..." Importance="high" />
<Message Text="Command: $(AndroidBuildCommand)" Importance="high" />
<Exec Command="$(AndroidBuildCommand)" WorkingDirectory="$(SokolBuilderPath)" />
</Target>
<!-- Build and Install Android APK (Release) -->
<Target Name="BuildAndroidInstall">
<PropertyGroup>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' != '' AND '$(SubTask)' != ''">dotnet run -- --task build --type $(AndroidBuildType) --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install --device $(AndroidDeviceId) --subtask $(SubTask)</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' != '' AND '$(SubTask)' == ''">dotnet run -- --task build --type $(AndroidBuildType) --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install --device $(AndroidDeviceId)</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' == '' AND '$(SubTask)' != '' AND '$(Interactive)' == 'true'">dotnet run -- --task build --type $(AndroidBuildType) --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install --subtask $(SubTask) --interactive</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' == '' AND '$(SubTask)' != '' AND '$(Interactive)' != 'true'">dotnet run -- --task build --type $(AndroidBuildType) --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install --subtask $(SubTask)</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' == '' AND '$(SubTask)' == '' AND '$(Interactive)' == 'true'">dotnet run -- --task build --type $(AndroidBuildType) --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install --interactive</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' == '' AND '$(SubTask)' == '' AND '$(Interactive)' != 'true'">dotnet run -- --task build --type $(AndroidBuildType) --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install</AndroidBuildCommand>
</PropertyGroup>
<Message Text="Building and Installing Android APK (Release) with SokolApplicationBuilder..." Importance="high" />
<Message Text="Command: $(AndroidBuildCommand)" Importance="high" />
<Exec Command="$(AndroidBuildCommand)" WorkingDirectory="$(SokolBuilderPath)" />
</Target>
<!-- Build and Install Android APK (Debug) -->
<Target Name="BuildAndroidDebugInstall">
<PropertyGroup>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' != '' AND '$(SubTask)' != ''">dotnet run -- --task build --type debug --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install --device $(AndroidDeviceId) --subtask $(SubTask)</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' != '' AND '$(SubTask)' == ''">dotnet run -- --task build --type debug --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install --device $(AndroidDeviceId)</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' == '' AND '$(SubTask)' != '' AND '$(Interactive)' == 'true'">dotnet run -- --task build --type debug --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install --subtask $(SubTask) --interactive</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' == '' AND '$(SubTask)' != '' AND '$(Interactive)' != 'true'">dotnet run -- --task build --type debug --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install --subtask $(SubTask)</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' == '' AND '$(SubTask)' == '' AND '$(Interactive)' == 'true'">dotnet run -- --task build --type debug --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install --interactive</AndroidBuildCommand>
<AndroidBuildCommand Condition="'$(AndroidDeviceId)' == '' AND '$(SubTask)' == '' AND '$(Interactive)' != 'true'">dotnet run -- --task build --type debug --architecture android --orientation $(AndroidOrientation) --path "$(MSBuildProjectDirectory)" --install</AndroidBuildCommand>
</PropertyGroup>
<Message Text="Building and Installing Android APK (Debug) with SokolApplicationBuilder..." Importance="high" />
<Message Text="Command: $(AndroidBuildCommand)" Importance="high" />
<Exec Command="$(AndroidBuildCommand)" WorkingDirectory="$(SokolBuilderPath)" />
</Target>
<!-- Import Android NDK pressets -->
<Import Project="$(SokolNetHome)/BionicNativeAot.targets" />
<!--Following blocks are exclusive for Android building-->
<PropertyGroup Condition="$(IsAndroid) == 'true'">
<!--Use ndk-sample expected library name -->
<CppCompilerAndLinker Condition="$(IsWindowsHost) == 'true'">android_fake_clang.cmd</CppCompilerAndLinker>
<CppCompilerAndLinker Condition="$(IsLinuxHost) == 'true'">$(SokolNetHome)/scripts/android_fake_clang.sh</CppCompilerAndLinker>
<CppCompilerAndLinker Condition="$(IsOSXHost) == 'true'">$(SokolNetHome)/scripts/android_fake_clang.command</CppCompilerAndLinker>
<NdkHost Condition="$(IsWindowsHost) == 'true'">windows-x86_64</NdkHost>
<NdkHost Condition="$(IsLinuxHost) == 'true'">linux-x86_64</NdkHost>
<NdkHost Condition="$(IsOSXHost) == 'true'">darwin-x86_64</NdkHost>
<ObjCopyName Condition="'$(ObjCopyName)' == ''">$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(NdkHost)/bin/llvm-objcopy</ObjCopyName>
<SysRoot Condition="'$(SysRoot)' == ''">$(ANDROID_NDK_ROOT)/toolchains/llvm/prebuilt/$(NdkHost)/sysroot</SysRoot>
<!--Hack for removing init and fini sections into the exports file-->
<ExportsPatch>'s/global: _init; _fini;/global: /g;'</ExportsPatch>
<!--Google new requirement , 16 KB page sizes for 64 bit native shared libraries-->
<LdFlags Condition="$(RuntimeIdentifier.EndsWith('x64')) or $(RuntimeIdentifier.EndsWith('arm64'))">$(LdFlags) -Wl,-z,max-page-size=16384</LdFlags>
<!-- Architecture mapping -->
<LibraryOutputBase>Android/native-activity/app/libs</LibraryOutputBase>
<ArchitectureOutputPath Condition="$(RuntimeIdentifier.EndsWith('arm64'))">$(LibraryOutputBase)/arm64-v8a</ArchitectureOutputPath>
<ArchitectureOutputPath Condition="$(RuntimeIdentifier.EndsWith('arm'))">$(LibraryOutputBase)/armeabi-v7a</ArchitectureOutputPath>
<ArchitectureOutputPath Condition="$(RuntimeIdentifier.EndsWith('x64'))">$(LibraryOutputBase)/x86_64</ArchitectureOutputPath>
</PropertyGroup>
<ItemGroup Condition="'$(IsAndroid)' == 'true'">
<!-- https://github.com/exelix11/SysDVR/blob/master/Client/Client.csproj -->
<!-- Android needs a proper soname property or it will refuse to load the library -->
<LinkerArg Include="-Wl,-soname,$(LibraryName).so,--undefined-version" />
</ItemGroup>
<Target Name="RemoveSections" Condition="$(IsAndroid) == 'true' And $(RemoveSections) == 'true'" AfterTargets="IlcCompile" BeforeTargets="LinkNative">
<!--Reads as lines the generated exports file-->
<ReadLinesFromFile File="$(ExportsFile)">
<Output TaskParameter="Lines" PropertyName="ExportsLines" />
</ReadLinesFromFile>
<!--Gets a single text from the exports lines-->
<PropertyGroup>
<ExportsText Condition="$(ExportsLines) != ''">@(ExportsLines)</ExportsText>
</PropertyGroup>
<!--The sed tool is used as invalid lines remover-->
<Exec Command="sed -i -z $(ExportsPatch) $(ExportsFile)" />
</Target>
<Target Name="CopyAssetsToAndroidFolder" AfterTargets="Publish" Condition="'$(IsAndroid)'=='true'">
<Message Text="Copying assets to Android app/src/main/assets folder..." Importance="high" />
<Copy SourceFiles="@(AssetsSourceFiles)" DestinationFiles="@(AssetsSourceFiles->'Android/native-activity/app/src/main/assets\%(RecursiveDir)%(Filename)%(Extension)')" SkipUnchangedFiles="true" />
</Target>
</Project>