我有一个用 react native 构建的应用程序,我需要启用MultiDex支持。我的问题是我无法导入MultiDexApplication类来扩展它,因为在编译时我在扩展它时同时获得symbol not found error了导入语句和类名MainApplication.java
build.gradle
dependencies {
classpath('com.android.tools.build:gradle:3.5.3')
classpath 'com.google.gms:google-services:4.2.0'
classpath "androidx.multidex:multidex:2.0.1"
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试将依赖项添加为实现,则在启动应用程序时会出现以下错误:
Could not find method implementation() for arguments [androidx.multidex:multidex:2.0.1] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
在所有在线资源中,我看到依赖项是作为实现添加的,所以我想这可能是我的问题。
MainApplication.java
package com.classmanager;
import android.app.Application;
import androidx.multidex.MultiDexApplication;
import android.content.Context;
import com.facebook.react.PackageList;
import com.facebook.react.ReactApplication;
import com.oblador.vectoricons.VectorIconsPackage;
import com.oblador.vectoricons.VectorIconsPackage;
import com.facebook.react.ReactNativeHost;
import com.facebook.react.ReactPackage;
import com.facebook.soloader.SoLoader;
import java.lang.reflect.InvocationTargetException;
import java.util.List;
public class MainApplication extends MultiDexApplication implements ReactApplication {
private final ReactNativeHost mReactNativeHost =
new ReactNativeHost(this) …Run Code Online (Sandbox Code Playgroud) 我正在使用鲍雷提供的代码,名称为private fun saveImage在如何将位图保存到 android gallery来保存位图
为了解决 Kotlin 中已弃用的问题,我删除了这些行:
//values.put(MediaStore.Images.Media.DATA, file.absolutePath)
//context.contentResolver.insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values)
Run Code Online (Sandbox Code Playgroud)
并添加了这个:
val contentValues = ContentValues()
contentValues.put(MediaStore.Images.Media.RELATIVE_PATH, folderName)
this.applicationContext.contentResolver.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, contentValues)
Run Code Online (Sandbox Code Playgroud)
然后,我将该函数(在 DidtodayActivity 中)称为:
saveImage(bitmapImg, this.applicationContext)
Run Code Online (Sandbox Code Playgroud)
图像被下载到Phone>Android>Data>com.example.MyApp1>files>MyFiles。我可以在我的设备中看到下载的图像。
但是,由于这一行的运行时错误,活动文件突然关闭(并且直接打开activity_main .xml):
this.applicationContext.contentResolver.insert(MediaStore.Downloads.EXTERNAL_CONTENT_URI, contentValues)
Run Code Online (Sandbox Code Playgroud)
原因:
java.lang.ClassNotFoundException: Didn't find class "android.provider.MediaStore$Downloads" on path: DexPathList[[zip file "/data/app/com.example.MyApp1-rvQQjSAj4NilLch2h12faQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.MyApp1-rvQQjSAj4NilLch2h12faQ==/lib/arm64, /data/app/com.example.MyApp1-rvQQjSAj4NilLch2h12faQ==/base.apk!/lib/arm64-v8a, /system/lib64]]
Run Code Online (Sandbox Code Playgroud)
详细信息:
**Didn't find class "android.provider.MediaStore$Downloads"** on path: DexPathList[[zip file "/data/app/com.example.MyApp1-rvQQjSAj4NilLch2h12faQ==/base.apk"],nativeLibraryDirectories=[/data/app/com.example.MyApp1-rvQQjSAj4NilLch2h12faQ==/lib/arm64, /data/app/com.example.MyApp1-rvQQjSAj4NilLch2h12faQ==/base.apk!/lib/arm64-v8a, /system/lib64]]
Run Code Online (Sandbox Code Playgroud)
解析失败:Landroid/provider/MediaStore$Downloads;
模块级别的build.gradle是:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'
android { …Run Code Online (Sandbox Code Playgroud) 当我启用multidex时,我遇到了问题.我正在使用Android工作室,我在DrawerLayoutWidget上得到"找不到类".这是设置
的build.gradle
apply plugin: 'com.android.application'
android {
compileSdkVersion 21
buildToolsVersion '21.1.0'
defaultConfig {
applicationId 'com.myapp'
minSdkVersion 14
targetSdkVersion 21
multiDexEnabled true
}
}
dependencies {
compile 'com.android.support:appcompat-v7:21.+'
compile 'com.android.support:support-v4:21.+'
}
Run Code Online (Sandbox Code Playgroud)
activity_main.xml中
<android.support.v4.widget.DrawerLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/drawerlayout"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:id="@+id/frameContainer"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</FrameLayout>
<ListView
android:id="@+id/drawerList"
android:layout_width="240dp"
android:layout_height="match_parent"
android:layout_gravity="start"
android:choiceMode="singleChoice"
android:divider="@color/drawerListDivider"
android:dividerHeight="0dp"
android:listSelector="@drawable/drawer_list_selector"
android:background="@color/drawerListBackground"/>
</android.support.v4.widget.DrawerLayout>
Run Code Online (Sandbox Code Playgroud)
这是我的catlog错误
12-07 00:41:15.239 4053-4053/com.myapplication W/dalvikvm? VFY: unable to resolve virtual method 503: Landroid/support/v4/widget/ViewDragHelper;.smoothSlideViewTo (Landroid/view/View;II)Z
12-07 00:41:15.239 4053-4053/com.myapplication D/dalvikvm? VFY: replacing opcode 0x6e at 0x0062
12-07 00:41:15.239 4053-4053/com.myapplication …Run Code Online (Sandbox Code Playgroud) 嗨有类似错误,如重复输入.
FAILURE:构建因异常而失败.
出了什么问题:任务'执行失败':电子书:packageAllDebugClassesForMultiDex'.
java.util.zip.ZipException:重复条目:android/support/annotation/AttrRes.class
尝试:使用--stacktrace选项运行以获取堆栈跟踪.使用--info或--debug选项运行以获取更多日志输出.
建筑失败
总时间:1分钟46.13秒
apply plugin: 'com.android.application'
dependencies {
compile fileTree(dir: 'libs', include: '*.jar')
compile project(':ui-reader')
compile "com.android.support:support-v4:23.1.1"
compile "com.android.support:support-v13:20.0.0"
compile files('libs/Flurry_3.2.1.jar')
}
android {
compileSdkVersion 21
buildToolsVersion "20.0.0"
configurations {
all*.exclude group: 'com.android.support', module: 'support-v4'
}
defaultConfig {
// Enabling multidex support.
multiDexEnabled true
}
lintOptions {
abortOnError false
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// …Run Code Online (Sandbox Code Playgroud) 我收到以下错误.过去两天我没有尝试解决它,但没有解决问题.错误:任务':app:packageAllDebugClassesForMultiDex'的执行失败.
java.util.zip.ZipException:重复条目:org/apache/http/HttpMessage.class这里是我的build.gradle(app)
apply plugin: 'com.android.application'
android {
compileSdkVersion 23
buildToolsVersion '23.0.0'
defaultConfig {
applicationId "com.mycompany.newlogin"
minSdkVersion 15
targetSdkVersion 22
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
productFlavors {
}
useLibrary 'org.apache.http.legacy'
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:multidex:1.0.0'
compile 'com.google.guava:guava-jdk5:17.0'
compile 'com.android.support:appcompat-v7:23.0.1'
compile 'com.android.support:design:23.0.1'
compile 'org.apache.httpcomponents:httpcore:4.4.1'
compile 'org.apache.httpcomponents:httpclient:4.5'
compile 'org.jbundle.util.osgi.wrapped:org.jbundle.util.osgi.wrapped.org.apache.http.client:4.1.2'
Run Code Online (Sandbox Code Playgroud)
}
请帮帮我.谢谢你提前.
如果我使用Ionic Framework构建应用程序,有没有办法为Android 设置启用multidex(https://github.com/casidiablo/multidex)?
有人知道为什么我不能使用MultiDexTestRunner吗?
我的build.gradle包含:
android {
...
defaultConfig {
...
multiDexEnabled true
testInstrumentationRunner 'com.android.test.runner.MultiDexTestRunner'
}
dependencies {
...
// Testing-only dependencies
androidTestCompile 'com.android.support.test:runner:0.4.1'
androidTestCompile 'com.android.support.test:rules:0.4.1'
androidTestCompile 'junit:junit:4.12'
Run Code Online (Sandbox Code Playgroud)
Gradle的Android插件版本为2.0.0-alpha2(com.android.tools.build:gradle:2.0.0-alpha2)
//Runs all unit tests.
@RunWith(Suite.class)
@Suite.SuiteClasses({ACLTest.class})
public class UnitTestSuite {
public UnitTestSuite() {}
}
Run Code Online (Sandbox Code Playgroud)
测试类:
@RunWith(AndroidJUnit4.class)
@MediumTest
public class ACLTest {
static Context context;
public ACLTest() {
}
@BeforeClass
public static void setUpBeforeClass() {
...
context = InstrumentationRegistry.getTargetContext();
}
@Before
public void setUpBeforeTest() throws Exception {
...
}
@After
public void tearDown() throws Exception …Run Code Online (Sandbox Code Playgroud) android unit-testing junit4 android-multidex android-studio-2.0
我下载了SugarORM源代码以将其用作库模块(因此我可以覆盖应用程序的"attachBaseContext"方法.
我已经看到了SugarORM和multidex的问题,问题是我无法弄清楚如何将MultiDex库引用到我的新SugarORM库模块中.有人可以帮我解决这个问题吗?
我试图在API 16设备上运行需要使用Android Studio 3.0的MultiDex的应用程序,当应用程序最终尝试启动时,它会崩溃.其他低API也是如此(例如:17,18,19)
但是,当我尝试使用Android Studio 3.1(测试版)运行应用程序时,不会发生崩溃.
这种崩溃有什么办法可以修复吗?
FATAL EXCEPTION: main
java.lang.ExceptionInInitializerError
at android.support.multidex.MultiDexApplication.<init>(MultiDexApplication.java:35)
at MY_APP_PATH.MY_CUSTOM_APPLICATION_CLASS.<init>(MY_CUSTOM_APP_CLASS.java:23)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1319)
at android.app.Instrumentation.newApplication(Instrumentation.java:997)
at android.app.Instrumentation.newApplication(Instrumentation.java:982)
at android.app.LoadedApk.makeApplication(LoadedApk.java:496)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4170)
at android.app.ActivityThread.access$1400(ActivityThread.java:134)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1306]: 1674 cannot locate '__isnanf'...
at java.lang.Runtime.loadLibrary(Runtime.java:370)
at java.lang.System.loadLibrary(System.java:535)
at com.android.tools.profiler.support.ProfilerService.<clinit>(ProfilerService.java:41)
at android.support.multidex.MultiDexApplication.<init>(MultiDexApplication.java:35)
at MY_APP_PATH.MY_CUSTOM_APPLICATION_CLASS.<init>(MY_CUSTOM_APPLICATION_CLASS.java:23)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1319)
at android.app.Instrumentation.newApplication(Instrumentation.java:997)
at …Run Code Online (Sandbox Code Playgroud) 在我的android项目中,我使用了两个JAXB库jaxp-ri(用于XMLGregorianCalendarImpl类)和jaxb-api(用于对象到xml转换)。我已经在build.gradle文件中添加了这两个库。
但是当我构建项目时,出现以下提到的错误
Error:Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Ljavax/xml/stream/events/Namespace;
Error:com.android.dex.DexException: Multiple dex files define Ljavax/xml/stream/events/Namespace;
Error: at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:661)
Error: at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:616)
Error: at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:598)
Error: at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
Error: at com.android.dx.merge.DexMerger.merge(DexMerger.java:198)
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:61)
Error: at com.android.builder.dexing.DexArchiveMergerCallable.call(DexArchiveMergerCallable.java:36)
Error: at java.util.concurrent.ForkJoinTask$AdaptedCallable.exec(ForkJoinTask.java:1424)
Error: at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
Error: at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
Error: at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
Error: at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Error:Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Ljavax/xml/stream/events/Namespace;
Run Code Online (Sandbox Code Playgroud)
Build.gradle文件
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support:appcompat-v7:26.0.0-beta1'
implementation …Run Code Online (Sandbox Code Playgroud) android ×10
android-multidex ×10
crash ×1
dex ×1
java ×1
jaxb ×1
junit4 ×1
kotlin ×1
mediastore ×1
react-native ×1
sugarorm ×1
unit-testing ×1