我一直在开发一个利用 android 可比性库 (android-support-v4) 的 android 应用程序。在 SDK 20 之前,我能够使用uses-sdk
清单中的以下条目来编译我的应用程序。
<uses-sdk android:minSdkVersion="7" />
我所有为结果开始活动的片段都正确收到了结果。
一天(在我更新到 SDK 20 之前)我正在修复 lint 问题,并android:targetSdkVersion
根据 lint 标志的请求添加到清单中,我很快意识到我的所有片段都没有收到它们的 onActivityResilt() 调用。
现在,自从我更新到 SDK 20.0.1 后,我不得不在清单中使用android:targetSdkVersion
inuses-sdk
条目;否则永远不会生成 R.java。
这是我当前的uses-sdk
清单条目
<uses-sdk
android:minSdkVersion="7"
android:targetSdkVersion="16" />
目前由于这个奇怪的错误,我的应用程序目前仍然被破坏。我已经尝试将我的兼容库更新为最新版本 r9。
我还仔细检查了我startActivityForResult()
在片段中的所有调用。他们都通过片段的方法使用正确的调用。
IE
this.startActivityForResult(intent, requestCode);
不是
this.getActivity().startActivityForResult(intent, requestCode);
我目前的开发环境:
Android SDK 20.0.1
Android SDK Platform Tools 13
ADT 20.0.2
任何帮助将不胜感激,因为这个错误目前是阻止我进行最终 beta 测试的砖墙。
编辑
这是我的输出ant debug
$ ant debug Buildfile: /home/ricky/Development/workspace/location_ringer/LocationRinger/build.xml
-设置模式检查:
-设置调试文件:
-check-env: [checkenv] Android SDK 工具修订版 20.0.1 [checkenv] 安装在 /app/android-sdk-linux_86
-setup:[echo] 项目名称:ListActivity [gettype] 项目类型:应用程序
-设置调试模式:
-调试混淆检查:
-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] 如果需要,创建输出目录... [echo] ---------- [echo] Resolving Dependencies for ListActivity... [dependency] 库依赖:[依赖项] [依赖项] ------------------ [依赖项] 有序库:[依赖项] [依赖项] --------------- --- [dependency] API<=15:将 annotations.jar 添加到类路径。[echo] ---------- [echo] 使用“调试”构建库...节点:
-设置模式检查:
-设置调试文件:
-check-env: [checkenv] Android SDK 工具修订版 20.0.1 [checkenv] 安装在 /app/android-sdk-linux_86
-setup:[echo] 项目名称:LocationLib [gettype] 项目类型:Android 库
-设置调试模式:
-调试混淆检查:
-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] 如果需要,创建输出目录... [echo] ---------- [echo] 解析 LocationLib 的依赖项... [dependency] 库依赖项:[ dependency] No Libraries [dependency] [dependency] ------------------ [dependency] API<=15:将 annotations.jar 添加到类路径。-预构建:
-code-gen: [mergemanifest] AndroidManifest 文件没有变化。[echo] 处理aidl 文件... [aidl] 没有要编译的AIDL 文件。[echo] ---------- [echo] 处理 RenderScript 文件... [renderscript] 没有要编译的 RenderScript 文件。[echo] ---------- [echo] 处理资源... [aapt] 没有更改的资源。R.java 和 Manifest.java 保持不变。[echo] ---------- [echo] 处理 BuildConfig 类... [buildconfig] 不需要生成新的 BuildConfig。
-预编译:
-compile: [echo] 创建库输出 jar 文件...
-编译后:
- 混淆:
-dex: [echo] 库项目:不转换字节码...
-crunch:[crunch] 在源目录中处理 PNG 文件:/home/ricky/Development/workspace/location_library/LocationLib/res
[crunch] 到目标目录:/home/ricky/Development/workspace/location_library/LocationLib/bin/res [crunch] 压缩 0 个 PNG 文件以更新缓存-package-resources: [echo] 库项目:不打包资源...
-package: [echo] 库项目:不打包apk...
-后包装:
-do-debug: [echo] 库项目:不要创建 apk... [propertyfile] 更新属性文件:/home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop [propertyfile] 更新属性文件: /home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop [propertyfile] 更新属性文件:/home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop [propertyfile] 更新属性文件: /home/ricky/Development/workspace/location_library/LocationLib/bin/build.prop
-构建后:
调试:
节点:
-设置模式检查:
-设置调试文件:
-check-env: [checkenv] Android SDK 工具修订版 20.0.1 [checkenv] 安装在 /app/android-sdk-linux_86
-setup:[echo] 项目名称:ExceptionHandlerLib [gettype] 项目类型:Android 库
-设置调试模式:
-调试混淆检查:
-build-setup: [echo] Resolving Build Target for ExceptionHandlerLib... [gettarget] Project Target: Android 4.1 [gettarget] API level:
16 [echo] ---------- [echo] 创建输出目录如果需要... [echo] ---------- [echo] 解析 ExceptionHandlerLib 的依赖项... [dependency] 库依赖项:[dependency] 没有库 [dependency] [dependency] ----- ------------- [dependency] API<=15:将 annotations.jar 添加到类路径。-预构建:
-code-gen: [mergemanifest] AndroidManifest 文件没有变化。[echo] 处理aidl 文件... [aidl] 没有要编译的AIDL 文件。[echo] ---------- [echo] 处理 RenderScript 文件... [renderscript] 没有要编译的 RenderScript 文件。[echo] ---------- [echo] 处理资源... [aapt] 没有更改的资源。R.java 和 Manifest.java 保持不变。[echo] ---------- [echo] 处理 BuildConfig 类... [buildconfig] 不需要生成新的 BuildConfig。
-预编译:
-compile: [echo] 创建库输出 jar 文件...
-编译后:
- 混淆:
-dex: [echo] 库项目:不转换字节码...
-crunch:[crunch] 在源目录中处理 PNG 文件:/home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/res [crunch] 到目标目录:/home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/res [crunch] 压缩 0 个 PNG 文件以更新缓存
-package-resources: [echo] 库项目:不打包资源...
-package: [echo] 库项目:不打包apk...
-后包装:
-do-debug: [echo] 库项目:不要创建 apk... [propertyfile] 更新属性文件:/home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop [propertyfile] 更新属性文件: /home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop [propertyfile] 更新属性文件:/home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop [propertyfile] 更新属性文件: /home/ricky/Development/workspace/exception_handler_library/ExceptionHandlerLib/bin/build.prop
-构建后:
调试:
-预构建:
-code-gen: [mergemanifest] 将 AndroidManifest 文件合并为一个。[mergemanifest] 合并来自项目和 2 个库的清单。[mergemanifest] 警告:[AndroidManifest.xml:3, AndroidManifest.xml:3] 主清单有但库使用 targetSdkVersion='16' [mergemanifest] 注意:主清单缺少声明,默认值为 minSdkVersion 或 1。[mergemanifest ] 警告:[AndroidManifest.xml:3, AndroidManifest.xml:13] 主清单有但库使用 targetSdkVersion='16' [mergemanifest] 注意:主清单缺少声明,默认值为 minSdkVersion 或 1。
构建失败 /app/android-sdk-linux_86/tools/ant/build.xml:616: null
总时间:2秒
编辑
我查看/app/android-sdk-linux_86/tools/ant/build.xml:616
并发现以下行抛出了 nullenabled="${manifestmerger.enabled}">
这是整个街区
我将尝试禁用清单合并选项,看看会发生什么
编辑
从 project.properties 中删除 manifestmerger.enabled=true 似乎解决了我的问题。该项目现在可以编译并完美运行。我想我应该将此错误报告给 android 团队。我的清单有以下条目
<uses-sdk android:minSdkVersion="7" />
但是,如果我将 targetSdkVersion 提高到 7 以上,仍然不会调用 onActivityResult(),所以这并不能真正解决根本问题,但我的项目现在可以正常工作