Android开发总结

1 在AS中导入项目时最好是通过import的方式导入,而不是open,虽然open的方式也可以,但为了避免未知的麻烦务必使用import的方式,如果你导入的是别人的项目,或者是从网上下载的demo,那么要将project的 .gradle build .idea以及Module的build文件删除,这样的操作同样也是为了避免未知的错误,如果出现导入项目出错不妨这样试一下,然后在rebuild clean一下,以上的步骤可以处理绝大部分的导入错误,但有这么一种情形,你已经在gradle中依赖了RxJava,但在项目中却没法引用,这个时候可以这么处理,点击File -> Invalidate Caches/Restart在跳出的弹框里点击”Invalidate and Restart”,意思就是清除缓存并重启,这种方法同样适用于AS崩溃后没法使用的问题,如果你的AS崩溃了,并且跳出一个弹框里面是乱七八糟的英文,那么删除.android文件夹,进入后如果出现错误那么重复上面的解决方案。

2 在你应用上传Google应用市场时可能会需要你zipalign优化你的程序包,但使用zipalign的前提是你的程序包以及签过名了,在AndroidSDk的build-tools文件的Android各版本下可以看到zipalign工具,推荐使用手动的方式来使用 zipalign ,使用以下命令:

zipalign -v 4 source.apk destination.apk

source.apk指的是优化前的apk,destination.apk指的是优化后的apk,可使用命令 zipalign -c -v 4 application.apk来检查程序包是否已经进行了优化。

3 手动输入命令实现apk签名:
jarsigner -verbose -keystore H:\GalleryVault\MobilePhone.jks -signedjar app_sign.apk app_unsign.apk mobilephone
H:\GalleryVault\MobilePhone.jks指的是keystore文件的路径,app_sign.apk指的是签名后的apk文件名称,app_unsign.apk指的是签名前的apk,mobilephone指的是key文件的别名

4 生成开发密钥散列
每个 Android 开发环境都将会有一个唯一的开发密钥散列。要生成开发密钥散列,在 Mac 中,运行以下命令:
keytool -exportcert -alias androiddebugkey -keystore ~/.android/debug.keystore | openssl sha1 -binary | openssl base64

Windows 中,运行以下命令:
keytool -exportcert -alias androiddebugkey -keystore %HOMEPATH%.android\debug.keystore | openssl sha1 -binary | openssl base64

此命令将针对您的开发环境生成一个包含 28 个字符的唯一密钥散列。将其复制粘贴到下面的字段中。对于参与应用开发的每个人的开发环境,您必须分别提供开发密钥散列。

生成发布密钥散列

Android 应用必须先使用发布密钥进行电子签名,然后才能上传到商店中。要生成发布密钥散列,请在 Mac 或 Windows 内运行以下命令,并替换您的发布密钥别名和 keystore 路径:

keytool -exportcert -alias YOUR_RELEASE_KEY_ALIAS -keystore YOUR_RELEASE_KEY_PATH | openssl sha1 -binary | openssl base64

这会生成一个包含 28 个字符的字符串

5如果你在项目中使用了ButterKnife同时希望在library中依赖它,那么需要做如下的步骤:
1>新建library在gradle文件dependencies闭包中添加
compile ‘com.jakewharton:butterknife:8.8.1’
annotationProcessor ‘com.jakewharton:butterknife-compiler:8.8.1’
在文件头添加apply plugin: ‘com.jakewharton.butterknife’

2>在项目project的gradle文件的dependencies闭包中添加 classpath ‘com.jakewharton:butterknife-gradle-plugin:8.8.1’

3>在你主工程也就是依赖了那个library的module中的gradle文件中的dependencies闭包中添加
annotationProcessor ‘com.jakewharton:butterknife-compiler:8.8.1’
并在文件头部添加apply plugin: ‘com.jakewharton.butterknife’

6可以通过如下命令查询库的依赖报告:
MAC中:
./gradlew -q dependencies app:dependencies –configuration compile
Windows中:
gradlew -q dependencies app:dependencies –configuration compile

7在使用adb remount命令时提示如下:
dm_verity is enabled on the system partition.
Use “adb disable-verity” to disable verity.
If you do not, remount may succeed, however, you will still not be able to write to these volumes.
remount succeeded

那么解决办法如下:

  1. adb disable-verity

  2. adb reboot

  3. 重启后adb root

  4. adb remount

8 当你的项目中需要调用另一个进程的服务时(也就是使用了AIDL),那么你需要将你调用的那个服务所在项目的aidl文件复制到你的项目中去,注意需要将aidl文件的包路径也一起拷贝过来,这个时候调用bindService来使你的项目与该服务保持关联,也就是通过隐式启动的方式来绑定该服务,在Android5.0手机上会报
Caused by: java.lang.IllegalArgumentException: Service Intent must be explicit
服务的意图必须明确指出,解决方案很简单,给intent添加一个package,也就是你远程服务所在的包路径

9 当出现如下图的错误时请先检查是否有依赖冲突

这里写图片描述

关于依赖冲突可参考文章 有关 Android Studio 重复引入包的问题和解决方案

10 在AS中查看依赖树的指令如下

./gradlew app:dependencies

11 当提交代码时无论如何都要git pull一下在git push,今天又遇到代码提交问题了。

12 如果你想通过命令行的方式来打包Apk,可在终端中定位到你的项目根目录中输入

./gradlew assembleRelease

这是MAC中的方法,同理如果是debug包就输入

./gradlew assembleDebug

具体要打什么包要看你的buildTypes中定义的类型,输入命令打包时类型的首字母大写就可以了,当然你也可以在AS的Terminal中输入这些命令,不过我还是喜欢在MAC的Terminal中操作。

13 Gradle编译报错
这里写图片描述
你需要在moudle的build.gradle中添加

configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:26.1.0'
   }

表示dependencies中所有的依赖项强制依赖com.android.support:support-annotations:26.1.0这个版本,如图所示
这里写图片描述

猜你喜欢

转载自blog.csdn.net/ku_tengfei/article/details/78542879