我一直在开发一个使用 Android 兼容性库 (android-support-v4)的 Android 应用程序。在 SDK 20 之前,我可以在应用程序清单中使用以下的uses-sdk
条目进行编译。
<uses-sdk android:minSdkVersion="7" />
我所有启动带有结果的活动的片段都能正确接收它们的结果。
有一天(在我更新到SDK 20之前),我正在修复lint问题,并根据lint标志的请求添加了android:targetSdkVersion
到清单中,很快我意识到我的所有片段都没有接收到它们的onActivityResult()调用。
现在,自从我更新到SDK 20.0.1以来,我被迫在清单中的uses-sdk
条目中使用android:targetSdkVersion
;否则R.java将永远不会生成。
这是我当前的uses-sdk
清单条目:
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="16" />
目前由于这个奇怪的 bug,我的应用仍然无法正常运行。 我已经尝试更新兼容性库到最新版本 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”
构建文件:
/home/ricky/Development/workspace/location_ringer/LocationRinger/build.xml
-set-mode-check:
-set-debug-files:
检查环境:
Android SDK工具修订版20.0.1
已安装于/app/android-sdk-linux_86
设置:
项目名称:ListActivity
项目类型:应用程序
设置调试模式:
检查调试混淆:
构建设置:
解析ListActivity的构建目标...
项目目标:Google APIs
供应商:Google Inc.
平台版本:4.1
API级别:16
创建必要的输出目录...
解决ListActivity的依赖项...
库依赖项:
无库依赖项
API<=15:将annotations.jar添加到类路径中。
使用“debug”构建库...
nodeps:
-set-mode-check:
-set-debug-files:
检查环境:
Android SDK工具修订版20.0.1
已安装于/app/android-sdk-linux_86
设置:
项目名称:LocationLib
项目类型:Android库
设置调试模式:
检查调试混淆:
构建设置:
解析LocationLib的构建目标...
项目目标:Google APIs
供应商:Google Inc.
平台版本:4.1
API级别:16
创建必要的输出目录...
解决LocationLib的依赖项...
库依赖项:
无库依赖项
API<=15:将annotations.jar添加到类路径中。
预编译:
创建资源文件夹的库输出jar文件...
处理aidl文件...
没有AIDL文件需要编译。
处理RenderScript文件...
没有RenderScript文件需要编译。
处理资源...
未更改的资源。R.java和Manifest.java未变动。
处理BuildConfig类...
不需要生成新的BuildConfig。
编译:
使用“debug”构建库...
-Ddex.force.jumbo=true-源1.6-目标1.6 --output /home/ricky/Development/workspace/location_library/LocationLib/bin/classes.dex /home/ricky/Development/workspace/location_library/LocationLib/bin/classes /home/ricky/Development/workspace/location_library/LocationLib/libs/guava-r09.jar /home/ricky/Development/workspace/location_library/LocationLib/libs/android-support-v4.jar /home/ricky/Development/workspace/location_library/LocationLib/libs/ormlite-android-4.47.jar /home/ricky/Development/workspace/location_library/LocationLib/libs/ormlite-core-4.47.jar /home/ricky/Development/workspace/location_library/LocationLib/libs/appcompat_v7.jar /app/android-sdk-linux_86/platforms/android-16/android.jar /home/ricky/Development/workspace/location_library/LocationLib/libs/slf4j-android-1.5.8.jar /home/ricky/Development/workspace/location_library/LocationLib/libs/slf4j-api-1.5.8.jar
处理库项目:
不要转换字节码...
压缩PNG文件...
将PNG文件压缩到目录/home/ricky/Development/workspace/location_library/LocationLib/bin/res中,以更新缓存。
打包资源:库项目不需要打包资源...
创建apk:库项目不需要创建apk...
调试:
创建apk:库项目不需要创建apk...
-debug-obfuscation-check:
-set-mode-check:
-set-debug-files:
检查环境:
Android SDK工具修订版20.0.1
已安装于/app/android-sdk-linux_86
设置:
项目名称:ExceptionHandlerLib
项目类型:Android库
设置调试模式:
检查调试混淆:
构建设置:
解析ExceptionHandlerLib的构建目标...
项目目标:Android 4.1
编辑
我查看了/app/android-sdk-linux_86/tools/ant/build.xml:616
并发现以下行抛出了null enabled="${manifestmerger.enabled}">
这是整个代码块:
我将尝试禁用合并清单选项,看看会发生什么。
编辑
移除project.properties中的manifestmerger.enabled=true似乎解决了我的问题。 该项目现在可以编译并正常工作。 我认为我应该向Android团队报告此错误。 我的清单具有以下条目
<uses-sdk android:minSdkVersion="7" />
然而,如果我将targetSdkVersion提高到7以上,onActivityResult()仍然不会被调用,所以这并没有真正解决根本问题,但是我的项目现在可以正常工作了。
onActivityResult(..)
中显现的错误。 - Alex Curranandroid:targetSdkVersion="7"
吗? - pawelzieba