关键词:
windows only, 新手向, 老项目。
前言
最近把老版本的手游打android包,用到了ndk,又因为as(android studio)用了新版本,导致打包一个辛苦。
常见问题:
- as到了高版本,用的也是高版本的jdk,而必须保证as和gradle使用相同的jdk,否则莫名其妙很多问题
- 高版本as下载了最新的ndk,gradle又不认识
- 傻不唧唧的升级gradle,吭哧吭哧sync半天,最后还是编译不过。,又必须把gradle退回来。
而as需要配置的很多:有的配置在gradle(用groovy语法),有的配置在xml,有的配置在as的settings中
gradle文件还有两个,一个是项目的,一个是app的
- gradle
- gradle版本 gradle/wrapper/gradle-wrapper.properties
distributionUrl=https://services.gradle.org/distributions/gradle-4.8-all.zip - as用的gradle plugin版本 文件:./build.gradle
buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:3.2.0'
}
} - 奇怪的是,上面2个版本号不一样,也不知道其匹配规则是什么?
- gradle版本 gradle/wrapper/gradle-wrapper.properties
- as的sdk版本 app/build.gradle
android {
defaultConfig {
minSdkVersion 16 -- 低于17 首次执行应用会弹窗 警告安全问题
targetSdkVersion 26 -- 不用新功能不需要改
compileSdkVersion 29 -- 这个不能大于as的版本
ndk {
abiFilters 'armeabi-v7a' 'arm64-v8a' -- 没有arm64-v8a 首次执行应用会弹窗 警告兼容性
}
}
} - 本地配置 ./local.properties 这个又不适合放在svn
ndk.dir=C:\Users\Administrator\AppData\Local\Android\Sdk\ndk-bundle
sdk.dir=C:\Users\Administrator\AppData\Local\Android\Sdk - 权限
文件:app/src/main/AndroidManifest.xml
android:usesCleartextTraffic="true" 否则只能用https不能用http - as的配置(as 版本 Chipmunk)
- Android SDK
File -> Settings -> Appearance & Behavior -> System Settings -> Android SDK - Gradle
File -> Settings -> Build, Execution, Deployment -> Build Tools -> Gradle
需要把jdk配置的跟as的jdk一致: Android Studio default JDK
- Android SDK
使用
如果你看上以上文档,基本就会了手动配置;如果想要更方便,往下看。
- 查看配置:
npm run your/project/path
- 检查列表
as是否跟gradle plugin版本一致
gradle plugin是否跟 gradle版本一致
gradle版本是否跟ndk版本一致
android sdk minSdkVersion是否有安全问题
android ndk abiFilters是否有兼容性问题
AndroidManifest.xml是否允许http
如果有问题,对应提示来修改即可。预制一些config,直接使用
npm run your/project/path --config=chipmuck-gradle3