原⽣Android_APP⽬录结构分析1 App⼯程⽬录
从结构图中可以看到,该⼯程下⾯有两个⽬录:⼀个是app,另⼀个是Gradle Scripts。其中, app下⾯⼜
有3个⼦⽬录,功能说明如下:
(1) manifests⼦⽬录,下⾯只有⼀个xml⽂件,即l,是App的运⾏配置⽂件。
(2) java⼦⽬录,下⾯有3个ample.hellorworld包,其中第⼀个包存放的是App⼯程的java源代
码,后⾯两个包存放的是测试⽤的Java代码。
(3) res⼦⽬录,存放的是App⼯程的资源⽂件。 res⼦⽬录下⼜有4个⼦⽬录:
drawable⽬录存放的是图形描述⽂件与⽤户图⽚。
layout⽬录存放的是App页⾯的布局⽂件。
mipmap⽬录存放的是启动图标。
values⽬录存放的是⼀些常量定义⽂件,⽐如字符串常量l、像素常量l、颜⾊常量
Gradle Scripts下⾯主要是⼯程的编译配置⽂件,主要有:
(1) adle,该⽂件分为项⽬级与模块级两种,⽤于描述App⼯程的编译规则。
(2) proguard-rules.pro,该⽂件⽤于描述java⽂件的代码混淆规则。
(3) gradle.properties,该⽂件⽤于配置编译⼯程的命令⾏参数,⼀般⽆须改动。
(4) adle,配置哪些模块在⼀起编译。初始内容为include ':app',表⽰只编译App模块。
(5) local.properties,项⽬的本地配置,⼀般⽆须改动。该⽂件是在⼯程编译时⾃动⽣成的,⽤于描述
开发者本机的环境配置,⽐如SDK的本地路径、 NDK的本地路径等。
2 编译配置⽂件adle
apply plugin: 'com.android.application'
android {
// 指定编译的SDK版本号如29表⽰Android 10 编译
compileSdkVersion 29
// 指定编译⼯具的版本号,这⾥的头两位数字必须与compileSdkVersion 保持⼀致,具体的版本号可在sdk安装⽬录的"sdk\build-tools"下到
buildToolsVersion "29.0.2"
defaultConfig {
// 指定该模块的应⽤编号,即App的包名。该参数为⾃动⽣成,⽆需修改
applicationId "ample.hellodemo"原生安卓app开发
// 指定App适合运⾏的最⼩SDK版本号。如16表⽰⾄少要在Android4.1上运⾏
minSdkVersion 16
// 指定⽬标设备的SDK版本号。即该App最希望在哪个版本的Android上运⾏
targetSdkVersion 29
// 指定App的应⽤版本号
versionCode 1
// 指定App的应⽤版本名称
versionName "1.0"
testInstrumentationRunner "st.runner.AndroidJUnitRunner"
}
buildTypes {
release {
// 指定是否开启代码混淆功能。true表⽰开启混淆,false表⽰⽆需混淆。
minifyEnabled false
// 指定代码混淆规则的⽂件名
proguardFiles getDefaultProguardFile(''), 'proguard-rules.pro'
}
}
}
// 指定App编译的依赖信息
dependencies {
// 指定引⽤jar包的路径
implementation fileTree(dir: 'libs', include: ['*.jar'])
// AndroidX是Google 2018 IO ⼤会推出的新扩展库与⽀持库不同,AndroidX 软件包会单独维护和更新。 androidx 软件包使⽤严格的语义版本控制,从版本 1 implementation 'androidx.appcompat:appcompat:1.0.2'
implementation 'straintlayout:constraintlayout:1.1.3'
// 指定单元测试的Junit版本
testImplementation 'junit:junit:4.12'
androidTestImplementation ':junit:1.1.0'
androidTestImplementation 'st.espresso:espresso-core:3.1.1'
}
3 AndroidX
3.1 Androidx是什么
AndroidX 是 Android 团队⽤于在 Jetpack 中开发、测试、打包和发布库以及对其进⾏版本控制的开源项⽬。[摘⾃官⽅]
AndroidX完全取代了⽀持库,不仅提供同等的功能,⽽且提供了新的库。
AndroidX 会将原始⽀持库 API 软件包映射到 androidx 命名空间。只有软件包和 Maven ⼯件名称发⽣了变化;类、⽅法和字段名称没有改变。
与⽀持库不同,AndroidX 软件包会单独维护和更新。androidx 软件包使⽤严格的语义版本控制,从版
本 1.0.0 开始,可以单独更新项⽬中的 AndroidX 库。
所有新⽀持库的开发⼯作都将在 AndroidX 库中进⾏,这包括维护原始⽀持库⼯件和引⼊新的 Jetpack 组件。
3.2 AndroidX的变化
1.常见依赖库映射
旧编译⼯件AndroidX 编译⼯件
com.straint:straintlayout:constraintlayout:1.1.2 com.android.support:appcompat-v7androidx.appcompat:appcompat:1.0.0
com.android.support:cardview-v7androidx.cardview:cardview:1.0.0
com.android.support:dinatorlayout:coordinatorlayout:1.0.0 com.android.support:le.android.material:material:1.0.0-rc01
com.android.support:drawerlayout androidx.drawerlayout:drawerlayout:1.0.0
com.android.idlayout:gridlayout:1.0.0
com.android.dia2:media2:1.0.0-alpha03
com.android.support:multidex androidx.multidex:multidex:2.0.0
com.android.support:percent androidx.percentlayout:percentlayout:1.0.0
com.android.lerview:recyclerview:1.0.0
com.android.support:support-annotations androidx.annotation:annotation:1.0.0
com.android.support::core:1.0.0
com.android.support:support-fragment androidx.fragment:fragment:1.0.0
com.android.support:support-v4androidx.legacy:legacy-support-v4:1.0.0
com.android.support:viewpager androidx.viewpager:viewpager:1.0.0
com.android.support:swiperefreshlayout androidx.swiperefreshlayout:swiperefreshlayout:1.0.0更多详细依赖库变化,可查阅或下载这些映射的 ⽂件。
2.常见类映射
⽀持库类AndroidX 类
android.arch.lifecycle.Lifecycle androidx.lifecycle.Lifecycle
android.support.v4.app.Fragment androidx.fragment.app.Fragment
android.support.v4.app.FragmentActivity androidx.fragment.app.FragmentActivity
android.support.v7.app.AppCompatActivity androidx.appcompat.app.AppCompatActivity android.support.v7.app.ActionBar androidx.appcompat.app.ActionBar
android.support.v7.widget.lerview.widget.RecyclerView
android.support.design.card.le.android.material.card.MaterialCardView android.support.design.ripple.le.android.material.ripple.RippleUtils
android.support.design.widget.dinatorlayout.widget.CoordinatorLayout android.support.design.widget.NavigationView c
更多详细⽀持类映射变化,可查阅或下载这些映射的 ⽂件。
3.3 为什么要迁移AndroidX?
下⾯是Google官⽅描述
Existing packages, such as the Android Support Library, are being refactored into AndroidX.
Although Support Library versions 27 and lower are still available on Google Maven,
all new development will be included in only AndroidX versions 1.0.0 and higher.
⼤致意思是:现有的软件包,如Android⽀持库,正在被重构为Androidx。尽管在Google Maven上仍然提供⽀持库版本27及更低版本,但所有新开发将只包含在Androidx 1.0.0及更⾼版本中。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论