运行app:stripDebugDebugSymbols:
./gradlew.bat app:stripDebugDebugSymbols -PreactNativeDevServerPort=8081 --stacktrace
gradlew用于命令行安装Gradle,解决了用正确版本的Gradle来构建项目的问题
执行构建时: 执行 . /gradlew.bat //Gradle startup script for Windows
输出的apk安装包: app/build/outputs/apk:
输出签名: Gradle:app-Tasks-android-signingReport
手动添加依赖, 先把jar复制到libs目录下, 再在 [项目结构-Modules-app-Dependencies-加号]
最上面是ActionBar, 取而代之的是ToolBar
gradle的解析顺序:
==》Project 的 setting.gradle
==》Project 的 build.gradle
==》app 的 build.gradle
//settings.gradle
include ':app' //指示Gradle在构建应用时应将哪些模块包括在内
//gradle-wrapper.properties
gradle-wrapper 允许您构建Android项目,而无需先安装Gradle。
gradle wrapper task 利用此文件来下载指定的gradle
//Project 顶级构建文件
//bulid.gradle
buildscript {//配置Gradle自己的依赖
dependencies {
classpath 'com.android.tools.build:gradle:3.4.0'
//谷歌做的AS的插件 Android Gradle Plugin 3.4.0是插件版本
//提供了Android 编译、测试、打包等等的所有task,Gradle使用它来构建项目
}
//Gradle 搜索和下载自身依赖的库,Android Studio 3.0以上包括google()Maven库
repositories {
google{ url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }Error:SSL peer shut down incorrectly解决。
jcenter{url 'https://maven.aliyun.com/repository/public'}
}
}
allprojects {//被所有模块引用的依赖
repositories {
google{ url 'https://maven.aliyun.com/repository/google'}
maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
jcenter{url 'https://maven.aliyun.com/repository/public'}
}
}
//app 模块级构建文件
//build.gradle
apply plugin: 'com.android.application' //这将“应用”Android插件
//Groovy语言, 这段代码其实就是调用了project对象的apply方法,传入了一个以plugin为key的map。完整写出来就是这样的:
//project.apply([plugin: 'com.android.application'])
android {//android:这是编译文件中最大的代码块,关于android 的所有特殊配置都在这里,这就是由我们前面的声明的 plugin 提供的。
compileSdkVersion 25 //告诉gradle 用哪个SDK版本来编译,
buildToolsVersion "26.0.0"//buildToolsVersion需要>=CompileSdkVersion; 高版本的build-tools 可以构建低版本编译的android程序
defaultConfig {
//defaultConfig就是程序的默认配置,注意,如果在AndroidMainfest.xml里面定义了与这里相同的属性,会以这里的为主。
applicationId "test.alexander.ru.testapp"
/*这里最有必要要说明的是applicationId的选项:在我们曾经定义的AndroidManifest.xml中,那里定义的包名有两个用途:
// 作为程序的唯一识别ID,防止在同一手机装两个一样的程序, 作为我们R资源类的包名
//在以前我们修改这个ID会导致所有用引用R资源类的地方都要修改,
// 但是现在我们如果修改applicationId只会修改当前程序的ID,而不会去修改源码中资源文件的引用。*/
//这applicationId是基于创建应用程序时指定的域名和项目名称,并且在Google Play商店中必须是唯一的。
minSdkVersion 19//该值minSdkVersion是您愿意为此应用程序支持的最小Android API,
targetSdkVersion 25//而targetSdkVersion应该是最新的Android版本。
versionCode 1//该值versionCode应该是在将新版本的应用上传到Google Play商店之前递增的整数。与此同时,这个值applicationId告诉Google,这是一个现有应用程序的新版本,而不是一个新的应用程序。
versionName "1.0"//该versionName值用于您自己的内部版本跟踪。
testInstrumentationRunner//该testInstrumentationRunner属性配置为使用为Android应用程序配置的JUnit 4测试运行器。
"android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
//buildTypes:定义了编译类型,针对每个类型我们可以有不同的编译配置,不同的编译配置对应的有不同的编译命令。
//默认的有debug、release 的类型。
release {//默认情况下,Android应用程序支持两种构建类型,debug和release。debug正在使用的所有默认设置。
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
dependencies {//dependencies:是属于gradle 的依赖配置。它定义了当前项目需要依赖的其他库。
compile fileTree(dir: 'libs', include: ['*.jar'])//是一个fileTree依赖,它将文件libs夹中的任何jar文件添加到编译类路径中
//testCompile依赖关系只包含最新稳定的JUnit 4分发
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {//该androidTestCompile依赖性是指咖啡的测试库,用于Android应用程序的集成测试。在这种情况下,请求没有support-annotations通常包含的库的Espresso ,因为已经通过其他依赖关系包含不同的版本。
exclude group: 'com.android.support', module: 'support-annotations'//JUnit类和测试注释将在编译时在src/test/java层次结构中可用。
})
compile 'com.android.support:appcompat-v7:25.3.1'
//将Android兼容性库添加到项目中。这允许您在任何Android应用程序中使用与SDK版本7一样的材料设计主题和其他功能
testCompile 'junit:junit:4.12'
compile 'com.android.support.constraint:constraint-layout:1.0.2'//将新的约束布局添加到项目中。结合兼容性库,您可以创建具有最新布局功能的应用程序
}