将公司的主要项目从eclipse迁移到android studio for mac环境(1)

  上星期,我决定要解决这个问题。理由如下:

  3个月之前,我已经投入一段时间要做好这个迁移工作,直到最后,我发现能够安装了,但是运行不了,这个过程也看不到bugly上传,在找不到原因的情况下,我放弃了。

  后来,我在svn 下载代码后,在esclipse中运行时,发现这个app可以安装,但是不能运行,和之前我遇到的问题一样。后来,我了解到了是.so文件的缺失。然后联想到之前的迁移问题应该也是这个原因,所以我也开始下定决心,去解决这个问题。

   接下来,我整理一下我遇到的问题,和我如何解决:

1.从svn 下载代码  vs  自己从windows  copy  代码到macbook上

  我首先采取对方法是后者,后来我还是决定要使用svn 下载代码,为了以后更好地更新和提交。

  (1)我决定使用svnx 来解决这个问题。

  首先,我混淆了Repositories 和 working copies,然后有一点时间纠结于为什么working copies为什么在加载的地址总是少了一个“”字母,最后,查了百度,都没有找到原因。

      后来,才发现其实我需要打开repositories来作好设置。

  

  (2)下载以后,发现需要注意的是import 后的结果,发现svnx设置下载的文件位置  和 import生成的文件位置不一样,两者的架构也有很大区别。

  这个时候需要考虑的是以后要通过svnx上传下载代码,如何去同步?

注:之前,我没有理解清楚到底哪里提示错误? 到底是event log?Gradle Console ?后来可以确定的是,需要重点关注Gradle Console ,里面可以提示到底哪个文件是有问题的。然后针对性地

2.一开始运行的时候,发现图片的问题

  (1)首先是点九图。点九图的错误基本都在显示图片的地方所显示的红点可以看到。这个可以交给美工去处理。

      (2)然后是png的问题。该问题会提示”libpng error: Not a PNG file“,有些是warning,有些是error错误。然后,我就百度,查找到使用“Image Magick”来解决。

  (我在安装Image Magick的时候,有些步骤本来是二选一可以跳过,但是我顺着看,忽略了这个是可选择的。)

  下载安装好以后,我就先尝试一个文件夹中的png文件是否可以转换,然后再逐个文件夹尝试,由于  在终端中,使用的是类似于

 java -jar /Users/gengen/Documents/imagestriptool.jar /Users/gengen/Documents/ICT_android/new_IMSChat/iMSChat/src/main/res/drawable-hdpi /Users/gengen/Documents/ICT_android/new_IMSChat/iMSChat/src/main/res/drawable-hdpi 

上面黄色表示的是初始文件夹,下面粉红色表示的是目标文件夹

这两个文件位置都是可以是同一个的

   (3)使用

  aaptOptions.cruncherEnabled = false
aaptOptions.useNewCruncher = false

  忽略其中的png提示错误。

3.共用jar 包的问题

公司的项目是由四个module组成的,其中两个module是公用同一个jar包的。这时候,需要把这jar包提取出来,生成一个新的module。然后在需要使用这个jar包的项目下单击右键,在module setting 去设置引用这个新的module。

4.android studio 的设置问题

 接下来,会遇到提示需要在 uses-sdk 添加 

tools:overrideLibrary="com.xxx.xxx.xxx",和application中在android:icon后面添加tools:replace=“”。
这个在version control 有提示。

5.gradle build的问题

 (1)由于需要优化Dex,而由于处理工具DexOpt对id数目的限制,导致其处理的数目不能超过65536个,因此在Android开发中,需要使用到MultiDex来解决这个问题,MultiDex可以配合Android Studio实现一个apk包含多个dex的功能

  因此在android studio 的build.gradule 的android  下添加了

defaultConfig {
multiDexEnabled true
}

(2)在一个module下,提示各种UTF-8不可映射,因此在每个module的build.gradule添加了:

tasks.withType(JavaCompile) {
options.encoding = "UTF-8"

 (3)引用了

compile ('com.google.http-client:google-http-client-android:1.21.0')
{exclude group: 'com.google.guava'}
compile ('com.google.api-client:google-api-client-android:1.21.0')
{exclude group: 'com.google.guava'}
compile ('com.google.api-client:google-api-client-gson:1.21.0')
{exclude group: 'com.google.guava'}
compile ('com.google.code.gson:gson:2.4')
这个过程需要下载。
其中,exclude 表示了排除之前已经编译过的包
compile 'com.google.guava:guava:18.0'

 6.引入.so 文件,由于没有设置svn可以下载.so文件,我自己copy过去

一开始,还是没有检测到.so文件在哪里使用,后来,我可以查看bugly,然后我上网查到了

首先添加了:

sourceSets {
main {
jniLibs.srcDirs = ['libs']
}
}
然后是在lib中的armeabi中的名字修改成 armeabi-v7a,
接下来是在src 下新建
名为jniLibs的文件夹,然后把armeabi-v7a整个文件夹移过去。

  7.一些方法是过时的,因此需要在gradule.build中添加这个方法所在的库,例如:

useLibrary 'org.apache.http.legacy'
不过,接下来,就是需要使用新的包来适配方法。

 8.每次出现问题重新修改以后,都是需要clean build和rebuild 

总的来说,我都是需要关注一个android studio 的每个版本升级需要注意的地方

然后,由于自己对于android很多东西都不熟悉,因此需要百度快速找到解决问题的方法,同时我还要多琢磨每个方法的使用逻辑。 

原文地址:https://www.cnblogs.com/gengen1990/p/5403816.html