小编ric*_*kul的帖子

从aar中排除jar库

我有一个库项目,它依赖于cordova.jar,它从项目libs目录加载.

我将这个库项目部署为maven nexus.

在应用程序项目中,我依赖于库项目aar(编译...).但是应用程序项目与cordova.jar具有相同的依赖性.

因此,在构建应用程序项目时,我收到此错误:

:transformClassesWithDexForDebug
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lorg/apache/cordova/AuthenticationToken;
    at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:579)
    at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:535)
    at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:517)
    at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:164)
    at com.android.dx.merge.DexMerger.merge(DexMerger.java:188)
    at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:504)
    at com.android.dx.command.dexer.Main.runMonoDex(Main.java:334)
    at com.android.dx.command.dexer.Main.run(Main.java:277)
    at com.android.dx.command.dexer.Main.main(Main.java:245)
    at com.android.dx.command.Main.main(Main.java:106)
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我试图在我的应用程序项目中加载库时排除cordova.jar:

dependencies {
    compile ('com.my.library:hybridstory:1.0'){
        exclude (group: 'org.apache.cordova')
    }
}
Run Code Online (Sandbox Code Playgroud)

但这不起作用.难道我做错了什么?

我的第二个问题是:

将库项目作为aar上传时,是否可以排除/libs/cordova.jar,而不是在应用程序中加载库时排除cordova.jar?我怎么能用这个gradle实现这个目标:

apply plugin: 'com.android.library'
apply plugin: 'maven'

archivesBaseName = 'hybridstory'
group = 'com....'
version = '16.3.0-SNAPSHOT'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 22
        versionCode 1
        versionName version
    } …
Run Code Online (Sandbox Code Playgroud)

android gradle aar

5
推荐指数
1
解决办法
7050
查看次数

在进入doInBackground()之前,AsyncTask需要很长时间

我有一个来自SharedPreferences的AsyncTask读取.当我在安装后第一次启动应用程序时,AsyncTask需要很长时间才能调用doInBackground()方法.

这是代码:

public class ReadSharedPrefsTask extends AsyncTask{

    private static final String TAG = ReadSharedPrefsTask.class.getSimpleName();
    Context context;
    String key;
    Object result;
    OnReadFinishedListener listener;
    long startTime;

    /**
     * @param context the context
     * @param key the shared preferences key
     * @param listener a listener which gets informed when the read operation is finished
     */
    public ReadSharedPrefsTask(Context context, String key, OnReadFinishedListener listener){
        Log.d(TAG, "Ctor begin");
        startTime = System.currentTimeMillis();
        this.context = context.getApplicationContext();
        this.key = key;
        this.listener = listener;
        Log.d(TAG, "Ctor end; elapsed …
Run Code Online (Sandbox Code Playgroud)

multithreading android android-asynctask

3
推荐指数
1
解决办法
2385
查看次数

标签 统计

android ×2

aar ×1

android-asynctask ×1

gradle ×1

multithreading ×1