簡體   English   中英

如何使用其他項目的共享庫模塊在Android Studio中運行應用程序?

[英]How to run app in Android Studio with shared library-module from other project?

我在另一個項目中使用了一個自寫的庫模塊,就像在

https://code.google.com/p/android/issues/detail?id=105570

Android Studio 0.8.1創建模塊而不復制文件?

我將這些行添加到settings.gradle,並通過“項目結構”-對話框添加了所包含的庫,作為對項目的依賴關系。 我使用的是Android Studio 1.2.2。

IDE中的所有內容看起來都不錯(導入正常,可以瀏覽和編輯庫代碼,可以“制作”兩個模塊而沒有錯誤),但是我似乎無法在手機/仿真器上啟動該項目。

我從應用程序中使用的庫中獲得了第一個類的“ classNotFoundException”。

我從Eclipse逐類復制粘貼了整個項目類,該類將在運行時不會出現問題。

我要怎么做才能將庫的已編譯類放入應用程序到手機上?

settings.gradle

include ':app'
include ':Sudoku'
project(':Sudoku').projectDir=new File('/../Libs/sudoku')

build.gradle (應用程序)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.frozenmilkmeteoroids.sudokuapp"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile project(':Sudoku')
}

build.gradle (庫)

apply plugin: 'com.android.library'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

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

我也使用Android Studio 1.2.2,這是如何創建獨立庫項目並從您的主項目引用它的分步指南:

  1. 像創建普通android項目一樣創建android項目庫。 稱之為libProjectName

  2. libProjectName應用模塊重命名為libModuleName

  3. libModuleName的build.gradle中進行更改: apply plugin: 'com.android.application'apply plugin: 'com.android.library'並從defaultConfig部分刪除applicationId

  4. 轉到主項目,即引用libProjectName的項目

  5. 編輯settings.gradle ,添加:

包括':libProjectName:libModuleName'

project(':libProjectName:libModuleName')。projectDir =新文件('relative / path / libProjectDir / libModuleDir')

  1. 應用模塊中編輯build.gradle ,添加:

編譯項目(':libProjectDir:libModuleName')


現在假設Sudoku中的模塊模塊目錄名稱為moduleSudoku並應用上述步驟,解決方案是:

settings.gradle

include ':app'
include ':Sudoku:moduleSudoku'
project(':Sudoku:moduleSudoku').projectDir=new File('/../Libs/sudoku/moduleSudoku')

build.gradle(應用程序)

apply plugin: 'com.android.application'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        applicationId "com.frozenmilkmeteoroids.sudokuapp"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:22.2.0'
    compile project(':Sudoku:moduleSudoku')
}

build.gradle(庫)

apply plugin: 'com.android.library'

android {
    compileSdkVersion 22
    buildToolsVersion "22.0.1"

    defaultConfig {
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM