dotnet / android

.NET for Android provides open-source bindings of the Android SDK for use with .NET managed languages such as C#
MIT License
1.93k stars 527 forks source link

Enabling ProGuard puts application in infinite deploy loop #1646

Closed JonDouglas closed 6 years ago

JonDouglas commented 6 years ago

Steps to Reproduce

  1. Download the following repos & ensure you're in a Release configuration when deploying. App16-ProGuard.zip App16-NoProGuard.zip
  2. NoProGuard works as expected and deploys fine.
  3. ProGuard sits in an infinte deployment loop with details below regarding the ProGuard Task and adb logcat:
ProGuard Task ``` 2>Task "Proguard" (TaskId:497) 2> Task Parameter:ProguardJarPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\proguard\lib\proguard.jar (TaskId:497) 2> Task Parameter:AndroidSdkDirectory=C:\Users\dougl\AppData\Local\Android\sdk\ (TaskId:497) 2> Task Parameter:JavaToolPath=C:\Program Files\Java\jdk1.8.0_161\\bin (TaskId:497) 2> Task Parameter:ProguardToolPath=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\proguard\ (TaskId:497) 2> Task Parameter:JavaPlatformJarPath=C:\Users\dougl\AppData\Local\Android\sdk\platforms\android-27\android.jar (TaskId:497) 2> Task Parameter:ClassesOutputDirectory=obj\Release\android\bin\classes (TaskId:497) 2> Task Parameter:AcwMapFile=obj\Release\acw-map.txt (TaskId:497) 2> Task Parameter:ProguardCommonXamarinConfiguration=obj\Release\proguard\proguard_xamarin.cfg (TaskId:497) 2> Task Parameter:ProguardGeneratedReferenceConfiguration=obj\Release\proguard\proguard_project_references.cfg (TaskId:497) 2> Task Parameter:ProguardGeneratedApplicationConfiguration=obj\Release\proguard\proguard_project_primary.cfg (TaskId:497) 2> Task Parameter:ProguardConfigurationFiles= 2> {sdk.dir}tools\proguard\proguard-android.txt; 2> {intermediate.common.xamarin}; 2> {intermediate.references}; 2> {intermediate.application}; 2> proguard.cfg;C:\Users\dougl\.nuget\packages\xamarin.android.arch.lifecycle.runtime\1.0.3\build\MonoAndroid80\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.core.ui\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.v7.recyclerview\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.media.compat\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.animated.vector.drawable\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.transition\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.design\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt; 2> (TaskId:497) 2> Task Parameter: 2> JavaLibrariesToEmbed= 2> C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v8.1\mono.android.jar 2> obj\Release\lp\1\jl\formsviewgroup.jar 2> obj\Release\lp\10\jl\bin\classes.jar 2> obj\Release\lp\11\jl\bin\classes.jar 2> obj\Release\lp\12\jl\bin\classes.jar 2> obj\Release\lp\13\jl\bin\classes.jar 2> obj\Release\lp\14\jl\bin\classes.jar 2> obj\Release\lp\15\jl\bin\classes.jar 2> obj\Release\lp\16\jl\bin\classes.jar 2> obj\Release\lp\17\jl\bin\classes.jar 2> obj\Release\lp\18\jl\bin\classes.jar 2> obj\Release\lp\19\jl\bin\classes.jar 2> obj\Release\lp\20\jl\bin\classes.jar 2> obj\Release\lp\21\jl\bin\classes.jar 2> obj\Release\lp\3\jl\arch-core-common.jar 2> obj\Release\lp\4\jl\arch-lifecycle-common.jar 2> obj\Release\lp\5\jl\bin\classes.jar 2> obj\Release\lp\6\jl\bin\classes.jar 2> obj\Release\lp\8\jl\bin\classes.jar 2> obj\Release\lp\9\jl\bin\classes.jar (TaskId:497) 2> Task Parameter:DoNotPackageJavaLibraries=support-annotations.jar (TaskId:497) 2> Task Parameter:ProguardJarOutput=obj\Release\proguard\__proguard_output__.jar (TaskId:497) 2> Task Parameter:DumpOutput=obj\Release\proguard\dump.txt (TaskId:497) 2> Task Parameter:PrintSeedsOutput=obj\Release\proguard\seeds.txt (TaskId:497) 2> Task Parameter:PrintUsageOutput=obj\Release\proguard\usage.txt (TaskId:497) 2> Task Parameter:PrintMappingOutput=obj\Release\proguard\mapping.txt (TaskId:497) 2> Task Parameter:ProguardInputJarFilter=(!META-INF/MANIFEST.MF) (TaskId:497) 2> Proguard (TaskId:497) 2> AndroidSdkDirectory: C:\Users\dougl\AppData\Local\Android\sdk\ (TaskId:497) 2> JavaPlatformJarPath: C:\Users\dougl\AppData\Local\Android\sdk\platforms\android-27\android.jar (TaskId:497) 2> ClassesOutputDirectory: obj\Release\android\bin\classes (TaskId:497) 2> AcwMapFile: obj\Release\acw-map.txt (TaskId:497) 2> ProguardGeneratedApplicationConfiguration: obj\Release\proguard\proguard_project_primary.cfg (TaskId:497) 2> ProguardJarOutput: obj\Release\proguard\__proguard_output__.jar (TaskId:497) 2> ProguardGeneratedReferenceConfiguration: (TaskId:497) 2> obj\Release\proguard\proguard_project_references.cfg (TaskId:497) 2> ProguardGeneratedApplicationConfiguration: (TaskId:497) 2> obj\Release\proguard\proguard_project_primary.cfg (TaskId:497) 2> ProguardCommonXamarinConfiguration: (TaskId:497) 2> obj\Release\proguard\proguard_xamarin.cfg (TaskId:497) 2> ProguardConfigurationFiles: (TaskId:497) 2> 2> {sdk.dir}tools\proguard\proguard-android.txt; 2> {intermediate.common.xamarin}; 2> {intermediate.references}; 2> {intermediate.application}; 2> proguard.cfg;C:\Users\dougl\.nuget\packages\xamarin.android.arch.lifecycle.runtime\1.0.3\build\MonoAndroid80\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.core.ui\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.v7.recyclerview\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.media.compat\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.animated.vector.drawable\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.transition\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt;C:\Users\dougl\.nuget\packages\xamarin.android.support.design\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt; 2> (TaskId:497) 2> ExternalJavaLibraries: (TaskId:497) 2> DoNotPackageJavaLibraries: (TaskId:497) 2> support-annotations.jar (TaskId:497) 2> UseProguard: False (TaskId:497) 2> EnableLogging: False (TaskId:497) 2> DumpOutput: obj\Release\proguard\dump.txt (TaskId:497) 2> PrintSeedsOutput: obj\Release\proguard\seeds.txt (TaskId:497) 2> PrintMappingOutput: obj\Release\proguard\mapping.txt (TaskId:497) 2> ProguardInputJarFilter: (!META-INF/MANIFEST.MF) (TaskId:497) 2> Environment Variables passed to tool: (TaskId:497) 2> PROGUARD_HOME=C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\proguard (TaskId:497) 2> JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 (TaskId:497) 2> C:\Program Files\Java\jdk1.8.0_161\\bin\java.exe -jar "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Xamarin\Android\proguard\lib\proguard.jar" -include "'C:\Users\dougl\AppData\Local\Android\sdk\\tools\proguard\proguard-android.txt'" -include "'obj\Release\proguard\proguard_xamarin.cfg'" -include "'obj\Release\proguard\proguard_project_references.cfg'" -include "'obj\Release\proguard\proguard_project_primary.cfg'" -include "'proguard.cfg'" -include "'C:\Users\dougl\.nuget\packages\xamarin.android.arch.lifecycle.runtime\1.0.3\build\MonoAndroid80\..\..\proguard\proguard.txt'" -include "'C:\Users\dougl\.nuget\packages\xamarin.android.support.core.ui\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt'" -include "'C:\Users\dougl\.nuget\packages\xamarin.android.support.v7.recyclerview\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt'" -include "'C:\Users\dougl\.nuget\packages\xamarin.android.support.media.compat\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt'" -include "'C:\Users\dougl\.nuget\packages\xamarin.android.support.animated.vector.drawable\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt'" -include "'C:\Users\dougl\.nuget\packages\xamarin.android.support.transition\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt'" -include "'C:\Users\dougl\.nuget\packages\xamarin.android.support.design\27.0.2-preview1\build\MonoAndroid81\..\..\proguard\proguard.txt'" -injars "'obj\Release\android\bin\classes\..\classes.zip'(!META-INF/MANIFEST.MF);'C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v8.1\mono.android.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\1\jl\formsviewgroup.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\10\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\11\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\12\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\13\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\14\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\15\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\16\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\17\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\18\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\19\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\20\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\21\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\3\jl\arch-core-common.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\4\jl\arch-lifecycle-common.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\5\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\6\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\8\jl\bin\classes.jar'(!META-INF/MANIFEST.MF);'obj\Release\lp\9\jl\bin\classes.jar'(!META-INF/MANIFEST.MF)" -libraryjars "'C:\Users\dougl\AppData\Local\Android\sdk\platforms\android-27\android.jar'" -outjars obj\Release\proguard\__proguard_output__.jar -optimizations !code/allocation/variable (TaskId:497) 2> ProGuard, version 5.3.2 (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.arch.core.internal.SafeIterableMap$SupportRemove' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.arch.lifecycle.LifecycleObserver' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.arch.lifecycle.LifecycleOwner' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.widget.AutoSizeableTextView' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.ActionProvider$SubUiVisibilityListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v4.view.ActionProvider_SubUiVisibilityListenerImplementor' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.ActionProvider$VisibilityListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v4.view.ActionProvider_VisibilityListenerImplementor' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.NestedScrollingChild' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.NestedScrollingParent' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.TintableBackgroundView' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.ViewPropertyAnimatorListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.ViewPropertyAnimatorUpdateListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.internal.view.SupportMenu' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.internal.view.SupportMenuItem' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.app.ActivityCompat$OnRequestPermissionsResultCallback' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.app.ActivityCompat$PermissionCompatDelegate' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.app.ActivityCompat$RequestPermissionsRequestCodeValidator' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.app.SharedElementCallback$OnSharedElementsReadyListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.app.SharedElementCallback' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.ViewPager$OnAdapterChangeListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v4.view.ViewPager_OnAdapterChangeListenerImplementor' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.ViewPager$OnPageChangeListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v4.view.ViewPager_OnPageChangeListenerImplementor' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.view.ViewPager$PageTransformer' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.widget.SwipeRefreshLayout$OnChildScrollUpCallback' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.widget.SwipeRefreshLayout$OnRefreshListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v4.widget.SwipeRefreshLayout_OnRefreshListenerImplementor' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.widget.DrawerLayout$DrawerListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v4.widget.DrawerLayout_DrawerListenerImplementor' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.content.Loader$OnLoadCanceledListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.content.Loader$OnLoadCompleteListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.app.TaskStackBuilder$SupportParentable' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.design.widget.TabLayout$OnTabSelectedListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.design.widget.TabLayout_OnTabSelectedListenerImplementor' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.app.FragmentManager$BackStackEntry' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.app.FragmentManager$FragmentLifecycleCallbacks' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.app.FragmentManager$OnBackStackChangedListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v4.app.FragmentManager_OnBackStackChangedListenerImplementor' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v4.app.LoaderManager$LoaderCallbacks' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.view.ActionMode$Callback' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.view.menu.MenuPresenter$Callback' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.view.menu.MenuPresenter' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.view.menu.MenuView' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.view.menu.MenuBuilder$Callback' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.widget.Toolbar$OnMenuItemClickListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v7.widget.Toolbar_OnMenuItemClickListenerImplementor' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.widget.DecorToolbar' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.app.ActionBar$OnMenuVisibilityListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'mono.android.support.v7.app.ActionBar_OnMenuVisibilityListenerImplementor' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.app.ActionBar$OnNavigationListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.app.ActionBar$TabListener' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.app.ActionBarDrawerToggle$Delegate' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.app.ActionBarDrawerToggle$DelegateProvider' (TaskId:497) 2> Note: the configuration doesn't specify which class members to keep for class 'android.support.v7.app.AppCompatCallback' (TaskId:497) 2> Note: there were 55 '-keepclassmembers' options that didn't specify class (TaskId:497) 2> members. You should specify at least some class members or consider (TaskId:497) 2> if you just need '-keep'. (TaskId:497) 2> (http://proguard.sourceforge.net/manual/troubleshooting.html#classmembers) (TaskId:497) 2> Reading input... (TaskId:497) 2> Reading program zip [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\android\bin\classes.zip] (filtered) (TaskId:497) 2> Reading program jar [C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v8.1\mono.android.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\1\jl\formsviewgroup.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\10\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\11\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\12\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\13\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\14\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\15\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\16\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\17\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\18\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\19\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\20\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\21\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\3\jl\arch-core-common.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\4\jl\arch-lifecycle-common.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\5\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\6\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\8\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\9\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Reading library jar [C:\Users\dougl\AppData\Local\Android\sdk\platforms\android-27\android.jar] (TaskId:497) 2> Initializing... (TaskId:497) 2> Note: the configuration refers to the unknown class 'com.google.vending.licensing.ILicensingService' (TaskId:497) 2> Note: the configuration refers to the unknown class 'com.android.vending.licensing.ILicensingService' (TaskId:497) 2> Note: the configuration refers to the unknown class 'android.support.annotation.Keep' (TaskId:497) 2> Note: the configuration refers to the unknown class 'android.support.annotation.Keep' (TaskId:497) 2> Note: the configuration refers to the unknown class 'android.support.annotation.Keep' (TaskId:497) 2> Note: the configuration refers to the unknown class 'android.support.annotation.Keep' (TaskId:497) 2> Note: the configuration refers to the unknown class 'android.support.annotation.Keep' (TaskId:497) 2> Note: android.support.v4.app.NotificationCompatJellybean calls 'Field.getType' (TaskId:497) 2> Note: android.support.transition.GhostViewApi21: can't find dynamically referenced class android.view.GhostView (TaskId:497) 2> Note: android.support.v4.graphics.TypefaceCompatApi24Impl: can't find dynamically referenced class android.graphics.FontFamily (TaskId:497) 2> Note: android.support.v4.graphics.TypefaceCompatApi26Impl: can't find dynamically referenced class android.graphics.FontFamily (TaskId:497) 2> Note: android.support.v4.media.ParceledListSliceAdapterApi21: can't find dynamically referenced class android.content.pm.ParceledListSlice (TaskId:497) 2> Note: android.support.v4.text.ICUCompat: can't find dynamically referenced class libcore.icu.ICU (TaskId:497) 2> Note: android.support.v4.text.ICUCompat: can't find dynamically referenced class libcore.icu.ICU (TaskId:497) 2> Note: android.support.v7.app.ResourcesFlusher: can't find dynamically referenced class android.content.res.ThemedResourceCache (TaskId:497) 2> Note: android.support.v7.widget.DrawableUtils: can't find dynamically referenced class android.graphics.Insets (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.design.internal.BottomNavigationMenuView { void setPresenter(android.support.design.internal.BottomNavigationPresenter); }', but not the descriptor class 'android.support.design.internal.BottomNavigationPresenter' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.design.widget.BaseTransientBottomBar$SnackbarBaseLayout { void setOnLayoutChangeListener(android.support.design.widget.BaseTransientBottomBar$OnLayoutChangeListener); }', but not the descriptor class 'android.support.design.widget.BaseTransientBottomBar$OnLayoutChangeListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.design.widget.BaseTransientBottomBar$SnackbarBaseLayout { void setOnAttachStateChangeListener(android.support.design.widget.BaseTransientBottomBar$OnAttachStateChangeListener); }', but not the descriptor class 'android.support.design.widget.BaseTransientBottomBar$OnAttachStateChangeListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.design.widget.BottomNavigationView { void setOnNavigationItemSelectedListener(android.support.design.widget.BottomNavigationView$OnNavigationItemSelectedListener); }', but not the descriptor class 'android.support.design.widget.BottomNavigationView$OnNavigationItemSelectedListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.design.widget.BottomNavigationView { void setOnNavigationItemReselectedListener(android.support.design.widget.BottomNavigationView$OnNavigationItemReselectedListener); }', but not the descriptor class 'android.support.design.widget.BottomNavigationView$OnNavigationItemReselectedListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.design.widget.CoordinatorLayout { android.support.v4.view.WindowInsetsCompat setWindowInsets(android.support.v4.view.WindowInsetsCompat); }', but not the descriptor class 'android.support.v4.view.WindowInsetsCompat' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.design.widget.NavigationView { void setNavigationItemSelectedListener(android.support.design.widget.NavigationView$OnNavigationItemSelectedListener); }', but not the descriptor class 'android.support.design.widget.NavigationView$OnNavigationItemSelectedListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.graphics.drawable.VectorDrawableCompat$VPath { void setPathData(android.support.v4.graphics.PathParser$PathDataNode[]); }', but not the descriptor class 'android.support.v4.graphics.PathParser$PathDataNode' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v4.app.Fragment { void setOnStartEnterTransitionListener(android.support.v4.app.Fragment$OnStartEnterTransitionListener); }', but not the descriptor class 'android.support.v4.app.Fragment$OnStartEnterTransitionListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v4.app.SupportActivity { void putExtraData(android.support.v4.app.SupportActivity$ExtraData); }', but not the descriptor class 'android.support.v4.app.SupportActivity$ExtraData' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v4.widget.NestedScrollView { void setOnScrollChangeListener(android.support.v4.widget.NestedScrollView$OnScrollChangeListener); }', but not the descriptor class 'android.support.v4.widget.NestedScrollView$OnScrollChangeListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v4.widget.SlidingPaneLayout { void setPanelSlideListener(android.support.v4.widget.SlidingPaneLayout$PanelSlideListener); }', but not the descriptor class 'android.support.v4.widget.SlidingPaneLayout$PanelSlideListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.app.MediaRouteButton { void setRouteSelector(android.support.v7.media.MediaRouteSelector); }', but not the descriptor class 'android.support.v7.media.MediaRouteSelector' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.app.MediaRouteButton { void setDialogFactory(android.support.v7.app.MediaRouteDialogFactory); }', but not the descriptor class 'android.support.v7.app.MediaRouteDialogFactory' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.view.menu.ActionMenuItemView { void setItemInvoker(android.support.v7.view.menu.MenuBuilder$ItemInvoker); }', but not the descriptor class 'android.support.v7.view.menu.MenuBuilder$ItemInvoker' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.view.menu.ActionMenuItemView { void setPopupCallback(android.support.v7.view.menu.ActionMenuItemView$PopupCallback); }', but not the descriptor class 'android.support.v7.view.menu.ActionMenuItemView$PopupCallback' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.ActionBarOverlayLayout { void setActionBarVisibilityCallback(android.support.v7.widget.ActionBarOverlayLayout$ActionBarVisibilityCallback); }', but not the descriptor class 'android.support.v7.widget.ActionBarOverlayLayout$ActionBarVisibilityCallback' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.ActionMenuView { void setPresenter(android.support.v7.widget.ActionMenuPresenter); }', but not the descriptor class 'android.support.v7.widget.ActionMenuPresenter' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.ActionMenuView { void setOnMenuItemClickListener(android.support.v7.widget.ActionMenuView$OnMenuItemClickListener); }', but not the descriptor class 'android.support.v7.widget.ActionMenuView$OnMenuItemClickListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.ActivityChooserView { void setActivityChooserModel(android.support.v7.widget.ActivityChooserModel); }', but not the descriptor class 'android.support.v7.widget.ActivityChooserModel' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.ContentFrameLayout { void setAttachListener(android.support.v7.widget.ContentFrameLayout$OnAttachListener); }', but not the descriptor class 'android.support.v7.widget.ContentFrameLayout$OnAttachListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.FitWindowsFrameLayout { void setOnFitSystemWindowsListener(android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener); }', but not the descriptor class 'android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.FitWindowsLinearLayout { void setOnFitSystemWindowsListener(android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener); }', but not the descriptor class 'android.support.v7.widget.FitWindowsViewGroup$OnFitSystemWindowsListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.MenuPopupWindow$MenuDropDownListView { void setHoverListener(android.support.v7.widget.MenuItemHoverListener); }', but not the descriptor class 'android.support.v7.widget.MenuItemHoverListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setAccessibilityDelegateCompat(android.support.v7.widget.RecyclerViewAccessibilityDelegate); }', but not the descriptor class 'android.support.v7.widget.RecyclerViewAccessibilityDelegate' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setAdapter(android.support.v7.widget.RecyclerView$Adapter); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$Adapter' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setRecyclerListener(android.support.v7.widget.RecyclerView$RecyclerListener); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$RecyclerListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$LayoutManager' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setOnFlingListener(android.support.v7.widget.RecyclerView$OnFlingListener); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$OnFlingListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setRecycledViewPool(android.support.v7.widget.RecyclerView$RecycledViewPool); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$RecycledViewPool' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setViewCacheExtension(android.support.v7.widget.RecyclerView$ViewCacheExtension); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$ViewCacheExtension' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setChildDrawingOrderCallback(android.support.v7.widget.RecyclerView$ChildDrawingOrderCallback); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$ChildDrawingOrderCallback' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setOnScrollListener(android.support.v7.widget.RecyclerView$OnScrollListener); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$OnScrollListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.RecyclerView { void setItemAnimator(android.support.v7.widget.RecyclerView$ItemAnimator); }', but not the descriptor class 'android.support.v7.widget.RecyclerView$ItemAnimator' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.SearchView { void setOnQueryTextListener(android.support.v7.widget.SearchView$OnQueryTextListener); }', but not the descriptor class 'android.support.v7.widget.SearchView$OnQueryTextListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.SearchView { void setOnCloseListener(android.support.v7.widget.SearchView$OnCloseListener); }', but not the descriptor class 'android.support.v7.widget.SearchView$OnCloseListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.SearchView { void setOnSuggestionListener(android.support.v7.widget.SearchView$OnSuggestionListener); }', but not the descriptor class 'android.support.v7.widget.SearchView$OnSuggestionListener' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.SearchView { void setSuggestionsAdapter(android.support.v4.widget.CursorAdapter); }', but not the descriptor class 'android.support.v4.widget.CursorAdapter' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.SearchView$SearchAutoComplete { void setSearchView(android.support.v7.widget.SearchView); }', but not the descriptor class 'android.support.v7.widget.SearchView' (TaskId:497) 2> Note: the configuration keeps the entry point 'android.support.v7.widget.ViewStubCompat { void setOnInflateListener(android.support.v7.widget.ViewStubCompat$OnInflateListener); }', but not the descriptor class 'android.support.v7.widget.ViewStubCompat$OnInflateListener' (TaskId:497) 2> Note: there were 7 references to unknown classes. (TaskId:497) 2> You should check your configuration for typos. (TaskId:497) 2> (http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass) (TaskId:497) 2> Note: there were 1 classes trying to access generic signatures using reflection. (TaskId:497) 2> You should consider keeping the signature attributes (TaskId:497) 2> (using '-keepattributes Signature'). (TaskId:497) 2> (http://proguard.sourceforge.net/manual/troubleshooting.html#attributes) (TaskId:497) 2> Note: there were 40 unkept descriptor classes in kept class members. (TaskId:497) 2> You should consider explicitly keeping the mentioned classes (TaskId:497) 2> (using '-keep'). (TaskId:497) 2> (http://proguard.sourceforge.net/manual/troubleshooting.html#descriptorclass) (TaskId:497) 2> Note: there were 8 unresolved dynamic references to classes or interfaces. (TaskId:497) 2> You should check if you need to specify additional program jars. (TaskId:497) 2> (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass) (TaskId:497) 2> Ignoring unused library classes... (TaskId:497) 2> Original number of library classes: 4201 (TaskId:497) 2> Final number of library classes: 1449 (TaskId:497) 2> Shrinking... (TaskId:497) 2> Removing unused program classes and class elements... (TaskId:497) 2> Original number of program classes: 2528 (TaskId:497) 2> Final number of program classes: 1382 (TaskId:497) 2> Writing output... (TaskId:497) 2> Preparing output jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\proguard\__proguard_output__.jar] (TaskId:497) 2> Copying resources from program zip [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\android\bin\classes.zip] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\ReferenceAssemblies\Microsoft\Framework\MonoAndroid\v8.1\mono.android.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\1\jl\formsviewgroup.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\10\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\11\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\12\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\13\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\14\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\15\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\16\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\17\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\18\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\19\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\20\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\21\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\3\jl\arch-core-common.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\4\jl\arch-lifecycle-common.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\5\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\6\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\8\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Copying resources from program jar [C:\Users\dougl\source\repos\App16\App16\App16.Android\obj\Release\lp\9\jl\bin\classes.jar] (filtered) (TaskId:497) 2> Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8 (TaskId:497) 2>Done executing task "Proguard". (TaskId:497) ```

When deploying, adb logcat shows that ActivityManager continues to attempt starting processes and then kills them:

ActivityManager logs ``` 05-04 16:22:07.125 1643-2072/? I/ActivityManager: Start proc 16580:com.companyname.App16/u0a120 for activity com.companyname.App16/md550af35c58fe0c568111c2bedf2218ea8.MainActivity 05-04 16:22:07.144 16580-16580/? W/monodroid: Trying to load sgen from: /data/app/com.companyname.App16-UpjFVuuehB7ZQCfNsrflCA==/lib/x86/libmonosgen-2.0.so 05-04 16:22:07.171 16580-16580/? W/monodroid-gc: GREF GC Threshold: 46080 05-04 16:22:07.173 16580-16580/? W/monodroid: Calling into managed runtime init 05-04 16:22:07.199 1643-1661/? W/ActivityManager: Launch timeout has expired, giving up wake lock! 05-04 16:22:07.227 16580-16580/? W/mpanyname.App16: type=1400 audit(0.0:4732): avc: denied { read } for name="uptime" dev="proc" ino=4026532000 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 05-04 16:22:07.549 16580-16580/? E/mono: Unhandled Exception: System.TypeInitializationException: The type initializer for 'Java.Interop.ManagedPeer' threw an exception. ---> System.ArgumentException: Handle must be valid. Parameter name: type at Java.Interop.JniEnvironment+Types.IsInstanceOf (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type) [0x00022] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Android.Runtime.JNIEnv.IsInstanceOf (System.IntPtr obj, System.IntPtr clazz) [0x0000e] in :0 at Java.Interop.Runtime.IsGCUserPeer (System.IntPtr value) [0x0000f] in :0 at Java.Interop.Runtime.IsGCUserPeer (Android.Runtime.IJavaObject value) [0x0000b] in :0 at Java.Interop.TypeManager.CreateInstance (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer, System.Type targetType) [0x00127] in :0 at Java.Lang.Object.GetObject (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer, System.Type type) [0x000b9] in :0 at Java.Lang.Object._GetObject[T] (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer) [0x00017] in :0 at Java.Lang.Object.GetObject[T] (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer) [0x00000] in :0 at Android.Runtime.AndroidRuntime.GetExceptionForThrowable (Java.Interop.JniObjectReference& value, Java.Interop.JniObjectReferenceOptions transfer) [0x00006] in :0 at Java.Interop.JniEnvironment+Types.FindClass (System.String classname) [0x0010c] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniType..ctor (System.String classname) [0x00006] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniType.GetCachedJniType (Java.Interop.JniType& cachedType, System.String classname) [0x00018] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniPeerMembers.get_JniPeerType () [0x0000c] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.ManagedPeer..cctor () [0x00019] in <9a1864d6cbb040dc818ed782bdbf5089>:0 --- End of inner exception stack trace --- at Java.Interop.JniRuntime..ctor (Java.Interop.JniRuntime+CreationOptions options) [0x00229] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Android.Runtime.AndroidRuntime..ctor (System.IntPtr jnienv, System.IntPtr vm, System.Boolean allocNewObjectSupported, System.IntPtr classLoader, System.IntPtr classLoader_loadClass) [0x0000d] in :0 at Android.Runtime.JNIEnv.Initialize (Android.Runtime.JnienvInitializeArgs* args) [0x0017c] in :0 05-04 16:22:07.550 16580-16580/? E/mono-rt: [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'Java.Interop.ManagedPeer' threw an exception. ---> System.ArgumentException: Handle must be valid. Parameter name: type at Java.Interop.JniEnvironment+Types.IsInstanceOf (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type) [0x00022] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Android.Runtime.JNIEnv.IsInstanceOf (System.IntPtr obj, System.IntPtr clazz) [0x0000e] in :0 at Java.Interop.Runtime.IsGCUserPeer (System.IntPtr value) [0x0000f] in :0 at Java.Interop.Runtime.IsGCUserPeer (Android.Runtime.IJavaObject value) [0x0000b] in :0 at Java.Interop.TypeManager.CreateInstance (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer, System.Type targetType) [0x00127] in :0 at Java.Lang.Object.GetObject (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer, System.Type type) [0x000b9] in :0 at Java.Lang.Object._GetObject[T] (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer) [0x00017] in :0 at Java.Lang.Object.GetObject[T] (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer) [0x00000] in :0 at Android.Runtime.AndroidRuntime.GetExceptionForThrowable (Java.Interop.JniObjectReference& value, Java.Interop.JniObjectReferenceOptions transfer) [0x00006] in :0 at Java.Interop.JniEnvironment+Types.FindClass (System.String classname) [0x0010c] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniType..ctor (System.String classname) [0x00006] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniType.GetCachedJniType (Java.Interop.JniType& cachedType, System.String classname) [0x00018] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniPeerMembers.get_JniPeerType () [0x0000c] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.ManagedPeer..cctor () [0x00019] in <9a1864d6cbb040dc818ed782bdbf5089>:0 --- End of inner exception stack trace --- at Java.Interop.JniRuntime..ctor (Java.Interop.JniRuntime+CreationOptions options) [0x00229] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Android.Runtime.AndroidRuntime..ctor (System.IntPtr jnienv, System.IntPtr vm, System.Boolean allocNewObjectSupported, System.IntPtr classLoader, System.IntPtr classLoader_loadClass) [0x0000d] in :0 at Android.Runtime.JNIEnv.Initialize (Android.Runtime.JnienvInitializeArgs* args) [0x0017c] in :0 05-04 16:22:07.582 1643-2225/? I/ActivityManager: Process com.companyname.App16 (pid 16580) has died: fore TOP 05-04 16:22:07.582 1475-1475/? I/Zygote: Process 16580 exited cleanly (1) 05-04 16:22:07.586 16597-16597/? W/zygote: Unexpected CPU variant for X86 using defaults: x86 05-04 16:22:07.594 1643-2225/? I/ActivityManager: Start proc 16597:com.companyname.App16/u0a120 for activity com.companyname.App16/md550af35c58fe0c568111c2bedf2218ea8.MainActivity 05-04 16:22:07.615 16597-16597/? W/monodroid: Trying to load sgen from: /data/app/com.companyname.App16-UpjFVuuehB7ZQCfNsrflCA==/lib/x86/libmonosgen-2.0.so 05-04 16:22:07.642 16597-16597/? W/monodroid-gc: GREF GC Threshold: 46080 05-04 16:22:07.644 16597-16597/? W/monodroid: Calling into managed runtime init 05-04 16:22:07.697 16597-16597/? W/mpanyname.App16: type=1400 audit(0.0:4733): avc: denied { read } for name="uptime" dev="proc" ino=4026532000 scontext=u:r:untrusted_app:s0:c512,c768 tcontext=u:object_r:proc:s0 tclass=file permissive=0 05-04 16:22:08.015 16597-16597/? E/mono: Unhandled Exception: System.TypeInitializationException: The type initializer for 'Java.Interop.ManagedPeer' threw an exception. ---> System.ArgumentException: Handle must be valid. Parameter name: type at Java.Interop.JniEnvironment+Types.IsInstanceOf (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type) [0x00022] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Android.Runtime.JNIEnv.IsInstanceOf (System.IntPtr obj, System.IntPtr clazz) [0x0000e] in :0 at Java.Interop.Runtime.IsGCUserPeer (System.IntPtr value) [0x0000f] in :0 at Java.Interop.Runtime.IsGCUserPeer (Android.Runtime.IJavaObject value) [0x0000b] in :0 at Java.Interop.TypeManager.CreateInstance (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer, System.Type targetType) [0x00127] in :0 at Java.Lang.Object.GetObject (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer, System.Type type) [0x000b9] in :0 at Java.Lang.Object._GetObject[T] (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer) [0x00017] in :0 at Java.Lang.Object.GetObject[T] (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer) [0x00000] in :0 at Android.Runtime.AndroidRuntime.GetExceptionForThrowable (Java.Interop.JniObjectReference& value, Java.Interop.JniObjectReferenceOptions transfer) [0x00006] in :0 at Java.Interop.JniEnvironment+Types.FindClass (System.String classname) [0x0010c] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniType..ctor (System.String classname) [0x00006] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniType.GetCachedJniType (Java.Interop.JniType& cachedType, System.String classname) [0x00018] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniPeerMembers.get_JniPeerType () [0x0000c] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.ManagedPeer..cctor () [0x00019] in <9a1864d6cbb040dc818ed782bdbf5089>:0 --- End of inner exception stack trace --- at Java.Interop.JniRuntime..ctor (Java.Interop.JniRuntime+CreationOptions options) [0x00229] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Android.Runtime.AndroidRuntime..ctor (System.IntPtr jnienv, System.IntPtr vm, System.Boolean allocNewObjectSupported, System.IntPtr classLoader, System.IntPtr classLoader_loadClass) [0x0000d] in :0 at Android.Runtime.JNIEnv.Initialize (Android.Runtime.JnienvInitializeArgs* args) [0x0017c] in :0 05-04 16:22:08.016 16597-16597/? E/mono-rt: [ERROR] FATAL UNHANDLED EXCEPTION: System.TypeInitializationException: The type initializer for 'Java.Interop.ManagedPeer' threw an exception. ---> System.ArgumentException: Handle must be valid. Parameter name: type at Java.Interop.JniEnvironment+Types.IsInstanceOf (Java.Interop.JniObjectReference instance, Java.Interop.JniObjectReference type) [0x00022] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Android.Runtime.JNIEnv.IsInstanceOf (System.IntPtr obj, System.IntPtr clazz) [0x0000e] in :0 at Java.Interop.Runtime.IsGCUserPeer (System.IntPtr value) [0x0000f] in :0 at Java.Interop.Runtime.IsGCUserPeer (Android.Runtime.IJavaObject value) [0x0000b] in :0 at Java.Interop.TypeManager.CreateInstance (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer, System.Type targetType) [0x00127] in :0 at Java.Lang.Object.GetObject (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer, System.Type type) [0x000b9] in :0 at Java.Lang.Object._GetObject[T] (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer) [0x00017] in :0 at Java.Lang.Object.GetObject[T] (System.IntPtr handle, Android.Runtime.JniHandleOwnership transfer) [0x00000] in :0 at Android.Runtime.AndroidRuntime.GetExceptionForThrowable (Java.Interop.JniObjectReference& value, Java.Interop.JniObjectReferenceOptions transfer) [0x00006] in :0 at Java.Interop.JniEnvironment+Types.FindClass (System.String classname) [0x0010c] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniType..ctor (System.String classname) [0x00006] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniType.GetCachedJniType (Java.Interop.JniType& cachedType, System.String classname) [0x00018] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.JniPeerMembers.get_JniPeerType () [0x0000c] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Java.Interop.ManagedPeer..cctor () [0x00019] in <9a1864d6cbb040dc818ed782bdbf5089>:0 --- End of inner exception stack trace --- at Java.Interop.JniRuntime..ctor (Java.Interop.JniRuntime+CreationOptions options) [0x00229] in <9a1864d6cbb040dc818ed782bdbf5089>:0 at Android.Runtime.AndroidRuntime..ctor (System.IntPtr jnienv, System.IntPtr vm, System.Boolean allocNewObjectSupported, System.IntPtr classLoader, System.IntPtr classLoader_loadClass) [0x0000d] in :0 at Android.Runtime.JNIEnv.Initialize (Android.Runtime.JnienvInitializeArgs* args) [0x0017c] in :0 05-04 16:22:08.052 1475-1475/? I/Zygote: Process 16597 exited cleanly (1) 05-04 16:22:08.052 1643-16310/? I/ActivityManager: Process com.companyname.App16 (pid 16597) has died: fore TOP 05-04 16:22:08.057 16614-16614/? W/zygote: Unexpected CPU variant for X86 using defaults: x86 ... ```

Note: This log is repeated indefinitely and sits in a deploy.

Expected Behavior

Application should run and deploy.

Actual Behavior

ProGuard is stripping types and in turn throwing an exception which is being infinitely retried. Application shows blank content and sits in a deploy phase.

Version Information

Version Information ``` Microsoft Visual Studio Enterprise 2017 Version 15.6.7 VisualStudio.15.Release/15.6.7+27428.2043 Microsoft .NET Framework Version 4.7.02556 Installed Version: Enterprise Visual C++ 2017 00369-60000-00001-AA118 Microsoft Visual C++ 2017 Visual F# Tools 10.1 for F# 4.1 00369-60000-00001-AA118 Microsoft Visual F# Tools 10.1 for F# 4.1 Application Insights Tools for Visual Studio Package 8.11.10402.2 Application Insights Tools for Visual Studio ASP.NET and Web Tools 2017 15.0.40314.0 ASP.NET and Web Tools 2017 ASP.NET Core Razor Language Services 1.0 Provides languages services for ASP.NET Core Razor. ASP.NET Web Frameworks and Tools 2017 5.2.51214.0 For additional information, visit https://www.asp.net/ Azure App Service Tools v3.0.0 15.0.40215.0 Azure App Service Tools v3.0.0 C# Tools 2.7.0-beta3-62715-05. Commit Hash: db02128e6e3c4bdfc93e6ec425ac9162b4d4fe80 C# components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used. Common Azure Tools 1.10 Provides common services for use by Azure Mobile Services and Microsoft Azure Tools. JavaScript Language Service 2.0 JavaScript Language Service JetBrains ReSharper Ultimate 2017.3.2 Build 111.0.20180201.63358 JetBrains ReSharper Ultimate package for Microsoft Visual Studio. For more information about ReSharper Ultimate, visit http://www.jetbrains.com/resharper. Copyright © 2018 JetBrains, Inc. Merq 1.1.17-rc (cba4571) Command Bus, Event Stream and Async Manager for Visual Studio extensions. Microsoft Azure Tools 2.9 Microsoft Azure Tools for Microsoft Visual Studio 2017 - v2.9.51212.2 Microsoft Continuous Delivery Tools for Visual Studio 0.3 Simplifying the configuration of continuous build integration and continuous build delivery from within the Visual Studio IDE. Microsoft JVM Debugger 1.0 Provides support for connecting the Visual Studio debugger to JDWP compatible Java Virtual Machines Microsoft MI-Based Debugger 1.0 Provides support for connecting Visual Studio to MI compatible debuggers Microsoft Visual C++ Wizards 1.0 Microsoft Visual C++ Wizards Microsoft Visual Studio Tools for Containers 1.1 Develop, run, validate your ASP.NET Core applications in the target environment. F5 your application directly into a container with debugging, or CTRL + F5 to edit & refresh your app without having to rebuild the container. Microsoft Visual Studio VC Package 1.0 Microsoft Visual Studio VC Package Mono Debugging for Visual Studio 4.10.3-pre (ebc79bd) Support for debugging Mono processes with Visual Studio. NuGet Package Manager 4.6.0 NuGet Package Manager in Visual Studio. For more information about NuGet, visit http://docs.nuget.org/. ProjectServicesPackage Extension 1.0 ProjectServicesPackage Visual Studio Extension Detailed Info Snapshot Debugging Extension 1.0 Snapshot Debugging Visual Studio Extension Detailed Info SQL Server Data Tools 15.1.61801.210 Microsoft SQL Server Data Tools TypeScript Tools 15.6.20202.3 TypeScript Tools for Microsoft Visual Studio Visual Basic Tools 2.7.0-beta3-62715-05. Commit Hash: db02128e6e3c4bdfc93e6ec425ac9162b4d4fe80 Visual Basic components used in the IDE. Depending on your project type and settings, a different version of the compiler may be used. Visual C++ for Cross Platform Mobile Development (Android) 15.0.27428.2015 Visual C++ for Cross Platform Mobile Development (Android) Visual Studio Code Debug Adapter Host Package 1.0 Interop layer for hosting Visual Studio Code debug adapters in Visual Studio Visual Studio Tools for Unity 3.6.0.5 Visual Studio Tools for Unity VisualStudio.Mac 1.0 Mac Extension for Visual Studio Xamarin 4.11.0.20 (34bb723ca) Visual Studio extension to enable development for Xamarin.iOS and Xamarin.Android. Xamarin Designer 4.13.4 (aa3c520f8) Visual Studio extension to enable Xamarin Designer tools in Visual Studio. Xamarin.Android SDK 8.3.99.2 (HEAD/c302b8bd3) Xamarin.Android Reference Assemblies and MSBuild support. Xamarin.iOS and Xamarin.Mac SDK 11.9.0.252 (7c88610) Xamarin.iOS and Xamarin.Mac Reference Assemblies and MSBuild support. ```

MSBuild Log File

https://gist.github.com/JonDouglas/0a9d34eac53b59edf115b8fcec2d450a

jonpryor commented 6 years ago

@JonDouglas : Does this happen with Xamarin.Android 8.3.0 (current stable)?

Does this happen if you build from the command line (msbuild /t:Install) or only via the IDE?

The MSBuild Log File provided shows no installation errors, nor a hang, but it does contain EnableProguard=true, which suggest it's a log file from when ProGuard is enabled.

jonathanpeppers commented 6 years ago

So this app is crashing on start:

android.runtime.JavaProxyThrowable: System.NullReferenceException: Object reference not set to an instance of an object
  at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.InternalSetPage (Xamarin.Forms.Page page) [0x0006f] in <aae4e9ce5a5b4d3eaec4edf21079f3fa>:0 
  at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.SetMainPage () [0x0000c] in <aae4e9ce5a5b4d3eaec4edf21079f3fa>:0 
  at Xamarin.Forms.Platform.Android.FormsAppCompatActivity.LoadApplication (Xamarin.Forms.Application application) [0x0025c] in <aae4e9ce5a5b4d3eaec4edf21079f3fa>:0 
  at App16.Droid.MainActivity.OnCreate (Android.OS.Bundle bundle) [0x00028] in <2283dcaa5b3d4a3fa89439cfb243154e>:0 
  at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (System.IntPtr jnienv, System.IntPtr native__this, System.IntPtr native_savedInstanceState) [0x00011] in <a4ba3a5c75b64b9ebbd8f0443aa441ae>:0 
  at (wrapper dynamic-method) System.Object.7(intptr,intptr,intptr)
    at md550af35c58fe0c568111c2bedf2218ea8.MainActivity.n_onCreate(Native Method)
    at md550af35c58fe0c568111c2bedf2218ea8.MainActivity.onCreate(MainActivity.java:29)
    at android.app.Activity.performCreate(Activity.java:7136)
    at android.app.Activity.performCreate(Activity.java:7127)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
    at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
    at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
    at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
    at android.os.Handler.dispatchMessage(Handler.java:106)
    at android.os.Looper.loop(Looper.java:193)
    at android.app.ActivityThread.main(ActivityThread.java:6669)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
  Force finishing activity com.companyname.App16/md550af35c58fe0c568111c2bedf2218ea8.MainActivity

I updated to Xamarin.Forms 3.2 in the attached project and it works after using this proguard.cfg:

-keep class android.support.v7.widget.** { *; }
-dontwarn android.support.v7.widget.*

As for the looping thing, I suspect there "used to be" some retry logic in the IDE when a deploy failed? I didn't see that loop behavior in VS 15.8.5.

I think we can close this as fixed now. There is an existing issue for adding default proguard config for Xamarin.Forms: https://github.com/xamarin/Xamarin.Forms/issues/2709