如何在 Eclipse 中集成 Android Billing Library?
明确结论
这个 ZIP 不能直接放进 libs/。它不是 JAR,而是包含源码的 Android Library Project。需要先把库项目导入 Eclipse,再通过 ADT 的 Library 功能关联到应用项目。
导入库项目
解压下载的 ZIP,找到包含以下内容的目录:
AndroidManifest.xml
src/
res/
project.properties
如果仓库里有多个项目,应导入实际的 Library 目录,不要选择示例应用或仓库最外层目录。
在 Eclipse 中按以下步骤操作:
- 选择
File→Import。 - 如果目录中有
.project文件,选择:General→Existing Projects into Workspace。 - 如果 Eclipse 无法识别该项目,选择:
Android→Existing Android Code Into Workspace。 - 选择解压后的库目录,完成导入。
导入后,右键单击库项目,打开:
Properties → Android
确认已经勾选 Is Library。如果没有,请手动勾选并保存。
将库关联到应用项目
右键单击自己的 Android 应用项目,选择:
Properties → Android
在页面下方的 Library 区域中:
- 点击
Add。 - 选择刚导入的 Android Billing Library 项目。
- 点击
Apply或OK。
ADT 通常会在应用项目的 project.properties 中生成类似配置:
android.library.reference.1=../AndroidBillingLibrary
最好通过 Eclipse 界面添加引用,不要先手动修改路径。这里使用的是相对于应用项目目录的路径,移动项目后可能失效。
验证是否集成成功
在应用代码中尝试导入库中的一个公开类。实际包名应以源码里的 package 声明为准,例如:
import com.robotmedia.billing.BillingController;
如果 Eclipse 能够解析该类,编译时也没有出现 The import ... cannot be resolved,说明源码引用已经生效。
然后执行:
Project → Clean
清理并重新构建库项目和应用项目。如果仍有红色错误,请检查两个项目选择的 Android Build Target 是否可用,并确认它们相互兼容。
为什么不能直接复制 ZIP 或 classes
ZIP 只是 GitHub 提供的源码压缩包,不是 Android 构建系统可以直接引用的依赖格式。Android Library Project 除了 Java 类,还可能包含:
res/下的资源AndroidManifest.xml中的组件声明- 编译配置
- 其他依赖项
如果只把 src/、.class 文件或整个 ZIP 复制到 libs/,资源、Manifest 配置或依赖可能会缺失。
Manifest 和依赖检查
关联库项目后,还要查看它的 README、示例项目和 AndroidManifest.xml。计费功能通常涉及权限以及 Activity、Service、BroadcastReceiver 等组件配置。不同版本的旧版 Eclipse/ADT 对 Manifest 合并的支持并不一致,不能认定库 Manifest 中的所有声明都会自动合并到应用中。
如果项目能够编译,但运行时提示组件未注册或权限不足,请对照库项目与示例应用的 Manifest,把必需的配置加入应用的 AndroidManifest.xml。不要直接照搬示例中的包名、测试配置或无关组件。
注意事项
这个仓库采用的是较早期的 Eclipse/ADT Android 工程体系。Google Play 的计费接口后来经过多次升级,所以项目能够导入和编译,并不代表它仍符合当前 Google Play 的发布要求。
维护历史项目时,可以按上述方式集成。如果要发布新应用,应先确认仓库使用的计费协议是否仍受支持。现代 Android 项目通常使用 Android Studio、Gradle 和当前受支持的 Google Play Billing Library,不再依赖旧式的 Eclipse Library Project。
备注:内容仅供参考。
