关于eclipse开发Android项目移植到Android Studio或者IDEA中gradle项目的坑

2 篇文章 0 订阅
2 篇文章 0 订阅

迁移步骤

1、  eclipse导出gradle项目。

File->Export->Generate Gradle build files然后一直下一步,选择你要导出的项目(不用管依赖项目,会自动导出的),如图:

 

2、  AS或者IDEA导入gradle项目 ,注意:

dependencies {
    classpath 'com.android.tools.build:gradle:3.0.1'
}

版本,决定

buildToolsVersion的版本,需要依赖libs下jar包的情况下,使用如下:
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

如果本项目是可以执行的apk项目,那么注意build里面写上:

apply plugin: 'com.android.application'

如果是作为第三方库使用的话添加如下一句:

apply plugin: 'com.android.library'

我涉及到的一个library完整的从eclipse导出 的build.gradle文件如下:

buildscript {
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.0.1'
    }
}
apply plugin: 'com.android.library'
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
}

android {
    compileSdkVersion 18
    buildToolsVersion "26.0.2"

    sourceSets {
        main {
            manifest.srcFile 'AndroidManifest.xml'
            java.srcDirs = ['src']
            resources.srcDirs = ['src']
            aidl.srcDirs = ['src']
            renderscript.srcDirs = ['src']
            res.srcDirs = ['res']
            assets.srcDirs = ['assets']
            jniLibs.srcDirs = ['libs']
        }

        // Move the tests to tests/java, tests/res, etc...
        instrumentTest.setRoot('tests')

        // Move the build types to build-types/<type>
        // For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
        // This moves them out of them default location under src/<type>/... which would
        // conflict with src/ being used by the main source set.
        // Adding new build types or product flavors should be accompanied
        // by a similar customization.
        debug.setRoot('build-types/debug')
        release.setRoot('build-types/release')
    }
}
3、导入完成后,根据gradle版本,build project即可,在bulid对应的目录下:
 

生成可以被外界依赖的aar文件,注意

jniLibs.srcDirs = ['libs']也很关键,打包so文件时用的到,如果你的library项目里面的AndroidManifest.xml中有main入口
<!--<intent-filter>-->
    <!--<action android:name="android.intent.action.MAIN" />-->

    <!--<category android:name="android.intent.category.LAUNCHER" />-->
<!--</intent-filter>
切记一定要注释掉,否则作为第三方依赖使用后,打包安装到手机上会出现两个图标。(亲身惨痛经历)

再有就是最关键的报so文件的路径错误

08-27 19:52:50.892 7108-7218/com.alipay.mobile.android.veirfy.demo W/System.err: java.lang.UnsatisfiedLinkError: dalvik.system.PathClassLoader[DexPathList[[zip file "/data/app/com.alipay.mobile.android.veirfy.demo-HbYA70kt_gPprmJzqz3riA==/base.apk"],nativeLibraryDirectories=[/data/app/com.alipay.mobile.android.veirfy.demo-HbYA70kt_gPprmJzqz3riA==/lib/arm, /data/app/com.alipay.mobile.android.veirfy.demo-HbYA70kt_gPprmJzqz3riA==/base.apk!/lib/armeabi-v7a, /system/lib, /system/vendor/lib, /system/vendor/lib/hw]]] couldn't find "libdeviceid_1.0.so"
08-27 19:52:50.893 7108-7218/com.alipay.mobile.android.veirfy.demo W/System.err:     at java.lang.Runtime.loadLibrary0(Runtime.java:1011)
08-27 19:52:50.893 7108-7218/com.alipay.mobile.android.veirfy.demo W/System.err:     at java.lang.System.loadLibrary(System.java:1657)
08-27 19:52:50.893 7108-7218/com.alipay.mobile.android.veirfy.demo W/System.err:     at com.alipay.deviceid.module.senative.DeviceIdUtil.<clinit>(DeviceIdUtil.java:28)
08-27 19:52:50.893 7108-7218/com.alipay.mobile.android.veirfy.demo W/System.err:     at com.alipay.deviceid.module.senative.DeviceIdUtil.getInstance(Unknown Source:0)
08-27 19:52:50.893 7108-7218/com.alipay.mobile.android.veirfy.demo W/System.err:     at com.alipay.deviceid.DeviceTokenClient$1.run(DeviceTokenClient.java:54)
08-27 19:52:50.893 7108-7218/com.alipay.mobile.android.veirfy.demo W/System.err:     at java.lang.Thread.run(Thread.java:764)
                                                                               

造成的闪退,

解决可参考如下:在build.gradle中使用

ndk {
    abiFilters  'armeabi-v7a','armeabi'    //解決闪退的关键
}减少不必要的匹配,这样写也会大大缩减包的体积,同时兼容大部分机型。

另我的项目一旦使用混淆就闪退,

minifyEnabled false    // true 是运行混淆文件 ,false 是不运行混淆文件。

不知什么原因,索性就不混淆了,以上是项目实战中踩到的坑,在此做个笔记,一点心得仅供参考,各位大牛多多指教!!

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值