当我添加领域库时,Telegram Messenger 客户端将无法工作
Telegram messenger client won't work when I add realm library
我正在存储库中开发自定义版本的 Telegram Messenger:https://github.com/DrKLO/Telegram。我想在其中使用 MPAndroidChart 和领域,但是当我通过这样的在线存储库添加领域时:
在 gradle 文件中:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:0.88.2"
}
}
在 gradle 模块文件中:
dependencies {
compile 'io.realm:realm-android:0.88.2'
}
repositories {
maven { url "https://jitpack.io" }
maven { // this is for realm-db
url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
}
}
甚至当像这样添加 jar 文件并编译和 运行 时,我也会遇到下面的错误,当我没有添加编译的 c/c++ 依赖项时,我会遇到下面的错误。
手动添加:
我已将与领域库相关的 jar 和 pom 文件添加到 'realm_libs' 文件夹中,并将以下行添加到 gradle dependencies.
compile files('realm_libs/realm-android-0.80.2.jar')
我遇到的错误:
E/art: dlopen("/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so", RTLD_LAZY) failed: dlopen failed: "/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so" is 32-bit instead of 64-bit
E/art: dlopen("/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so", RTLD_LAZY) failed: dlopen failed: "/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so" is 32-bit instead of 64-bit
E/art: No implementation found for void org.telegram.tgnet.ConnectionsManager.native_setJava(boolean) (tried Java_org_telegram_tgnet_ConnectionsManager_native_1setJava and Java_org_telegram_tgnet_ConnectionsManager_native_1setJava__Z)
E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.telegram.messenger.beta, PID: 13900
java.lang.UnsatisfiedLinkError: No implementation found for void org.telegram.tgnet.ConnectionsManager.native_setJava(boolean) (tried Java_org_telegram_tgnet_ConnectionsManager_native_1setJava and Java_org_telegram_tgnet_ConnectionsManager_native_1setJava__Z)
at org.telegram.tgnet.ConnectionsManager.native_setJava(Native Method)
at org.telegram.messenger.ApplicationLoader.onCreate(ApplicationLoader.java:268)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1017)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4938)
at android.app.ActivityThread.access00(ActivityThread.java:182)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1576)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5717)
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:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
I/Process: Sending signal. PID: 13900 SIG: 9
项目清理成功,领域库导入没有问题,但是当我运行它在设备上时发生错误。
问题是 Telegram 只支持 32 位机器,realm 应该在 32 位模式下编译。这可以通过使用领域的旧版本 (https://static.realm.io/downloads/java/realm-java-0.87.4.zip) 并按照此处的说明拆分构建来完成:
realm.io/news/reducing-apk-size-native-libraries
您必须从这个 link 的下载部分获取 jar 文件,并且应将 eclipse 目录中指示不同体系结构的 4 个文件夹添加到 src/main/jniLibs
目录。
并且应将以下内容添加到模块的 build.gradle 文件中:
android {
// Some other configuration here...
splits {
abi {
enable true
reset()
include 'x86', 'armeabi', 'armeabi-v7a', 'mips'
universalApk false
}
}
}
dependencies {
compile files('libs/realm-android-0.87.4.jar')
}
我正在存储库中开发自定义版本的 Telegram Messenger:https://github.com/DrKLO/Telegram。我想在其中使用 MPAndroidChart 和领域,但是当我通过这样的在线存储库添加领域时:
在 gradle 文件中:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath "io.realm:realm-gradle-plugin:0.88.2"
}
}
在 gradle 模块文件中:
dependencies {
compile 'io.realm:realm-android:0.88.2'
}
repositories {
maven { url "https://jitpack.io" }
maven { // this is for realm-db
url 'http://oss.jfrog.org/artifactory/oss-snapshot-local'
}
}
甚至当像这样添加 jar 文件并编译和 运行 时,我也会遇到下面的错误,当我没有添加编译的 c/c++ 依赖项时,我会遇到下面的错误。
手动添加: 我已将与领域库相关的 jar 和 pom 文件添加到 'realm_libs' 文件夹中,并将以下行添加到 gradle dependencies.
compile files('realm_libs/realm-android-0.80.2.jar')
我遇到的错误:
E/art: dlopen("/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so", RTLD_LAZY) failed: dlopen failed: "/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so" is 32-bit instead of 64-bit
E/art: dlopen("/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so", RTLD_LAZY) failed: dlopen failed: "/data/data/org.telegram.messenger.beta/files/lib/libtmessages.17loc.so" is 32-bit instead of 64-bit
E/art: No implementation found for void org.telegram.tgnet.ConnectionsManager.native_setJava(boolean) (tried Java_org_telegram_tgnet_ConnectionsManager_native_1setJava and Java_org_telegram_tgnet_ConnectionsManager_native_1setJava__Z)
E/AndroidRuntime: FATAL EXCEPTION: main
Process: org.telegram.messenger.beta, PID: 13900
java.lang.UnsatisfiedLinkError: No implementation found for void org.telegram.tgnet.ConnectionsManager.native_setJava(boolean) (tried Java_org_telegram_tgnet_ConnectionsManager_native_1setJava and Java_org_telegram_tgnet_ConnectionsManager_native_1setJava__Z)
at org.telegram.tgnet.ConnectionsManager.native_setJava(Native Method)
at org.telegram.messenger.ApplicationLoader.onCreate(ApplicationLoader.java:268)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1017)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4938)
at android.app.ActivityThread.access00(ActivityThread.java:182)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1576)
at android.os.Handler.dispatchMessage(Handler.java:111)
at android.os.Looper.loop(Looper.java:194)
at android.app.ActivityThread.main(ActivityThread.java:5717)
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:959)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:754)
I/Process: Sending signal. PID: 13900 SIG: 9
项目清理成功,领域库导入没有问题,但是当我运行它在设备上时发生错误。
问题是 Telegram 只支持 32 位机器,realm 应该在 32 位模式下编译。这可以通过使用领域的旧版本 (https://static.realm.io/downloads/java/realm-java-0.87.4.zip) 并按照此处的说明拆分构建来完成:
realm.io/news/reducing-apk-size-native-libraries
您必须从这个 link 的下载部分获取 jar 文件,并且应将 eclipse 目录中指示不同体系结构的 4 个文件夹添加到 src/main/jniLibs
目录。
并且应将以下内容添加到模块的 build.gradle 文件中:
android {
// Some other configuration here...
splits {
abi {
enable true
reset()
include 'x86', 'armeabi', 'armeabi-v7a', 'mips'
universalApk false
}
}
}
dependencies {
compile files('libs/realm-android-0.87.4.jar')
}