配置Android项目 - 一些重要的事情

简介: 配置Android项目 - 一些重要的事情

gitignore


当你在Android Studio中创建一个新的Android项目时,它已经生成了gitignore文件,但通常它不包含所有必要的规则。

为了快速生成和下载gitignore文件,我建议您使用gitignore.io网站。只需输入必要的关键字,如 — Android,Intellij并点击生成按钮。

微信图片_20220514110734.png

在模板项目中查看gitignore文件。


tools folder


如果你有一些第三方脚本,规则集或其他与您的项目相关的文件不要只是简单的把它们放在根目录 —它会造成混乱。(特别是对于那些使用Project视图,而不是Android视图)

尝试创建一个文件夹(例如tools),并将所有这些文件放入此文件夹。

微信图片_20220514110739.jpg

通常我在那里放一些自定义的gradle脚本文件,proguard和静态代码分析工具的规则,如pmd,findbugs,lint。

在模板项目中查看 tools文件夹。


flavors


Flavours用于创建具有不同设置的构建。在大多数情况下,我会立即设置两种flavors — dev和prod:

  • applicationId
  • versionCode / versionName
  • server endpoints
  • google services keys

productFlavors{
   dev{
      signingConfig signingConfigs.debug
      versionCode gitVersionCodeTime
      versionName gitVersionName
   }
   prod{
      signingConfig signingConfigs.release
      versionCode gitVersionCode
      versionName gitVersionName
   }
}

在模板项目中查看 productFlavors


keystore


keystore是一个二进制文件,其中包含一个或多个用于签署应用程序的私钥。

当从IDE运行或调试项目时,Android Studio会使用Android SDK工具生成的调试证书自动为您的APK签名。

使用本地调试keystore时有几个问题:

  • 到期日365天
  • 从多台计算机安装应用程序需要先卸载
  • google服务需要密钥库SHA-1指纹

这就是为什么我通常生成调试密钥库并提交到版本控制系统。

signingConfigs {
   debug {
       keyAlias 'androiddebugkey'
       keyPassword 'android'
       storePassword " android '
       storeFile file(' ../keystore/debug . keystore')
   }
   release {
   }
 }

在模板项目中查看 signingConfigs


proguard


Android proguard用来做三件事:

  • 压缩未使用的代码 — 帮助你不超出64k限制
  • 优化代码和apk
  • 混淆代码 — 使你的APK难以做逆向工程

问题是混淆和代码优化显着增加了编译时间,使调试更困难。

这就是为什么最好对发布和调试版本使用不同的proguard规则:

  • rules-proguard.pro
  • rules-proguard-debug.pro

 buildTypes{
     release{
         minifyEnabled true
         proguardFiles getDefaultProguardFile('proguard-android.txt'),
                 "$project .rootDir/toolsf rules - proguard, pro"
         signingConfig signingConfigs.release
     }         
     debug{
         minifyEnabled true
         proguardFiles getDefaultProguardFile('proguard- android.txt'), :
                 "$project rootDir/ tools/rules-proguard-debug. pro"
         signingConfig signingConfigs.debug
     }
 }

用于调试构建的Proguard规则必须具有以下行以强制proguard忽略警告,跳过代码混淆和优化:

# Add project specific ProGuard rules here.
-dontobfuscate
-dontoptimize
-ignorewarnings

对于发布版本,设置proguard规则将会更加困难,因为几乎每个库都有自己的特定规则。幸运的是,有一个开源代码库 —  android-proguard-snippets,它包含所有主要库的proguard规则。

# Add project specific ProGuard rules here.
# Remove logs
-assumenosideeffects class android.util.Log {
   public static boolean isLoggable(java.lang.String, int);
   public static int v(...);
   public static int i(...);
   pub11c static int w(...);
   public static int d(...);
   public static int e(...);
}
# Proguard configurations for comion Android libraries;
# https://github.com/krschultz/android-proguard-snippets

在模板项目中查看 rules-proguard.prorules-proguard-debug.pro


strict mode


Android StrictMode可帮助您检测不同类型的问题:

  • 可关闭对象没关闭
  • 在主线程中读写文件或者访问网络
  • uri 暴露

每当检测到这样的问题,它可以显示适当的日志或应用程序崩溃,具体取决于你的配置。

我建议你只在调试的时候打开它并且使用detectAll方法来检测所有类型的问题。

if(BuildConfig.DEBUG){
  StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
          .detectAll()
          .penaltyLog()
          .build());
  StrictMode . setVmPolicy(new StrictMode . VmPolicy . Builder()
          .detectAll()
          .penaltyLog()
          .build());
}

这里是当你忘记关闭SQLiteCursor的日志的例子:

StrictMode:
A resource was acquired at attached stack trace but never released.
See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called
       at dalvik.system.CloseGuard.open(CloseGuard.ava:184)
       at android.database.CursorWindow.<init>(CursorWindow.java:111)
       at android.database.AbstractWindowedCursor.lear0rCreateWindow(AbstractwindowedCursor . java:at android, database . sqlite. SQLiteCursor , fillWindow(SQLiteCursor . java:139)
       at android.database.sqlite,SQLiteCursor,getCount(SQLiteCursor,java:133)
       at android.database.AbstractCursor,moveToPosition(AbstractCursor , java:197)
       at android.database.Abstractcursor.moveToFirst(Abstractcursor . java :237)
       at com.dd.template.MainActivity.onCreate(MainActivity.java:124)

在模板代码中查看StrictMode

相关文章
|
开发工具 Android开发 iOS开发
如何在Android Studio中配置Flutter环境?
如何在Android Studio中配置Flutter环境?
2981 160
|
9月前
|
缓存 Unix Android开发
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
1037 8
|
9月前
|
存储 API Android开发
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
866 4
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
|
9月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
1183 6
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
1014 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
2107 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
Dart 前端开发 Android开发
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
518 4
【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
10279 2
|
网络协议 开发工具 Android开发
|
8月前
|
移动开发 前端开发 Android开发
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡
1433 12
【02】建立各项目录和页面标准化产品-vue+vite开发实战-做一个非常漂亮的APP下载落地页-支持PC和H5自适应提供安卓苹果鸿蒙下载和网页端访问-优雅草卓伊凡

热门文章

最新文章