Resolución fallida de: Lcom / abhi / código de barras / frag / libv2 / R $ string

Estoy intentando iniciar una Actividad con un Fragmento dentro que está haciendo una exploración QR, estoy usando esta biblioteca para eso> https://code.google.com/archive/p/barcodefraglibv2/

Hago todo por instrucciones, pero cuando ejecuto la aplicación se lanza una excepción:

Failed resolution of: Lcom/abhi/barcode/frag/libv2/R$string 

Qué estoy haciendo mal ?

Aquí está mi MainActivity:

 package apps.radwin.zxingprojectfragmentsthree; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import android.view.View; import android.widget.Button; import android.widget.Toast; import com.abhi.barcode.frag.libv2.BarcodeFragment; import com.abhi.barcode.frag.libv2.IScanResultHandler; import com.abhi.barcode.frag.libv2.ScanResult; import com.google.zxing.BarcodeFormat; import java.util.EnumSet; public class MainActivity extends FragmentActivity implements IScanResultHandler { BarcodeFragment fragment; Button btn; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); fragment = (BarcodeFragment)getSupportFragmentManager().findFragmentById(R.id.sample); fragment.setScanResultHandler(this); btn = ((Button)findViewById(R.id.scan)); btn.setEnabled(false); // Support for adding decoding type fragment.setDecodeFor(EnumSet.of(BarcodeFormat.QR_CODE)); } @Override public void scanResult(ScanResult result) { btn.setEnabled(true); Toast.makeText(this, result.getRawResult().getText(), Toast.LENGTH_LONG).show(); } public void scanAgain(View v){ fragment.restart(); } } 

Aquí está mi archivo build.gradle

 apply plugin: 'com.android.application' android { compileSdkVersion 23 buildToolsVersion "23.0.3" defaultConfig { applicationId "apps.radwin.zxingprojectfragmentsthree" minSdkVersion 16 targetSdkVersion 23 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' compile files('libs/barcodelib.jar') compile files('libs/core.jar') } 

Mi Actividad XML>

  <?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <fragment android:id="@+id/sample" android:name="com.abhi.barcode.frag.libv2.BarcodeFragment" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@+id/scan" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" /> <Button android:id="@+id/scan" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:onClick="scanAgain" android:text="Re-Scan" /> </RelativeLayout> 

Mi excepción es

 FATAL EXCEPTION: main Process: apps.radwin.zxingprojectfragmentsthree, PID: 11692 java.lang.NoClassDefFoundError: Failed resolution of: Lcom/abhi/barcode/frag/libv2/R$string; at com.abhi.barcode.frag.libv2.BarcodeFragment.displayFrameworkBugMessageAndExit(BarcodeFragment.java:345) at com.abhi.barcode.frag.libv2.BarcodeFragment.initCamera(BarcodeFragment.java:338) at com.abhi.barcode.frag.libv2.BarcodeFragment.surfaceCreated(BarcodeFragment.java:212) at android.view.SurfaceView.updateWindow(SurfaceView.java:712) at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:209) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1014) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2510) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1437) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7397) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:920) at android.view.Choreographer.doCallbacks(Choreographer.java:695) at android.view.Choreographer.doFrame(Choreographer.java:631) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:906) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7224) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) Caused by: java.lang.ClassNotFoundException: Didn't find class "com.abhi.barcode.frag.libv2.R$string" on path: DexPathList[[zip file "/data/app/apps.radwin.zxingprojectfragmentsthree-1/base.apk"],nativeLibraryDirectories=[/data/app/apps.radwin.zxingprojectfragmentsthree-1/lib/arm64, /vendor/lib64, /system/lib64]] at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56) at java.lang.ClassLoader.loadClass(ClassLoader.java:511) at java.lang.ClassLoader.loadClass(ClassLoader.java:469) at com.abhi.barcode.frag.libv2.BarcodeFragment.displayFrameworkBugMessageAndExit(BarcodeFragment.java:345) at com.abhi.barcode.frag.libv2.BarcodeFragment.initCamera(BarcodeFragment.java:338) at com.abhi.barcode.frag.libv2.BarcodeFragment.surfaceCreated(BarcodeFragment.java:212) at android.view.SurfaceView.updateWindow(SurfaceView.java:712) at android.view.SurfaceView$3.onPreDraw(SurfaceView.java:209) at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1014) at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2510) at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1437) at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7397) at android.view.Choreographer$CallbackRecord.run(Choreographer.java:920) at android.view.Choreographer.doCallbacks(Choreographer.java:695) at android.view.Choreographer.doFrame(Choreographer.java:631) at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:906) at android.os.Handler.handleCallback(Handler.java:739) at android.os.Handler.dispatchMessage(Handler.java:95) at android.os.Looper.loop(Looper.java:158) at android.app.ActivityThread.main(ActivityThread.java:7224) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) Suppressed: java.lang.ClassNotFoundException: com.abhi.barcode.frag.libv2.R$string at java.lang.Class.classForName(Native Method) at java.lang.BootClassLoader.findClass(ClassLoader.java:781) at java.lang.BootClassLoader.loadClass(ClassLoader.java:841) at java.lang.ClassLoader.loadClass(ClassLoader.java:504) ... 21 more Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack trace available 

En mi app / libs carpeta, tengo dos archivos, barcodelib.jar y code.jar, presioné en mi android estudio en el archivo barcodelib.jar haga clic derecho, a continuación, agrega como una biblioteca, no puedo presionar que en el núcleo. Jar, así, no da la opción.

Me puedes ayudar diciendo que estoy haciendo mal?

A partir del nivel 23 de la API y el permiso de cámara superior se debe solicitar en tiempo de ejecución

Cambie su código onCreate a:

  if (PackageManager.PERMISSION_GRANTED == ActivityCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA)) { // asks primission to use the devices camera fragment = (BarcodeFragment)getSupportFragmentManager().findFragmentById(R.id.sample); fragment.setScanResultHandler(this); btn = ((Button)findViewById(R.id.scan)); btn.setEnabled(false); // Support for adding decoding type fragment.setDecodeFor(EnumSet.of(BarcodeFormat.QR_CODE)); } else { requestWritePermission(MainActivity.this); } 

Y agregue esta función para solicitar el permiso del usuario:

  private static void requestWritePermission(final Context context) { if (ActivityCompat.shouldShowRequestPermissionRationale((Activity) context, Manifest.permission.CAMERA)) { new AlertDialog.Builder(context).setMessage("This app needs permission to use The phone Camera in order to activate the Scanner") .setPositiveButton("Allow", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.CAMERA}, 1);} }).show(); } else { ActivityCompat.requestPermissions((Activity) context, new String[]{Manifest.permission.CAMERA}, 1); } } 

Mejor utilizar esto antes de entrar en la actividad del fragmento agregar estas líneas e intentar otra vez. También para más entradas lea el articale fluido:

https://developer.android.com/training/permissions/requesting.html

En primer lugar en su nivel de módulo build.gradle, ha agregado la compilación de los archivos Jar varias veces … Quite los y sólo mantener:

 dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' } 

FileTree ya compila todos los archivos jar dentro de tu app / libs

Ahora elimina las bibliotecas de tu estudio de Android, de la misma manera que las agregaste.

Ahora haga clic derecho en su proyecto-> show en explorer ….

Encuentre la ruta a sus libs y coloque los dos archivos Jar barcodelib.jar y core.jar

Ahora registre las Dependencias en su gradle

1) Abrir menú archivo-> clic en la estructura del proyecto

2) Seleccione la aplicación aquí

3) haga clic en la pestaña de dependencias mostrada

4) haga clic en el signo más en la esquina superior derecha

5) Seleccione File Dependency y encuentre su JAR en la carpeta libs … Haga lo mismo para los archivos JAR

6) Haga clic en Aceptar y APLIQUE

7) Seleccione el botón "Sincronizar proyecto con archivos gradle" en la barra de herramientas.

8) Invalidar caché y reiniciar

Fuente para más detalles: http://www.theappguruz.com/blog/external-jar-dependency-android-studio

Esto debería ser suficiente … Si no, por favor, publicar el resto del registro de errores que falta en la pregunta (21 líneas más …)

  • Cómo importar la biblioteca ZXING en la aplicación Android?
  • Cómo detener la exploración continua mediante zxing-android-embedded en Android
  • Opciones de Zxing barcode camera
  • Codificación y decodificación de bytes con ZXing
  • ZXing Lector de código de barras: ¿Cómo hacer frontera personalizada alrededor de la pantalla de captura?
  • ¿Puedo controlar la linterna sin usar android.hardware.Camera?
  • Lanzamiento de un fragmento después de ZXing 2.0 QR-Code Scan
  • ZXing cómo escanear código QR y código de barras 1D?
  • Android: ClassNotFoundException mientras incluye ZXing
  • Cómo cambiar correctamente el nombre del paquete en AndroidManifest.xml (por ejemplo, en el proyecto zxing / barcodescanner)
  • Cómo activar la exploración de modo masivo en zxing
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.