Skip to content

Instantly share code, notes, and snippets.

View jonpryor's full-sized avatar

Jonathan Pryor jonpryor

View GitHub Profile
diff -u MainActivity.cs.jonp-orig MainActivity.cs
--- MainActivity.cs.jonp-orig 2016-07-06 17:11:28.000000000 -0400
+++ MainActivity.cs 2016-08-01 14:45:49.000000000 -0400
@@ -3,7 +3,10 @@
using Android.OS;
using Android.Runtime;
+using Java.Interop;
+
using System;

Consider this scenario:

  1. You have expansion-deps.projitems which contains the @(JdkIncludePath) item group.
  2. You have expansion.props which uses @(JdkIncludePath) to generate a $(_JdkIncludePaths) property
  3. You have expansion.projitems which creates a new @(_HostRuntime) item group which uses $(JdkIncludePath) within the %(_HostRuntime.CFlags) item metadata
  4. You print out %(_HostRuntime.CFlags).

Incredibly, behavior differs between xbuild, msbuild in mono 4.6, and msbuild in mono 4.8.

Android NDK, SDK

Note: A xamarin-android checkout maintains its own Android NDK + SDK to ensure consistent builds and build behavior, permitting reproducible builds and providing greater flexibility around when we need to perform Android SDK + NDK updates. The Android SDK and NDK are maintained by default via two directories in your home directory:

  • $(AndroidToolchainCacheDirectory): Where downloaded files are cached. Defaults to the $HOME/android-archives directory.
@jonpryor
jonpryor / MainActivity.cs
Created April 10, 2017 20:54
PCLStorage NuGet use
using System;
using Android.App;
using Android.Widget;
using Android.OS;
using System.Threading.Tasks;
using PCLStorage;
namespace FurkanErasian_PclStorage
// array hash
class ah {
public static void main (String[] args) {
int[] a = new int []{1,2,3};
int[] b = new int []{1,2,3};
System.out.println ("a hash: " + a.hashCode());
System.out.println ("b hash: " + b.hashCode());
}
}
uname -a
Darwin casper 16.7.0 Darwin Kernel Version 16.7.0: Thu Jun 15 17:36:27 PDT 2017; root:xnu-3789.70.16~2/RELEASE_X86_64 x86_64
git log --pretty=tformat:"%H - %s [%ar] [%d]" -1
ce28d4e5bfebff5cc727d624f222db13bf03646c - Merge pull request #1907 from LuaAndC/build-pkg-ignore-some-gitkeep [2 days ago] [ (HEAD -> mxe-upstream, mxe-upstream/master)]
lsb_release -a 2>/dev/null || sw_vers 2>/dev/null || true
ProductName: Mac OS X
ProductVersion: 10.12.6
BuildVersion: 16G29
autoconf --version 2>/dev/null | head -1
autoconf (GNU Autoconf) 2.69
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<!-- Ankit: Override these! -->
<MonoSourceFullPath>/Volumes/Seagate4TB/work/xamarin-android/external/mono</MonoSourceFullPath>
</PropertyGroup>
<ItemGroup>
<MonoTestAssembly Include="monodroid_corlib_test.dll">
<SourcePath>corlib</SourcePath>
</MonoTestAssembly>
</ItemGroup>
// Build with: csc curl.cs -r:System.Net.Http.dll /langversion:7.1
using System;
using System.IO;
using System.Net.Http;
using System.Threading.Tasks;
using TTask = System.Threading.Tasks.Task;
class App {
<api
api-source="class-parse">
<package
name="android.support.v7.recyclerview.extensions"
jni-name="android/support/v7/recyclerview/extensions">
<class
abstract="false"
deprecated="not deprecated"
jni-extends="Ljava/lang/Object;"
extends="java.lang.Object"
// switch on type?
using System;
class App {
public static void Main ()
{
sbyte v;
if (TryConvert (42.0, out v)) {
Console.WriteLine ($"v={v}");
}