【发布时间】:2016-03-12 02:57:47
【问题描述】:
我正在尝试在我的 libgdx 项目中实施 gdx-pay。所以我关注了 libgdx wiki 中的Integration example with resolvers。
我在我的核心项目中创建了一个类 PlatformResolver 并在我的 android 项目中创建了一个类 AndroidResolver(如在 wiki 中)。这两个类都导入了com.badlogic.gdx.pay.PurchaseManagerConfig,但是对于我的AndroidResolver,我得到一个编译器错误:
Error:(6, 28) error: package com.badlogic.gdx.pay does not exist
我已将gdx-pay-0.4.0-library.jar(包括com.badlogic.gdx.pay.PurchaseManagerConfig)导入我的核心项目,并将gdx-pay-android-openiab-0.4.0-library.jar、gdx-pay-android-0.4.0-library.jar、gdx-pay-android-ouya-0.4.0-library.jar 导入我的android 项目。
由于android项目也编译核心项目,PurchaseManagerConfig应该也可以用于android项目,不是吗?
project(":android") {
apply plugin: "android"
configurations { natives }
dependencies {
compile project(":core")
// ...
compile fileTree(dir: 'libs', include: '*.jar')
}
}
有什么想法吗?
编辑:
当我将 gdx-pay-0.4.0-library.jar 额外添加到 android 项目(文件夹 android/lib)中时,一切都编译得很好(仍然不知道为什么它是必要的)。但后来我永远无法恢复或购买物品,因为
I/ERROR﹕ gdx-pay: requestPurchaseRestore(): purchaseManager == null
但这似乎是一个 ProGuard 问题。如果没有 ProGuard,我会得到:
I/IAP﹕ IAP: gdx-pay successfully instantiated.
I/﹕ gdx-pay: installed manager: OpenIAB/null
虽然我的项目现在可以编译,但如果有人能解释一下为什么我必须添加两次 jar 文件,我会很高兴,因为这可以帮助我理解其他一些 gradle 问题。
【问题讨论】:
-
听起来您没有成功地将核心薪酬库正确导入您的核心项目。因此,您认为放入核心的任何副本都将被完全忽略。可能与您在
build.gradle中定义的路径与您放置它的位置不匹配有关。 Proguard 问题可以通过 proguard 配置文件解决。查看需要为 gdx-pay 添加哪些行。图书馆可能正在做一些反射。 -
感谢您的评论!使用来自 wiki 的最新 ProGuard 文件,它似乎可以工作。
gdx-pay-0.4.0-library.jar位于core/libs和build.gradle我对核心和 android 项目使用同一行:compile fileTree(dir: 'libs', include: '*.jar') -
看起来应该可以。我不知道为什么它没有在你的核心目录中加载那个。
标签: java android gradle libgdx