Skip to content
This repository was archived by the owner on Oct 25, 2021. It is now read-only.
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 2 additions & 5 deletions binder/Compilation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -410,7 +410,7 @@ bool CreateAar()
abi = "arm64-v8a";
break;
case "android-arm":
abi = "armeabi";
abi = "armeabi-v7a";
break;
case "android-armv7":
abi = "armeabi-v7a";
Expand Down Expand Up @@ -687,15 +687,12 @@ bool CompileNDK(IEnumerable<string> files)
var libName = $"lib{name}.so";
var ndkPath = XamarinAndroid.AndroidSdk.AndroidNdkPath;

foreach (var abi in new[] { "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64" })
foreach (var abi in new[] { "armeabi-v7a", "arm64-v8a", "x86", "x86_64" })
{
string extra = string.Empty;
AndroidTargetArch targetArch;
switch (abi)
{
case "armeabi":
targetArch = AndroidTargetArch.Arm;
break;
case "armeabi-v7a":
targetArch = AndroidTargetArch.Arm;
extra = " -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16";
Expand Down
20 changes: 14 additions & 6 deletions binder/Utils/XamarinAndroid.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ namespace Embeddinator
/// </summary>
static class XamarinAndroid
{
public const string TargetFrameworkVersion = "v7.0";
public const string TargetFrameworkVersion = "v8.1";
public const string MinSdkVersion = "9";
public const int TargetSdkVersion = 24;
public const string JavaVersion = "1.8";
Expand Down Expand Up @@ -55,9 +55,17 @@ static string GetMonoDroidPath()
return GetFullPath(Combine(MonoDroidSdk.BinPath, ".."));
}

public static string CombineToXamarinAndroidLibPath(string path)
{
if (Platform.IsWindows)
return Combine(path, "lib");
else
return Combine(path, "lib", "xamarin.android");
}

static string GetMonoDroidLibPath()
{
var libPath = Combine(Path, "lib", "xbuild", "Xamarin", "Android", "lib");
var libPath = Combine(CombineToXamarinAndroidLibPath(Path), "xbuild", "Xamarin", "Android", "lib");
if (!Directory.Exists(libPath))
libPath = Combine(Path, "lib");
return libPath;
Expand All @@ -73,10 +81,10 @@ static string GetMonoDroidLibPath()

static readonly Lazy<string[]> targetFrameworks = new Lazy<string[]>(() => new[]
{
Combine(Path, "lib", "xbuild-frameworks", "MonoAndroid", "v1.0"),
Combine(Path, "lib", "xbuild-frameworks", "MonoAndroid", "v1.0", "Facades"),
Combine(Path, "lib", "xbuild-frameworks", "MonoAndroid", TargetFrameworkVersion),
Combine(Path, "lib", "xbuild-frameworks", "MonoAndroid", "v2.3"), //Mono.Android.Export.dll is here
Combine(CombineToXamarinAndroidLibPath(Path), "xbuild-frameworks", "MonoAndroid", "v1.0"),
Combine(CombineToXamarinAndroidLibPath(Path), "xbuild-frameworks", "MonoAndroid", "v1.0", "Facades"),
Combine(CombineToXamarinAndroidLibPath(Path), "xbuild-frameworks", "MonoAndroid", TargetFrameworkVersion),
Combine(CombineToXamarinAndroidLibPath(Path), "xbuild-frameworks", "MonoAndroid", "v2.3"), //Mono.Android.Export.dll is here
});

public static string[] TargetFrameworkDirectories => targetFrameworks.Value;
Expand Down
6 changes: 5 additions & 1 deletion binder/Utils/XamarinAndroidBuild.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ static class XamarinAndroidBuild
static ProjectRootElement CreateProject()
{
var monoDroidPath = XamarinAndroid.Path;
var msBuildPath = Path.Combine(monoDroidPath, "lib", "xbuild", "Xamarin", "Android");
var msBuildPath = Path.Combine(XamarinAndroid.CombineToXamarinAndroidLibPath(monoDroidPath), "xbuild", "Xamarin", "Android");
if (!msBuildPath.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.OrdinalIgnoreCase))
msBuildPath = msBuildPath + Path.DirectorySeparatorChar;

Expand All @@ -42,6 +42,7 @@ static ProjectRootElement CreateProject()

static void ResolveAssemblies(ProjectTargetElement target, List<IKVM.Reflection.Assembly> assemblies)
{
target.DependsOnTargets = "_SetLatestTargetFrameworkVersion";
var resolveAssemblies = target.AddTask("ResolveAssemblies");
var assemblyPaths = assemblies.Select(a => a.Location).ToList();
//NOTE: [Export] requires Mono.Android.Export.dll
Expand Down Expand Up @@ -76,6 +77,7 @@ public static string GeneratePackageProject(List<IKVM.Reflection.Assembly> assem
var manifestPath = Path.Combine(androidDir, "AndroidManifest.xml");
var packageName = Generators.JavaGenerator.GetNativeLibPackageName(mainAssembly);
var project = CreateProject();
project.AddProperty ("TargetFrameworkRootPath", Path.Combine (XamarinAndroid.CombineToXamarinAndroidLibPath (XamarinAndroid.Path), "xbuild-frameworks"));
var target = project.AddTarget("Build");

//ResolveAssemblies Task
Expand Down Expand Up @@ -178,6 +180,7 @@ public static string GenerateJavaStubsProject(List<IKVM.Reflection.Assembly> ass
GenerateAndroidManifest(assemblies, manifestPath, false);

var project = CreateProject();
project.AddProperty ("TargetFrameworkRootPath", Path.Combine (XamarinAndroid.CombineToXamarinAndroidLibPath (XamarinAndroid.Path), "xbuild-frameworks"));
var target = project.AddTarget("Build");

//ResolveAssemblies Task
Expand All @@ -200,6 +203,7 @@ public static string GenerateJavaStubsProject(List<IKVM.Reflection.Assembly> ass
resolveLibraryProject.SetParameter("Assemblies", "@(ResolvedUserAssemblies)");
resolveLibraryProject.SetParameter("AssemblyIdentityMapFile", Path.Combine(intermediateDir, LibraryProjectDir, "map.cache"));
resolveLibraryProject.SetParameter("CacheFile", Path.Combine(intermediateDir, "libraryprojectimports.cache"));
resolveLibraryProject.SetParameter("DesignTimeBuild", "False");
resolveLibraryProject.SetParameter("UseShortFileNames", "False");
resolveLibraryProject.SetParameter("ImportsDirectory", ImportsDirectory);
resolveLibraryProject.SetParameter("OutputDirectory", intermediateDir);
Expand Down
3 changes: 1 addition & 2 deletions external/MonoDroidSdk/MonoDroidSdkBase.cs
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,7 @@ public void Reset ()
protected static bool ValidateRuntime (string loc)
{
return !string.IsNullOrWhiteSpace (loc) &&
(File.Exists (Path.Combine (loc, DebugRuntime)) || // Normal/expected
File.Exists (Path.Combine (loc, ClassParseExe)) || // Normal/expected
(File.Exists (Path.Combine (loc, ClassParseExe)) || // Normal/expected
File.Exists (Path.Combine (loc, "Xamarin.Android.Common.targets"))); //VS on Windows
}

Expand Down
21 changes: 11 additions & 10 deletions external/MonoDroidSdk/MonoDroidSdkUnix.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@ namespace Xamarin.Android.Tools
class MonoDroidSdkUnix : MonoDroidSdkBase
{
readonly static string[] RuntimeToFrameworkPaths = new[]{
Path.Combine ("..", "..", "..", ".xamarin.android", "lib", "xbuild-frameworks", "MonoAndroid"),
Path.Combine ("..", "xbuild-frameworks", "MonoAndroid"),
Path.Combine ("..", "mono", "2.1"),
Path.Combine ("..", "..", "..", "..", ".xamarin.android", "lib", "xamarin.android", "xbuild-frameworks", "MonoAndroid"),
Path.Combine ("..", "..", "..", "xbuild-frameworks", "MonoAndroid"),
Path.Combine ("..", "..", "mono", "2.1"),
};

readonly static string[] SearchPaths = {
Expand All @@ -24,7 +24,7 @@ protected override string FindRuntime ()
{
string monoAndroidPath = Environment.GetEnvironmentVariable ("MONO_ANDROID_PATH");
if (!string.IsNullOrEmpty (monoAndroidPath)) {
string libMandroid = Path.Combine (monoAndroidPath, "lib", "mandroid");
string libMandroid = Path.Combine (monoAndroidPath, "lib", "xamarin.android", "xbuild", "Xamarin", "Android");
if (Directory.Exists (libMandroid)) {
if (ValidateRuntime (libMandroid))
return libMandroid;
Expand All @@ -46,8 +46,9 @@ protected override string FindRuntime ()

protected override bool ValidateBin (string binPath)
{
return !string.IsNullOrWhiteSpace (binPath) &&
File.Exists (Path.Combine (binPath, GeneratorScript));
return true;// it won't be used at all.
//return !string.IsNullOrWhiteSpace (binPath) &&
// File.Exists (Path.Combine (binPath, GeneratorScript));
}

protected override string FindFramework (string runtimePath)
Expand All @@ -72,15 +73,15 @@ protected override string FindFramework (string runtimePath)

protected override string FindBin (string runtimePath)
{
string binPath = Path.GetFullPath (Path.Combine (runtimePath, "..", "..", "bin"));
if (File.Exists (Path.Combine (binPath, GeneratorScript)))
string binPath = Path.GetFullPath (Path.Combine (runtimePath, "..", "..", "..", "..", "..", "bin"));
//if (File.Exists (Path.Combine (binPath, GeneratorScript)))
return binPath;
return null;
//return null;
}

protected override string FindInclude (string runtimePath)
{
string includeDir = Path.GetFullPath (Path.Combine (runtimePath, "..", "..", "include"));
string includeDir = Path.GetFullPath (Path.Combine (runtimePath, "..", "..", "..", "..", "..", "include"));
if (Directory.Exists (includeDir))
return includeDir;
return null;
Expand Down