Android Studio移植FBReader详解

发表于

谭东编写。

FBReader官方最新版是基于ant编译的,我之前编译过ADT Eclipse版本,今天编写的是Android Studio版本。不过so库是在ADT Eclipse下编译然后放到libs库里的。所以如果你Android Studio版本的FBReader需要修改包名的话,so库需要去ADT Eclipse或者其他工具里编译生成so库替换即可。ADT编译so库教程看这里:

http://www.whatjay.com/?p=1082

http://www.whatjay.com/?p=1056

这个Android Studio版本是官方原版转换移植,修复了部分问题。其他的都没有改动。(第三方库源码依赖也可以采用aar方式,更加的便捷)

github下载地址:https://github.com/jaychou2012/FBReaderJ-Android-Studio

1、Anroid Studio里新建FBReader的Project,然后导入其他4个库作为Module,分别是:ambilWarna、code、dragsortlistview、superToasts。

大致结构如下图:

20160325160632

将FBReader项目相应的文件复制到Android Studio目录对应里面。

2、AIDL接口的调用。在main下新建aidl文件夹,里面的aidl文件路径要和java里面的aidl包路径一致,拷贝进来即可自动编译。

20160325160812

3、由于httpClient在API23里面被废除了。所以需要导入额外的2个包。

20160325161009

4、接下来贴上app目录下的build.gradle配置。


apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "org.geometerplus.zlibrary.ui.android"
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile files('libs/httpmime-4.2.5.jar')
    compile files('libs/json-simple-1.1.1.jar')
    compile files('libs/LingvoIntegration_2.5.2.12.jar')
    compile files('libs/nanohttpd-2.0.5.jar')
    compile files('libs/open-dictionary-api-1.2.1.jar')
    compile files('libs/pdfparse.jar')
    compile project(':ambilWarna')
    compile project(':code')
    compile project(':dragsortlistview')
    compile project(':SuperToasts')
    compile files('libs/httpcore-4.4.4.jar')
    compile files('libs/httpclient-4.5.2.jar')
    compile files('libs/commons-codec-1.9.jar')
}

5、在main目录下新建jniLibs目录,放置编译好的各个cpu平台的so库。

20160325161213

6、最后make project,运行生成APK即可。

——————————————————–

另一种方式就是第三方库采用aar方式依赖使用,更加的方便快捷。

关于aar的介绍看这里:

http://www.whatjay.com/?p=1101

各个主要配置文件:

settings.gradle


include ':app'

app目录下的build.gradle:


apply plugin: 'com.android.application'

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    defaultConfig {
        applicationId "org.geometerplus.zlibrary.ui.android"
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    packagingOptions {
        exclude 'META-INF/DEPENDENCIES'
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/NOTICE'
    }
    repositories {
        flatDir {
            dirs'libs'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    testCompile 'junit:junit:4.12'
    compile 'com.android.support:appcompat-v7:23.2.1'
    compile files('libs/httpmime-4.2.5.jar')
    compile files('libs/json-simple-1.1.1.jar')
    compile files('libs/LingvoIntegration_2.5.2.12.jar')
    compile files('libs/nanohttpd-2.0.5.jar')
    compile files('libs/open-dictionary-api-1.2.1.jar')
    compile files('libs/pdfparse.jar')
    compile files('libs/httpcore-4.4.4.jar')
    compile files('libs/httpclient-4.5.2.jar')
    compile files('libs/commons-codec-1.9.jar')
    compile(name:'ambilWarna-debug', ext:'aar')
    compile(name:'code-debug', ext:'aar')
    compile(name:'dragsortlistview-debug', ext:'aar')
    compile(name:'SuperToasts-debug', ext:'aar')
}

app目录下的build.gradle也就新增了:


repositories {
        flatDir {
            dirs'libs'
        }
    }

 compile(name:'ambilWarna-debug', ext:'aar')
 compile(name:'code-debug', ext:'aar')
 compile(name:'dragsortlistview-debug', ext:'aar')
 compile(name:'SuperToasts-debug', ext:'aar')

app目录下的libs下新增了4个aar库,拷贝进去就可以了:
20160328094725

这样编译apk就可以运行了。

github地址:

https://github.com/jaychou2012/FBReaderJ-aar-Android-Studio

谭东编写。


文章评论
共收到 0 条评论