20190917 Android 编译遇到的若干问题

下载别人的github源码来编译,都编译不过?

下了android工程netGuard然后,找一个合适(强调是因为我对代码管理相当混乱)的地方解压它
gradle build时提示:

  • errorno-such-property-gradleversion-for-class-jetgradleplugin 看了错误提示隐隐约约 (https://stackoverflow.com/a/54517820 ) 觉得是AS版本太旧了,毕竟几年没打开用了;遂根据提示更新下AS再build,不提示这个错了。
  • 开始提示res xml文件中xxx属性不存在,想到我改了人家的compileSdkVersion和targetSdkVersion,人家是29,最新的android10 (遂安装相应的SDK,多瞅瞅绿色运行按钮的右边),我改小了(因为我想着改小以适应我的Android7.0,咦,真笨呐,minSdkVersion和compatibility是什么意思来着?),改回去。
  • build没问题了,可咋没生成apk出现呢?插上手机,明明powershell adb devices都能看到我的手机,为啥AS就不行呢?核实下任务管理器adb所在的正是位于Android SDK Location设置的子目录,应该没问题呀! 后来打开资源管理器,任务管理器,看到当启动AS时adb都没被启动,一定有问题;点了troubleshoot on connection 也不管用;再一看,运行的下新建一个Android App的配置,module也没有,且不可选,搞什么啊!后来bing到SOF,人家说(https://stackoverflow.com/questions/29087882/android-studio-run-debug-configuration-error-module-not-specified),先删掉setting.gradle中的includ':app'让它同步一次,再加上这句,再同步,果不其然,就好了,构建按钮那里也自己出现了!app然后就可以点击,就在手机上安装了调试版了.
  • 可是要给别人用,这个apk并不能直接安装,得release!终于在Build里面找到Generate Signed..后又出现问题:看起来和IDE相关的一个maven依赖找不到!Could not find org.jetbrains.trove4j:trove4j:20160824.是没搞明白Gradle工程中的google(),Jcenter(),mavenCenteral()的含义,搞明白后,给maven换源就行了;因为下面的错误提示很详细,xxx链接 404,说明在相应的中央仓库里没有找到这个包。换一个源就好了,比如ali:
maven {
 url'http://maven.aliyun.com/nexus/content/groups/public/' 
 }
jenter {
 url'http://maven.aliyun.com/nexus/content/repositories/jcenter'
}

20200315 补充 注意是换 allprojects { repositories { xxx }}中的jcentermaven

  • 又遇到一个问题是:DSL element 'useProguard' is obsolete and will be removed soon. Use 'android,此时在gradle.properties中加入android.enableR8 = true即可,具体原理就不追究了。
  • 20210123 补充 Android Studio离线更新
    Android studio 太旧,提示工程不适用,就要安装更新包;安装更新包时连接容易被reset(你说国内学个数字洋玩意儿怎么就这么麻烦呢?),复制错误日志中的下载链接自己下载,然后 cd 到 Android Studio安装目录进行安装, java -classpath "path_to_download_jar" com.intellij.updater.Runner install .https://www.jianshu.com/p/465b0234142b
  • 编译与分发
    通过usb安装的debug版本分享给别人安装会失败,必须要是签名了的release版本,但是release版本没有高级功能(要付费)也没有从module的build.gradle 配置文件中看出什么猫腻(它的release和debug配置是一样的),所以开发一个有高级付费功能的app应该怎么设计呢? 于是百度得,只要构建一个双重签名(jar签名和apk签名,AS构建时会询问)的debug版本也是可以给别人安装的。先这么搞吧。
  • gradle包安装
    自己下载的gradle包需要放在C:\Users\username\.gradle\wrapper\dists下,下载链接看请看AS日志,再通过其他不可告人的方式下载gradle包。

版权声明:本文为KHZ_222原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。