Я работаю над приложением для Android, в котором используется библиотека совместимости Android (android -support -v4 ). До SDK 20 я мог скомпилировать свое приложение со следующей записью uses-sdk
в своем манифесте.
<uses-sdk android:minSdkVersion="7" />
Все мои фрагменты, которые запустили действие для результата, получили свои результаты правильно.
Однажды (Перед обновлением до SDK 20 )я исправлял проблемы с lint и добавил android:targetSdkVersion
в манифест в соответствии с запросом флага lint, и вскоре понял, что ни один из моих фрагментов не получает onActivityResilt ()звонки.
Теперь каждый раз, когда я обновлялся до SDK 20.0.1, я вынужден использовать запись android:targetSdkVersion
в uses-sdk
в своем манифесте; в противном случае R.java никогда не генерируется.
Вот моя текущая uses-sdk
запись манифеста
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="16" />
В настоящее время из-за этой странной ошибки мое приложение все еще не работает. Я попытался обновить свою библиотеку совместимости до последней версии r9.
Также я перепроверил все свои вызовы startActivityForResult()
во фрагментах. Все они используют правильные вызовы через метод фрагмента.
то есть
this.startActivityForResult(intent, requestCode);
нет
this.getActivity().startActivityForResult(intent, requestCode);
Моя текущая среда разработки:
Android SDK 20.0.1
Android SDK Platform Tools 13
ADT 20.0.2
Будем очень признательны за любую помощь, так как эта ошибка в настоящее время является кирпичной стеной, которая мешает моим окончательным бета-тестам.
РЕДАКТИРОВАТЬ
Вот мой выводant debug
$ ant debug Buildfile: /home/ricky/Development/workspace/location_ringer/LocationRinger/build.xml
-set-mode-check:
-set-debug-files:
-check-env: [checkenv] Android SDK Tools Revision 20.0.1 [checkenv] Installed at /app/android-sdk-linux_86
-setup: [echo] Project Name: ListActivity [gettype] Project Type: Application
-set-debug-mode:
-debug-obfuscation-check:
-build-setup: [echo] Resolving Build Target for ListActivity... [gettarget] Project Target: Google APIs [gettarget] Vendor: Google Inc. [gettarget] Platform Version: 4.1 [gettarget] API level:
16 [echo] ---------- [echo] Creating output directories if needed... [echo] ---------- [echo] Resolving Dependencies for ListActivity... [dependency] Library dependencies: [dependency] [dependency] ------------------ [dependency] Ordered libraries: [dependency] [dependency] ------------------ [dependency] API<=15: Adding annotations.jar to the classpath. [echo] ---------- [echo] Building Libraries with 'debug'...nodeps:
-set-mode-check:
-set-debug-files:
-check-env: [checkenv] Android SDK Tools Revision 20.0.1 [checkenv] Installed at /app/android-sdk-linux_86
-setup: [echo] Project Name: LocationLib [gettype] Project Type: Android Library
-set-debug-mode:
-debug-obfuscation-check:
-build-setup: [echo] Resolving Build Target for LocationLib... [gettarget] Project Target: Google APIs [gettarget] Vendor: Google Inc. [gettarget] Platform Version: 4.1 [gettarget] API level:
16 [echo] ---------- [echo] Creating output directories if needed... [echo] ---------- [echo] Resolving Dependencies for LocationLib... [dependency] Library dependencies: [dependency] No Libraries [dependency] [dependency] ------------------ [dependency] API<=15: Adding annotations.jar to the classpath.-pre-build:
-code-gen: [mergemanifest] No changes in the AndroidManifest files. [echo] Handling aidl files... [aidl] No AIDL files to compile. [echo] ---------- [echo] Handling RenderScript files... [renderscript] No RenderScript files to compile. [echo] ---------- [echo] Handling Resources... [aapt] No changed resources. R.java and Manifest.java untouched. [echo] ---------- [echo] Handling BuildConfig class... [buildconfig] No need to generate new BuildConfig.
-pre-compile:
-compile: [echo] Creating library output jar file...
-post-compile:
-obfuscate:
-dex: [echo] Library project: do not convert bytecode...
-crunch: [crunch] Crunching PNG Files in source dir: /home/ricky/Development/workspace/location_library/LocationLib/res
[crunch] To destination dir: /home/ricky/Development/workspace/location_library/LocationLib/bin/res [crunch] Crunched 0 PNG files to update cache-package-resources: [echo] Library project: do not package resources...
-package: [echo] Library project: do not package apk...
-post-package:
-do-debug: [echo] Library project: do not create apk... [propertyfile] Updating property file: /home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop [propertyfile] Updating property file: /home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop [propertyfile] Updating property file: /home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop [propertyfile] Updating property file: /home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop
-post-build:
debug:
nodeps:
-set-mode-check:
-set-debug-files:
-check-env: [checkenv] Android SDK Tools Revision 20.0.1 [checkenv] Installed at /app/android-sdk-linux_86
-setup: [echo] Project Name: ExceptionHandlerLib [gettype] Project Type: Android Library
-set-debug-mode:
-debug-obfuscation-check:
-build-setup: [echo] Resolving Build Target for ExceptionHandlerLib... [gettarget] Project Target: Android 4.1 [gettarget] API level:
16 [echo] ---------- [echo] Creating output directories if needed... [echo] ---------- [echo] Resolving Dependencies for ExceptionHandlerLib... [dependency] Library dependencies: [dependency] No Libraries [dependency] [dependency] ------------------ [dependency] API<=15: Adding annotations.jar to the classpath.-pre-build:
-code-gen: [mergemanifest] No changes in the AndroidManifest files. [echo] Handling aidl files... [aidl] No AIDL files to compile. [echo] ---------- [echo] Handling RenderScript files... [renderscript] No RenderScript files to compile. [echo] ---------- [echo] Handling Resources... [aapt] No changed resources. R.java and Manifest.java untouched. [echo] ---------- [echo] Handling BuildConfig class... [buildconfig] No need to generate new BuildConfig.
-pre-compile:
-compile: [echo] Creating library output jar file...
-post-compile:
-obfuscate:
-dex: [echo] Library project: do not convert bytecode...
-crunch: [crunch] Crunching PNG Files in source dir: /home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/res [crunch] To destination dir: /home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/res [crunch] Crunched 0 PNG files to update cache
-package-resources: [echo] Library project: do not package resources...
-package: [echo] Library project: do not package apk...
-post-package:
-do-debug: [echo] Library project: do not create apk... [propertyfile] Updating property file: /home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop [propertyfile] Updating property file: /home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop [propertyfile] Updating property file: /home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop [propertyfile] Updating property file: /home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop
-post-build:
debug:
-pre-build:
-code-gen: [mergemanifest] Merging AndroidManifest files into one. [mergemanifest] Merging manifests from project and 2 libraries. [mergemanifest] Warning: [AndroidManifest.xml:3, AndroidManifest.xml:3] Main manifest has but library uses targetSdkVersion='16' [mergemanifest] Note: main manifest lacks a declaration, which defaults to value minSdkVersion or 1. [mergemanifest] Warning: [AndroidManifest.xml:3, AndroidManifest.xml:13] Main manifest has but library uses targetSdkVersion='16' [mergemanifest] Note: main manifest lacks a declaration, which defaults to value minSdkVersion or 1.
BUILD FAILED /app/android-sdk-linux_86/tools/ant/build.xml:616: null
Total time: 2 seconds
РЕДАКТИРОВАТЬ
Я заглянул в /app/android-sdk-linux_86/tools/ant/build.xml:616
и обнаружил, что в следующей строке выдается нульenabled="${manifestmerger.enabled}">
вот и весь блок
Я попытаюсь отключить параметр слияния манифеста и посмотреть, что произойдет
РЕДАКТИРОВАТЬ
Казалось бы, удаление manifestmerger.enabled=true из project.properties решило мою проблему.Теперь проект компилируется и работает отлично. Я думаю, что должен сообщить об этой ошибке команде Android. В моем манифесте есть следующая запись
<uses-sdk android:minSdkVersion="7" />
Однако onActivityResult ()по-прежнему не вызывается, если я поднимаю targetSdkVersion выше 7, так что это на самом деле не решает корневой проблемы, но мой проект теперь работает правильно