У меня это в моем Main.axml
;
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_height="fill_parent"
android:layout_width="fill_parent"
>
<Button
android:id="@+id/MyButton"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="@string/Hello"/>
<ImageView
android:src="@drawable/samplebackground"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/MyButton"/>
</RelativeLayout>
Он строит отлично, а sampleBackground - это jpg, который был включен в мой проект.
Однако, когда я пытаюсь развернуть, я получаю сообщение об ошибке:
Object reference not set to an instance of an object
И есть ряд строк, в которых указано <filename unknown>
Если я удалю ImageView из разметки, приложение будет отлично отлажено.
Любые мысли?
полный стек
------ Сборка запущена: Проект: MonoAndroidApplication1, Конфигурация: Отладка Любой процессор ------ MonoAndroidApplication1 → C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\bin\Debug\MonoAndroidApplication1.dll Версия движка Microsoft (R) 4.0.30319.1 [Microsoft.NET Framework, версия 4.0.30319.225] Copyright (C) Microsoft Corporation 2007. Все права защищены.
Сборка началась 8/06/2011 8:37:40 AM.
Проект "C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\MonoAndroidApplication1.csproj" на node 1 (TargetAppagePackage target (s)).
_GenerateAndroidAssetsDir:
Пропуск цели "_GenerateAndroidAssetsDir", поскольку он не имеет выходов.
_ResolveMonoAndroidSdks: Поиск Android SDK.. Ключ HKCU\SOFTWARE\Android SDK Tools\Путь не найден. Ключ HKLM\SOFTWARE\Android SDK Tools\Path found: Путь содержит adb.exe в \platform- инструментах (C:\Program Files\Android\android- sdk). Поиск Java SDK.. Доступен ключ HKLM\SOFTWARE\JavaSoft\Java Development Kit\CurrentVersion: 1.6. Key HKLM\SOFTWARE\JavaSoft\Java Development Kit\1.6\JavaHome найдено: Путь содержит jarsigner.exe в \bin (C:\Program Files\Java\jdk1.6.0_25). MonoAndroid Tools: C:\Program Files\MSBuild\Novell \ MonoAndroid Framework: C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v2.2 \; C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0 \ Android SDK: C:\Program Files\Android\android- sdk \ Java SDK: C:\Program Files\Java\jdk1.6.0_25 \
_ValidateAndroidPackageProperties: Задача GetAndroidPackageName ManifestFile: AssemblyName: MonoAndroidApplication1 Имя пакета: MonoAndroidApplication1.MonoAndroidApplication1
_UpdateAndroidResgen:
Пропуск целевой "_UpdateAndroidResgen", потому что все выходные файлы имеют дату up- to- относительно входных файлов.
GenerateTargetFrameworkMonikerAttribute:
Пропуск цели "GenerateTargetFrameworkMonikerAttribute", потому что все выходные файлы имеют дату up- to- относительно входных файлов.
CoreCompile:
Пропуск целевой "CoreCompile", потому что все выходные файлы имеют дату up- to- относительно входных файлов.
_CopyOutOfDateSourceItemsToOutputDirectoryAlways: Копирование файла из "C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\Resources\Drawable- land\Icon.png" в "bin\Debug\Resources\Drawable- land\Icon.png".
CopyFilesToOutputDirectory: MonoAndroidApplication1 → C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\bin\Debug\MonoAndroidApplication1.dll
ContractDeclarativeAssemblyCS:
Пропуск цели "ContractDeclarativeAssemblyCS", потому что все выходные файлы имеют дату up- to- по отношению к входным файлам.
_ConvertDebuggingFiles:
Пропуск целевой "_ConvertDebuggingFiles", потому что все выходные файлы имеют дату up- to- относительно входных файлов.
_CompileAndroidPackage: Задача Mandroid Ассемблировки: C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\bin\Debug\MonoAndroidApplication1.dll; C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v2.2\Mono.Android.dll; C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\mscorlib.dll; C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Core.dll; C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.dll; C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.dll; C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.Linq.dll I18nAssemblies: BuildDirectory: C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\obj\Debug \ ReferenceAssembliesDirectory: C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v2.2 \; C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0 \;; AndroidSdkDirectory: C:\Program Files\Android\android- sdk \ JavaSdkDirectory: C:\Program Files\Java\jdk1.6.0_25 \ AssetDirectory: C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\obj\Debug\assets \ AndroidSdkPlatform: 8 MonoAndroidToolsDirectory: C:\Program Files\MSBuild\Novell \ ResourceDirectory: C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\obj\Debug\res \ ManifestTemplate: Пакет: MonoAndroidApplication1.MonoAndroidApplication1 NativeLibrary: JavaSource: Отладка: True UseSharedRuntime: True ПоддерживаетсяАбис: armeabi LinkMode: Нет ExtraArgs:
C:\Program Files\MSBuild\Novell\mandroid.exe -v --nosign --sdk- dir = "C:\Program Files\Android\android- sdk" --builddir= "C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\obj\Debug\android" --framework- dir = "C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v2.2" --framework- dir = "C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0" -S = "C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\obj\Debug\res" --package = "MonoAndroidApplication1.MonoAndroidApplication1" --nolink --abi = "armeabi" --java -S dk-dir = "C:\Program Files\Java\jdk1.6.0_25" --debug --sdk- platform = "8" -A= "C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\obj\Debug\assets" "C:\Разработка\MonoAndroidApplication1\MonoAndroidApplication1\bin\Debug\MonoAndroidApplication1.dll" "C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v2.2\Mono.Android.dll" "C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\mscorlib.dll" "C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Core.dll" "C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.dll" "C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.dll" "C:\Program Files\Reference Assemblies\Microsoft\Framework\MonoAndroid\v1.0\System.Xml.Linq.dll"
monodroid: ошибка 1: System.NullReferenceException: ссылка на объект не установлена в экземпляр объекта [C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\MonoAndroidApplication1.csproj] в MonoDroid.Utils. ProcessRocks+ c__Iterator5.MoveNext() [0x00000] в: 0 в Monodroid.Toolbox.InvokeCommand(IEnumerable 1 commandLine) [0x00000] in <filename unknown>:0
at Monodroid.Toolbox.InvokeAapt (System.String packageName) [0x00000] in <filename unknown>:0
at Monodroid.Droidinator.CreatePackagedResources (System.Collections.Generic.List
1 javaTypes) [0x00000] в: 0 в Monodroid.Droidinator.CreateApk() [0x00000] в: 0 в Monodroid.MainClass.Main(System.String [] argv) [0x00000] в: 0
Done Building Project "C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\MonoAndroidApplication1.csproj" (SignAndroidPackage target (s)) - FAILED.
Сборка FAILED.
"C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\MonoAndroidApplication1.csproj" (цель SignAndroidPackage) (1) → (_CompileAndroidPackage target) → monodroid: error 1: System.NullReferenceException: ссылка на объект не установлена в экземпляр объекта [C:\Development\MonoAndroidApplication1\MonoAndroidApplication1\MonoAndroidApplication1.csproj]
EDIT: Я нашел решение; просто убедитесь, что имя файла изображения находится в нижнем регистре. Мое изображение было названо Image.png, переименовав его в image.png, это сработало.
Достаточно легко воспроизвести - просто создайте новое решение с макетом с ImageView. Установите android:src="@drawable/Image"
.
Если я набираю изображение с нижним регистром, изображение, оно дает ошибку компилятора, но когда я исправляю его на Image no compile time errors, но упаковка терпит неудачу...
Изображение находится в правильной папке и установлено значение AnddroidResource.
Поэтому мне бы очень понравилась эта помощь.
Спасибо, Никлас
Убедитесь, что для Action для этого файла образа установлено значение AndroidResource. Вы можете установить действие сборки, щелкнув правой кнопкой мыши на файле в Visual Studio и выбрав "Свойства".