当调用GoogleApiAvailability时,我的Android库(aar)中的类未找到异常.
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.GoogleApiAvailability" on path: DexPathList[[zip file "/data/app/com.myunityplugin.PushNotifications-1/base.apk"],nativeLibraryDirectories=[/data/app/com.myunityplugin.PushNotifications-1/lib/arm, /vendor/lib, /system/lib]]
Run Code Online (Sandbox Code Playgroud)
错误是不言自明的,但我不确定我做错了什么.我很擅长gradle和AndroidStudio.
我的gradle.build中有以下依赖项:
compile 'com.google.android.gms:play-services:8.4.0'
compile 'com.google.android.gms:play-services-gcm:8.4.0'
Run Code Online (Sandbox Code Playgroud)
我认为问题是播放服务库需要包含在aar中,而编译不会这样做.我尝试使用'运行时',但我得到"找不到gradle dsl运行时".
问题:
导致错误的行
GoogleApiAvailability ServiceAvailability = GoogleApiAvailability.getInstance();
Run Code Online (Sandbox Code Playgroud)
例外:
05-23 05:38:48.221 28055-28055/? E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.myunityplugin.PushNotifications, PID: 28055
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/GoogleApiAvailability;
at com.myplugin.unitynotification.GCM.GCM.checkPlayServices(GCM.java:33)
at com.myplugin.unitynotification.GCM.MainActivity.onCreate(MainActivity.java:80)
at android.app.Activity.performCreate(Activity.java:6550)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1120)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3108)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3263)
at android.app.ActivityThread.access$1000(ActivityThread.java:197)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1687)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6897)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199) …Run Code Online (Sandbox Code Playgroud) android gradle google-play-services android-gradle-plugin aar
我正在寻找有关如何映射使用联接表的OneToMany / ManyToOne关系的建议。我没有进行映射,并且收到错误消息,未在媒体表中设置article_id。
class Media
{
// ...
/**
* @ManyToOne(targetEntity="Document", inversedBy="media")
* @JoinTable(name="articles_x_media", referencedColumnName="id")
* joinColumns={@JoinColumn(name="media_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="bid_id", referencedColumnName="id")})
* )
*/
protected $document;
}
class Document
{
// ...
/**
* @OneToMany(targetEntity="Media", mappedBy="document"))
* @JoinTable(name="articles_x_media", referencedColumnName="id")
* joinColumns={@JoinColumn(name="article_id", referencedColumnName="id")},
* inverseJoinColumns={@JoinColumn(name="media_id", referencedColumnName="id")}
* )
*/
protected $media;
}
Run Code Online (Sandbox Code Playgroud) 我正在查看Doctrine 2和Symfony文档来创建模型类.有几个代码片段,其中在类中使用了getProperty和setProperty,当值直接分配给属性时,它们会以某种方式自动使用.这与典型的get/set魔术方法不同,我遇到的示例代码没有实现任何自定义魔术方法,所以我相信这是由Doctrine在某处处理的.
从我读过的内容来看,Doctrine实现了访问器和mutator.也许我在下载Pear时错过了一个软件包,或者我的脚本中没有包含一些内容.
例如:
class User {
public $name;
public function getName()
{
// Do stuff
}
}
$user = new User();
$foo = $user->name; // getName is called
Run Code Online (Sandbox Code Playgroud)
注意:我正在寻找一个特定于Doctrine的解决方案.我知道这可以用PHP来完成,但我想使用Doctrine的本机函数.
编辑:更新以阐明这与典型的获取/设置魔术方法的区别,并注意.
我遇到了一个问题,我需要在XML节点的名称中使用hashtag,并且hashtag导致解析错误.我试过编码#没有运气,也许我实现了编码错误.
<?xml version="1.0" encoding="UTF-8"?>
<dataset>
<properties#tags pk1="1" pk2="1" />
</dataset>
Run Code Online (Sandbox Code Playgroud)