Skip to content
This repository was archived by the owner on Oct 25, 2021. It is now read-only.

Commit 610426a

Browse files
committed
Fix Xamarin.Android SDK locations to match the latest paths.
Now we have: bin/ include/ lib/xamarin.android/lib/xbuild lib/xamarin.android/lib/xbuild/Xamarin/Android (`mandroid` in the past) lib/xamarin.android/lib/xbuild-frameworks/MonoAndroid/v* Version*
1 parent 85df4fe commit 610426a

File tree

5 files changed

+33
-24
lines changed

5 files changed

+33
-24
lines changed

binder/Compilation.cs

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -410,7 +410,7 @@ bool CreateAar()
410410
abi = "arm64-v8a";
411411
break;
412412
case "android-arm":
413-
abi = "armeabi";
413+
abi = "armeabi-v7a";
414414
break;
415415
case "android-armv7":
416416
abi = "armeabi-v7a";
@@ -687,15 +687,12 @@ bool CompileNDK(IEnumerable<string> files)
687687
var libName = $"lib{name}.so";
688688
var ndkPath = XamarinAndroid.AndroidSdk.AndroidNdkPath;
689689

690-
foreach (var abi in new[] { "armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64" })
690+
foreach (var abi in new[] { "armeabi-v7a", "arm64-v8a", "x86", "x86_64" })
691691
{
692692
string extra = string.Empty;
693693
AndroidTargetArch targetArch;
694694
switch (abi)
695695
{
696-
case "armeabi":
697-
targetArch = AndroidTargetArch.Arm;
698-
break;
699696
case "armeabi-v7a":
700697
targetArch = AndroidTargetArch.Arm;
701698
extra = " -march=armv7-a -mfloat-abi=softfp -mfpu=vfpv3-d16";

binder/Utils/XamarinAndroid.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ namespace Embeddinator
1414
/// </summary>
1515
static class XamarinAndroid
1616
{
17-
public const string TargetFrameworkVersion = "v7.0";
17+
public const string TargetFrameworkVersion = "v8.1";
1818
public const string MinSdkVersion = "9";
1919
public const int TargetSdkVersion = 24;
2020
public const string JavaVersion = "1.8";
@@ -55,9 +55,17 @@ static string GetMonoDroidPath()
5555
return GetFullPath(Combine(MonoDroidSdk.BinPath, ".."));
5656
}
5757

58+
public static string CombineToXamarinAndroidLibPath(string path)
59+
{
60+
if (Platform.IsWindows)
61+
return Combine(path, "lib");
62+
else
63+
return Combine(path, "lib", "xamarin.android");
64+
}
65+
5866
static string GetMonoDroidLibPath()
5967
{
60-
var libPath = Combine(Path, "lib", "xbuild", "Xamarin", "Android", "lib");
68+
var libPath = Combine(CombineToXamarinAndroidLibPath(Path), "xbuild", "Xamarin", "Android", "lib");
6169
if (!Directory.Exists(libPath))
6270
libPath = Combine(Path, "lib");
6371
return libPath;
@@ -73,10 +81,10 @@ static string GetMonoDroidLibPath()
7381

7482
static readonly Lazy<string[]> targetFrameworks = new Lazy<string[]>(() => new[]
7583
{
76-
Combine(Path, "lib", "xbuild-frameworks", "MonoAndroid", "v1.0"),
77-
Combine(Path, "lib", "xbuild-frameworks", "MonoAndroid", "v1.0", "Facades"),
78-
Combine(Path, "lib", "xbuild-frameworks", "MonoAndroid", TargetFrameworkVersion),
79-
Combine(Path, "lib", "xbuild-frameworks", "MonoAndroid", "v2.3"), //Mono.Android.Export.dll is here
84+
Combine(CombineToXamarinAndroidLibPath(Path), "xbuild-frameworks", "MonoAndroid", "v1.0"),
85+
Combine(CombineToXamarinAndroidLibPath(Path), "xbuild-frameworks", "MonoAndroid", "v1.0", "Facades"),
86+
Combine(CombineToXamarinAndroidLibPath(Path), "xbuild-frameworks", "MonoAndroid", TargetFrameworkVersion),
87+
Combine(CombineToXamarinAndroidLibPath(Path), "xbuild-frameworks", "MonoAndroid", "v2.3"), //Mono.Android.Export.dll is here
8088
});
8189

8290
public static string[] TargetFrameworkDirectories => targetFrameworks.Value;

binder/Utils/XamarinAndroidBuild.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ static class XamarinAndroidBuild
2525
static ProjectRootElement CreateProject()
2626
{
2727
var monoDroidPath = XamarinAndroid.Path;
28-
var msBuildPath = Path.Combine(monoDroidPath, "lib", "xbuild", "Xamarin", "Android");
28+
var msBuildPath = Path.Combine(XamarinAndroid.CombineToXamarinAndroidLibPath(monoDroidPath), "xbuild", "Xamarin", "Android");
2929
if (!msBuildPath.EndsWith(Path.DirectorySeparatorChar.ToString(), StringComparison.OrdinalIgnoreCase))
3030
msBuildPath = msBuildPath + Path.DirectorySeparatorChar;
3131

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

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

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

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

183186
//ResolveAssemblies Task
@@ -200,6 +203,7 @@ public static string GenerateJavaStubsProject(List<IKVM.Reflection.Assembly> ass
200203
resolveLibraryProject.SetParameter("Assemblies", "@(ResolvedUserAssemblies)");
201204
resolveLibraryProject.SetParameter("AssemblyIdentityMapFile", Path.Combine(intermediateDir, LibraryProjectDir, "map.cache"));
202205
resolveLibraryProject.SetParameter("CacheFile", Path.Combine(intermediateDir, "libraryprojectimports.cache"));
206+
resolveLibraryProject.SetParameter("DesignTimeBuild", "False");
203207
resolveLibraryProject.SetParameter("UseShortFileNames", "False");
204208
resolveLibraryProject.SetParameter("ImportsDirectory", ImportsDirectory);
205209
resolveLibraryProject.SetParameter("OutputDirectory", intermediateDir);

external/MonoDroidSdk/MonoDroidSdkBase.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -106,8 +106,7 @@ public void Reset ()
106106
protected static bool ValidateRuntime (string loc)
107107
{
108108
return !string.IsNullOrWhiteSpace (loc) &&
109-
(File.Exists (Path.Combine (loc, DebugRuntime)) || // Normal/expected
110-
File.Exists (Path.Combine (loc, ClassParseExe)) || // Normal/expected
109+
(File.Exists (Path.Combine (loc, ClassParseExe)) || // Normal/expected
111110
File.Exists (Path.Combine (loc, "Xamarin.Android.Common.targets"))); //VS on Windows
112111
}
113112

external/MonoDroidSdk/MonoDroidSdkUnix.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ namespace Xamarin.Android.Tools
88
class MonoDroidSdkUnix : MonoDroidSdkBase
99
{
1010
readonly static string[] RuntimeToFrameworkPaths = new[]{
11-
Path.Combine ("..", "..", "..", ".xamarin.android", "lib", "xbuild-frameworks", "MonoAndroid"),
12-
Path.Combine ("..", "xbuild-frameworks", "MonoAndroid"),
13-
Path.Combine ("..", "mono", "2.1"),
11+
Path.Combine ("..", "..", "..", "..", ".xamarin.android", "lib", "xamarin.android", "xbuild-frameworks", "MonoAndroid"),
12+
Path.Combine ("..", "..", "..", "xbuild-frameworks", "MonoAndroid"),
13+
Path.Combine ("..", "..", "mono", "2.1"),
1414
};
1515

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

4747
protected override bool ValidateBin (string binPath)
4848
{
49-
return !string.IsNullOrWhiteSpace (binPath) &&
50-
File.Exists (Path.Combine (binPath, GeneratorScript));
49+
return true;// it won't be used at all.
50+
//return !string.IsNullOrWhiteSpace (binPath) &&
51+
// File.Exists (Path.Combine (binPath, GeneratorScript));
5152
}
5253

5354
protected override string FindFramework (string runtimePath)
@@ -72,15 +73,15 @@ protected override string FindFramework (string runtimePath)
7273

7374
protected override string FindBin (string runtimePath)
7475
{
75-
string binPath = Path.GetFullPath (Path.Combine (runtimePath, "..", "..", "bin"));
76-
if (File.Exists (Path.Combine (binPath, GeneratorScript)))
76+
string binPath = Path.GetFullPath (Path.Combine (runtimePath, "..", "..", "..", "..", "..", "bin"));
77+
//if (File.Exists (Path.Combine (binPath, GeneratorScript)))
7778
return binPath;
78-
return null;
79+
//return null;
7980
}
8081

8182
protected override string FindInclude (string runtimePath)
8283
{
83-
string includeDir = Path.GetFullPath (Path.Combine (runtimePath, "..", "..", "include"));
84+
string includeDir = Path.GetFullPath (Path.Combine (runtimePath, "..", "..", "..", "..", "..", "include"));
8485
if (Directory.Exists (includeDir))
8586
return includeDir;
8687
return null;

0 commit comments

Comments
 (0)