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:
- Crear un código QR y mostrarlo en ImageView
- ¿Cómo abrir la pantalla de escaneo "zxing Barcode" en una pequeña ventana?
- Android con ZXing genera código QR
- ¿Cómo usar Zxing para el escáner de código qr sin usar la cámara?
- ¿Cómo forzar el uso de zxing lib con sólo mi aplicació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?
- Escáner de código de barras ZXing Propósito: set DecodeHintType.ASSUME_GS1
- OnActivityResult Nunca se llama Phonegap Córdoba
- Un escáner de QR dentro de un fragmento
- Android ZXing Obtener imagen de código de barras
- ¿Cómo iniciar una actividad con un Intent y pasar una variable en la nueva actividad?
- Android: El código QR generado que usa Zxing tiene márgenes (no es apropiado para el área)
- Cómo agregar un logotipo al código QR en android
- Android / ZXing ya no funciona
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 …)
- JSApplicationIllegalArgumentException con React Native Android
- Botón de acción flotante inesperado ancla cambio de gravedad