[android] update latest 15-4 stable branch of Xamarin.Android

MSBuild tasks changed a bit:
- Aapt needs to conditionally run if there are no resources
- ResolveLibraryProjectImports had changes to required properties
- Using shorter names for intermediate directories

Other changes:
- Xamarin.Android’s mono.android.Runtime.init had API changes.
- URLs in cake script to download 15-4 build artifact from Jenkins
- AppVeyor cache should watch for `build\Android.cake` changes

After this PR, I'll look at getting API-26 support as the default.
This commit is contained in:
Jonathan Peppers 2017-11-10 15:54:56 -05:00
Родитель 7ab037a4e8
Коммит de31e4ff88
4 изменённых файлов: 27 добавлений и 12 удалений

Просмотреть файл

@ -37,7 +37,7 @@ environment:
cache:
- packages -> **\packages.config
- external\Xamarin.Android -> build.cake
- external\Xamarin.Android -> build\Android.cake
#---------------------------------#
# build scripts #

Просмотреть файл

@ -18,7 +18,8 @@ namespace Embeddinator
public const string IntermediateDir = "obj";
public const string ResourcePaths = "resourcepaths.cache";
const string LibraryProjectDir = "library_project_imports";
const string LibraryProjectDir = "lp";
const string ImportsDirectory = "jl";
const string LinkMode = "SdkOnly";
static ProjectRootElement CreateProject()
@ -102,6 +103,7 @@ namespace Embeddinator
//Aapt Task to generate R.txt
var aapt = target.AddTask("Aapt");
aapt.Condition = $"Exists('{resourceDir}')";
aapt.SetParameter("ImportsDirectory", outputDirectory);
aapt.SetParameter("OutputImportDirectory", outputDirectory);
aapt.SetParameter("ManifestFiles", manifestPath);
@ -196,10 +198,12 @@ $@"<?xml version=""1.0"" encoding=""utf-8""?>
//ResolveLibraryProjectImports Task, extracts Android resources
var resolveLibraryProject = target.AddTask("ResolveLibraryProjectImports");
resolveLibraryProject.SetParameter("Assemblies", "@(ResolvedUserAssemblies)");
resolveLibraryProject.SetParameter("AssemblyIdentityMapFile", Path.Combine(intermediateDir, LibraryProjectDir, "map.cache"));
resolveLibraryProject.SetParameter("CacheFile", Path.Combine(intermediateDir, "libraryprojectimports.cache"));
resolveLibraryProject.SetParameter("UseShortFileNames", "False");
resolveLibraryProject.SetParameter("ImportsDirectory", intermediateDir);
resolveLibraryProject.SetParameter("ImportsDirectory", ImportsDirectory);
resolveLibraryProject.SetParameter("OutputDirectory", intermediateDir);
resolveLibraryProject.SetParameter("OutputImportDirectory", intermediateDir);
resolveLibraryProject.SetParameter("OutputImportDirectory", Path.Combine(intermediateDir, LibraryProjectDir));
resolveLibraryProject.AddOutputItem("ResolvedAssetDirectories", "ResolvedAssetDirectories");
resolveLibraryProject.AddOutputItem("ResolvedResourceDirectories", "ResolvedResourceDirectories");
@ -209,15 +213,16 @@ $@"<?xml version=""1.0"" encoding=""utf-8""?>
getAdditionalResources.SetParameter("AndroidNdkDirectory", XamarinAndroid.AndroidSdk.AndroidNdkPath);
getAdditionalResources.SetParameter("Assemblies", "@(ResolvedUserAssemblies)");
getAdditionalResources.SetParameter("CacheFile", Path.Combine(intermediateDir, ResourcePaths));
getAdditionalResources.SetParameter("DesignTimeBuild", "False");
//Create ItemGroup of Android files
var androidResources = target.AddItemGroup();
foreach (var assembly in assemblies)
{
var assemblyName = assembly.GetName().Name;
androidResources.AddItem("AndroidAsset", Path.Combine(intermediateDir, assemblyName, LibraryProjectDir, "assets", "**", "*"));
androidResources.AddItem("AndroidJavaSource", Path.Combine(intermediateDir, assemblyName, LibraryProjectDir, "java", "**", "*.java"));
androidResources.AddItem("AndroidResource", Path.Combine(intermediateDir, assemblyName, LibraryProjectDir, "res", "**", "*"));
androidResources.AddItem("AndroidAsset", Path.Combine(intermediateDir, LibraryProjectDir, assemblyName, ImportsDirectory, "assets", "**", "*"));
androidResources.AddItem("AndroidJavaSource", Path.Combine(intermediateDir, LibraryProjectDir, assemblyName, ImportsDirectory, "java", "**", "*.java"));
androidResources.AddItem("AndroidResource", Path.Combine(intermediateDir, LibraryProjectDir, assemblyName, ImportsDirectory, "res", "**", "*"));
}
//Copy Task, to copy AndroidAsset files

Просмотреть файл

@ -19,8 +19,9 @@ Task("Download-Xamarin-Android")
Console.WriteLine("Downloading Xamarin.Android SDK, this will take a while...");
//We can also update this URL later from here: https://jenkins.mono-project.com/view/Xamarin.Android/job/xamarin-android/lastSuccessfulBuild/Azure/
var artifact = "oss-xamarin.android_v7.4.99.16_Darwin-x86_64_master_e83c99c";
var url = $"https://jenkins.mono-project.com/view/Xamarin.Android/job/xamarin-android/444/Azure/processDownloadRequest/xamarin-android/{artifact}.zip";
var artifact = "oss-xamarin.android_v8.0.0.37_Darwin-x86_64_HEAD_376f684";
var buildId = 682;
var url = $"https://jenkins.mono-project.com/view/Xamarin.Android/job/xamarin-android/{buildId}/Azure/processDownloadRequest/xamarin-android/{artifact}.zip";
var temp = DownloadFile(url);
var tempDir = temp.GetDirectory() + "/" + artifact;
try

Просмотреть файл

@ -33,6 +33,14 @@ public class AndroidImpl extends DesktopImpl {
String cacheDir = context.getCacheDir ().getAbsolutePath ();
String dataDir = app.nativeLibraryDir;
ClassLoader loader = context.getClassLoader ();
java.io.File external0 = android.os.Environment.getExternalStorageDirectory ();
String externalDir = new java.io.File (
external0,
"Android/data/" + context.getPackageName () + "/files/.__override__").getAbsolutePath ();
String externalLegacyDir = new java.io.File (
external0,
"../legacy/Android/data/" + context.getPackageName () + "/files/.__override__").getAbsolutePath ();
mono.android.Runtime.init (
language,
@ -44,9 +52,10 @@ public class AndroidImpl extends DesktopImpl {
dataDir,
},
loader,
new java.io.File (
android.os.Environment.getExternalStorageDirectory (),
"Android/data/" + context.getPackageName () + "/files/.__override__").getAbsolutePath (),
new String[] {
externalDir,
externalLegacyDir
},
new String[] {
library + ".dll",
"Resource.designer.dll"