Ubuntu中利用纯下令行进行Android开辟

打印 上一主题 下一主题

主题 1010|帖子 1010|积分 3030

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
安装JDK

  1. sudo apt install openjdk-8-jdk
复制代码
留意本文采用jdk1.8,因为后文设置的android
版本太低。
安装Android下令行工具和SDK(不可用):

访问https://developer.android
.google.cn/studio,拉到最底下,找到“仅限下令行工具”,选择Linux下载即可。
下载后,在Linux下新建文件夹,把这个压缩包弄进去,然后解压:
  1. unzip commandlinetools-linux-11076708_latest.zip
复制代码
接下来进入cmdlines-tools目次,新建一个latest目次,将解压后的全部文件移到该目次:
  1. mkdir latest
  2. mv * latest
复制代码
留意mv会将除latest外全部文件移入latest,当移动latest时会报错,但此时已经完成了移动。
接下来进入latest下的bin目次,输入:
  1. ./sdkmanager --list
复制代码
这将列出全部可安装的Android工具。
这里我们安装最新版的build-tools和platforms:
  1. ./sdkmanage "build-tools;35.0.0"
  2. ./sdkmanager "platforms;android
  3. -35"
复制代码
走到这一步,就卡住了,来看Android文档是咋说的:Android Studio | Android Developers
  1. 创建和更新 Android 项目。(现已改用 Android Studio 完成。)
复制代码
因此,在这里面,我们需要安装旧版的Android SDK,而非新版的下令行工具。
安装Android SDK

下载:
  1. wget http://dl.google.com/android
  2. /android
  3. -sdk_r24.4.1-linux.tgz
复制代码
解压:
  1. tar xzvf android
  2. -sdk_r24.4.1-linux.tgz
复制代码
配置情况变量,打开~/.bashrc文件,在最后写入:
  1. export ANDROID_HOME=<你的Android SDK路径>
  2. export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
复制代码
然后source一下:
  1. source ~/.bashrc
复制代码
还没完,这时候应该进入可以打开图形界面的系统(或X11转发),直接输入下令:
  1. android
复制代码
然后再在弹出的图形化界面中安装build-tools和platform-tools。这里Android已经给我们选好了,直接点“install”即可。
然后点击每一个父项目,点“Accept license”即可。
安装Gradle及Android插件

建议利用GitHub下载加速网站GitHub 文件加速直接访问下载:https://github.com/gradle/gradle-distributions/releases/download/v8.11.0/gradle-8.11-bin.zip。然后解压:
  1. unzip gradle-8.11-bin.zip
复制代码
然后设置GRADLE_HOME和PATH情况变量:
  1. vim ~/.bashrc
复制代码
在最后写入:
  1. export GRADLE_HOME<你的Gradle路径>
  2. export PATH=$PATH:$GRADLE_HOME/bin
复制代码
然后保存,更新:
  1. source ~/.bashrc
复制代码
创建一个项目

切换到新的文件夹,然后输入下令:
  1. android
  2. create project [选项]
复制代码
此中,选项表明如下:


  • -n --name:项目名称。
  • -a --activity:创建的默认运动的名称。[必填]
  • -k --package:应用程序的Android包名称。[必填]
  • -v --gradle版本:gradle安卓插件版本。
  • -t-target:新项目的目标ID。通过android
    list targets查察。[必填]
  • -g --gradle:利用gradle模板。若指定-g,则必须指定参数-v,即gradle安卓插件版本。
  • -p --path:新项目的目次。[必填]
如:
  1. android
  2. create project -n demo -a MainActivity -k com.woyou.demo -t 1 -p . -g -v 4.0.0
复制代码
运行完后,文件目次如下:
  1. .├── build.gradle├── gradle│   └── wrapper│       ├── gradle-wrapper.jar│       └── gradle-wrapper.properties├── gradlew├── gradlew.bat├── local.properties└── src    ├── android
  2. Test    │   └── java    │       └── com    │           └── woyou    │               └── demo    │                   └── MainActivityTest.java    └── main        ├── AndroidManifest.xml        ├── java        │   └── com        │       └── woyou        │           └── demo        │               └── MainActivity.java        └── res            ├── drawable-hdpi            │   └── ic_launcher.png            ├── drawable-ldpi            │   └── ic_launcher.png            ├── drawable-mdpi            │   └── ic_launcher.png            ├── drawable-xhdpi            │   └── ic_launcher.png            ├── layout            │   └── main.xml            └── values                └── strings.xml
复制代码
打包

修改Android糟糕的Gradle配置

在打包之前,需要修改Android糟糕的Gradle配置,因此android
下令早就不维护了:
打开gradle-wrapper,设置项目中gradle的版本和zip的网络地址:
  1. #Wed Apr 10 15:27:10 PDT 2013
  2. distributionBase=GRADLE_USER_HOME
  3. distributionPath=wrapper/dists
  4. zipStoreBase=GRADLE_USER_HOME
  5. zipStorePath=wrapper/dists
  6. #distributionUrl=http\://services.gradle.org/distributions/gradle-1.12-all.zip
  7. distributionUrl=https\://mirrors.cloud.tencent.com/gradle/gradle-6.1.1-all.zip # 新增这一行
复制代码
打开build.gradle,设置镜像堆栈:
  1. repositories {
  2.         google()
  3.         jcenter()
  4.         maven { setUrl("https://maven.aliyun.com/repository/central") }
  5.         maven { setUrl("https://maven.aliyun.com/repository/jcenter") }
  6.         maven { setUrl("https://maven.aliyun.com/repository/google") }
  7.         maven { setUrl("https://maven.aliyun.com/repository/gradle-plugin") }
  8.         maven { setUrl("https://maven.aliyun.com/repository/public") }
  9.         maven { setUrl("https://jitpack.io") }
  10.         maven { setUrl("https://maven.aliyun.com/nexus/content/groups/public/") }
  11.         maven { setUrl("https://maven.aliyun.com/nexus/content/repositories/jcenter") }
  12.         maven { setUrl("http://maven.aliyun.com/nexus/content/repositories/releases")}
  13.         mavenCentral()
  14.         gradlePluginPortal()
  15.     }
复制代码
然后将runProguard改成minifyEnabled:
  1. minifyEnabled falseproguardFile getDefaultProguardFile('proguard-android
  2. .txt')
复制代码
然后加上allprojects:
  1. allprojects {    repositories {
  2.         google()
  3.         jcenter()
  4.         maven { setUrl("https://maven.aliyun.com/repository/central") }
  5.         maven { setUrl("https://maven.aliyun.com/repository/jcenter") }
  6.         maven { setUrl("https://maven.aliyun.com/repository/google") }
  7.         maven { setUrl("https://maven.aliyun.com/repository/gradle-plugin") }
  8.         maven { setUrl("https://maven.aliyun.com/repository/public") }
  9.         maven { setUrl("https://jitpack.io") }
  10.         maven { setUrl("https://maven.aliyun.com/nexus/content/groups/public/") }
  11.         maven { setUrl("https://maven.aliyun.com/nexus/content/repositories/jcenter") }
  12.         maven { setUrl("http://maven.aliyun.com/nexus/content/repositories/releases")}
  13.         mavenCentral()
  14.         gradlePluginPortal()
  15.     }
  16. }
复制代码
颠末这些操纵后,完整的build.gradle如下:
  1. buildscript {    repositories {
  2.         google()
  3.         jcenter()
  4.         maven { setUrl("https://maven.aliyun.com/repository/central") }
  5.         maven { setUrl("https://maven.aliyun.com/repository/jcenter") }
  6.         maven { setUrl("https://maven.aliyun.com/repository/google") }
  7.         maven { setUrl("https://maven.aliyun.com/repository/gradle-plugin") }
  8.         maven { setUrl("https://maven.aliyun.com/repository/public") }
  9.         maven { setUrl("https://jitpack.io") }
  10.         maven { setUrl("https://maven.aliyun.com/nexus/content/groups/public/") }
  11.         maven { setUrl("https://maven.aliyun.com/nexus/content/repositories/jcenter") }
  12.         maven { setUrl("http://maven.aliyun.com/nexus/content/repositories/releases")}
  13.         mavenCentral()
  14.         gradlePluginPortal()
  15.     }
  16.     dependencies {        classpath 'com.android
  17. .tools.build:gradle:4.0.0'    }}apply plugin: 'android
  18. 'android
  19. {    compileSdkVersion 'android
  20. -29'    buildToolsVersion '29.0.3'    buildTypes {        release {            minifyEnabled false            proguardFile getDefaultProguardFile('proguard-android
  21. .txt')        }    }}allprojects {    repositories {
  22.         google()
  23.         jcenter()
  24.         maven { setUrl("https://maven.aliyun.com/repository/central") }
  25.         maven { setUrl("https://maven.aliyun.com/repository/jcenter") }
  26.         maven { setUrl("https://maven.aliyun.com/repository/google") }
  27.         maven { setUrl("https://maven.aliyun.com/repository/gradle-plugin") }
  28.         maven { setUrl("https://maven.aliyun.com/repository/public") }
  29.         maven { setUrl("https://jitpack.io") }
  30.         maven { setUrl("https://maven.aliyun.com/nexus/content/groups/public/") }
  31.         maven { setUrl("https://maven.aliyun.com/nexus/content/repositories/jcenter") }
  32.         maven { setUrl("http://maven.aliyun.com/nexus/content/repositories/releases")}
  33.         mavenCentral()
  34.         gradlePluginPortal()
  35.     }
  36. }
复制代码
接下来输入下令:
  1. ./gradlew build
复制代码
它将会输出两个apk文件,分别在build/outputs/apk/debug和build/outputs/apk/release内。debug版有Android的Debug署名,release则没有任何署名,因此无法安装,需要进行手动署名:
将apk拷出
  1. cp build/outputs/apk/release/android
  2. _demo-release-unsigned.apk .
复制代码
天生署名文件:
  1. keytool -genkey -v -keystore <文件名(*.keystore)> -alias <别名> -keyalg RSA -validity <有效天数>
复制代码
署名:
  1. jarsigner -verbose -keystore <签名文件>  -signedjar <签名后的文件名> <未签名的文件名> <别名>
复制代码
署名完毕,可正常安装。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

花瓣小跑

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表