Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 针对特定设备的Gradle构建风格_Android_Gradle_Build_Motorola_Motorola Emdk - Fatal编程技术网

Android 针对特定设备的Gradle构建风格

Android 针对特定设备的Gradle构建风格,android,gradle,build,motorola,motorola-emdk,Android,Gradle,Build,Motorola,Motorola Emdk,我的应用程序应该用摄像头扫描条形码,如果用户有TC55摩托罗拉设备,则使用内置扫描仪。为了让它工作,我必须在build.gradle文件中指定: dependencies { provided files('libs/com.symbol.emdk.jar') 但是,如果我在非TC55设备上使用此行运行apk,应用程序将崩溃。 如何创建在TC55和非TC55设备上都能工作的单一风格构建 编辑1: AndroidRuntime: FATAL EXCEPTION: main Process: co

我的应用程序应该用摄像头扫描条形码,如果用户有TC55摩托罗拉设备,则使用内置扫描仪。为了让它工作,我必须在build.gradle文件中指定:

dependencies {
provided files('libs/com.symbol.emdk.jar')

但是,如果我在非TC55设备上使用此行运行apk,应用程序将崩溃。 如何创建在TC55和非TC55设备上都能工作的单一风格构建

编辑1:

AndroidRuntime: FATAL EXCEPTION: main
Process: company.mobile.application.app, PID: 28701
java.lang.RuntimeException: Unable to instantiate activity     ComponentInfo{company.mobile.application.app/com.company.mobile.application.ui.Pr    oductionActivity}: java.lang.ClassNotFoundException: Didn't find class     "com.company.mobile.application.ui.ProductionActivity" on path: DexPathList[[zip     file "/data/app/company.mobile.application.app-3.apk"],nativeLibraryDirectories=    [/data/app-lib/company.mobile.application.app-3, /vendor/lib, /system/lib]]
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2231)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access$900(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ClassNotFoundException: Didn't find class     "com.company.mobile.application.ui.ProductionActivity" on path: DexPathList[[zip     file "/data/app/company.mobile.application.app-3.apk"],nativeLibraryDirectories=    [/data/app-lib/company.mobile.application.app-3, /vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:67)
at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
at android.app.Instrumentation.newActivity(Instrumentation.java:1079)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2222)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363) 
at android.app.ActivityThread.access$900(ActivityThread.java:161) 
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265) 
at android.os.Handler.dispatchMessage(Handler.java:102) 
at android.os.Looper.loop(Looper.java:157) 
at android.app.ActivityThread.main(ActivityThread.java:5356) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at java.lang.reflect.Method.invoke(Method.java:515) 
at     com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265) 
 at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081) 
at dalvik.system.NativeStart.main(Native Method) 

要在TC55上使用Zebra的EMDK,您需要使用仅在像TC55这样的Zebra设备上可用的EMDK库。
因此,如果您试图打开实现其中一个EMDK接口(EMDKListener、DataListener或StatusListener)的活动,那么如果EMDK不可用,您的应用程序将崩溃

因此,从
AndroidManifest.xml
开始,您需要考虑设备上可能没有EMDK库:

<uses-library android:name="com.symbol.emdk" android:required="false" />

关键是:不要在你的主要活动中实现EMDK的侦听器,否则你的应用程序在非Zebra设备上运行时会崩溃(缺少必需的EMDK库)


在使第二个活动(基于EMDK侦听器)可用之前,您可以查看一下EMDK是否可用。

“但是,如果我在非TC55设备上使用此行运行apk,则应用程序将崩溃”——请提供崩溃的Java堆栈跟踪,以及堆栈跟踪中引用的代码。“我如何创建一个在TC55和非TC55设备上都能工作的单一风格构建?”——如果我们知道您在哪里以及如何崩溃,我们将更容易回答这个问题。所以,到目前为止还没有想法?