如何在32位Linux上开发Android

时间:2017-04-09 21:33:24

标签: android linux cordova android-studio android-gradle

问题的标题是我能给予的最好的,这正是我想要做的:在32位Linux上开发Android应用程序(特别是32位Ubuntu,运行适度的最新内核4.4.0- 66-generic; 3G RAM)。

到目前为止我学到了什么:

  1. Android SDK自从> 23起停止支持32位Linux操作系统上的dev 向上
  2. 对于Android Studio,我无法绕过appcompat以便我可以构建更低版本的android(例如版本19),因为面对没有选项/指令/清除指令,我改变了{{1} } com.android.support:appcompat-v7:25所以当我收到错误com.android.support:appcompat-v7:19
  3. 时,我并不感到惊讶
  4. 在那个阶段,Android Studio中弹出一条通知,我不需要appcompat for sdk version> 19和构建工具< 21(或类似的东西)然后我删除了appcomat could not resolve com.android.support:appcompat-v7:19然后下一个错误是com.android.support:appcompat-v7:19

  5. 我尝试使用谷歌搜索任何专门针对在32位Linux上开发Android应用程序的指令/流程指南,但找到 none

  6. 我尝试过Cordova,但仍坚持使用Gradle版本(可能仍然是因为上面的问题:android-sdk不支持 32位Linux上的开发 )自Cordova仍然取决于android-sdk
  7. 从我的google游荡中我偶然发现了Cordova,我喜欢它(也许是因为它是基于CLI的,我可以看到/控制一切,它甚至有一个 - verbose 选项显示所有正在发生的事情)但是在阅读了几篇其他文章之后我拼凑起来在我的32位Linux上构建它,我仍然陷入构建阶段,因为当构建过程达到gradle阶段时,它固执地坚持使用构建工具25.0.2,以及我拼凑的关于如何设置构建工具版本的所有文章,我无法用任何方式说服gradle使用我已经构建的构建工具19已完全安装(使用Android SDK Manager)。为了让gradle为我工作,我尝试在config.xml中设置failed to resolve com.android.support:design:19,甚至在<preference name="android-targetSdkVersion" value="19"/>中设置cdvBuildToolsVersion=19但是在Cordova所有这些努力中我获得了奖励:

      

    任务执行失败&#39;:preBuild&#39;。   找不到Build Tools修订版19.0.0

    建立失败

    我只想在32位Ubuntu操作系统上设置一个简单,正常,有效的Android开发环境!

    方向/指南/提示/帮助请!

    btw,请不要建议迁移到64位Linux ...至少现在不行

2 个答案:

答案 0 :(得分:4)

关于64位的this精彩教程,我设法让它在32位Ubuntu Linux上100%运行,在旧的Celeron PC上运行。我创建了hellow orld应用程序,并在我的Samsung A5上运行它。整个过程大约需要3到4个小时,因为我必须找出32位的东西。

版本号已过时,但很重要,因为当前版本不支持64位。

  1. sudo apt-get install gradle
  2. 安装oracle 8

    sudo add-apt-repository ppa:webupd8team / java     sudo apt update; sudo apt install oracle-java8-installer     javac -version(确认版本)     sudo apt install oracle-java8-set-default

    (将此java版本设置为默认值)

    导出JAVA_HOME = / usr / lib / jvm / java-8-openjdk-i386 export PATH = $ {JAVA_HOME} / bin:$ PATH

  3. 安装adndroid SDK

  4.   curl -O https://dl.google.com/android/android-sdk_r21.0.1-linux.tgz
      tar zxf android-sdk_r21.0.1-linux.tgz
      curl -O https://dl.google.com/android/repository/build-tools_r21-linux.zip
      unzip build-tools_r21-linux.zip
      mkdir android-sdk-linux/build-tools
      mv android-5.0 android-sdk-linux/build-tools/21.0.1
      curl -O https://dl.google.com/android/repository/android-16_r05.zip
      unzip android-16_r05.zip
      mv android-4.1.2 android-sdk-linux/platforms/android-16
      curl -O https://dl.google.com/android/repository/platform-tools_r21-linux.zip
      unzip platform-tools_r21-linux.zip -d android-sdk-linux/
    
    1. 撰写“Hello World”应用文件夹
    2. cd ~
      mkdir android
      cd android
      mkdir helloworld
      cd helloworld
      
      1. 创建“AndroidManifest.xml”如下:
      2. <?xml version="1.0" encoding="utf-8"?>
              <manifest xmlns:android="http://schemas.android.com/apk/res/android"
                    package="net.gavin.hello"
                      versionCode="1"
                      versionName="0.1">
              <uses-sdk android:minSdkVersion="16"/>
              <application android:label="Hello">
                  <activity android:name=".MainActivity">
                      <intent-filter>
                          <action android:name="android.intent.action.MAIN"/>
                          <category android:name="android.intent.category.LAUNCHER"/>
                      </intent-filter>
                  </activity>
              </application>
          </manifest>
        
        1. 创建文件夹“res / layout /”
        2. cd ~/android/helloworld
                mkdir res
                cd res
                mkdir layout
                cd layout
          
          1. 创建“activity_main.xml”,如下所示
          2. <?xml version="1.0" encoding="utf-8"?>        <LinearLayout
                      xmlns:android="http://schemas.android.com/apk/res/android"
                      android:layout_width="match_parent"
                      android:layout_height="match_parent"
                      android:gravity="center"
                      android:orientation="vertical">
                      <TextView
                          android:layout_width="wrap_content"
                          android:layout_height="wrap_content"
                          android:id="@+id/my_text"/>         </LinearLayout>
            
            1. 的java /净/加文/你好/
            2. cd ~ 
              mkdir java
              cd java
              mkdir net
              cd net
              mkdir gavin
              cd gavin
              mkdir hello
              

              9.按如下方式创建“MainActivity.java”

              package net.gavin.hello;
                      import android.app.Activity;
                      import android.os.Bundle;
                      import android.widget.TextView;
                      public class MainActivity extends Activity
                      {
                          @Override
                          protected void onCreate(Bundle savedInstanceState)
                          {
                              super.onCreate(savedInstanceState);
                              setContentView(R.layout.activity_main);
                              TextView text = (TextView)findViewById(R.id.my_text);
                              text.setText("Hello, world!");
                          }
                      }
              
              1. 创建构建环境

                cd~     SDK = “$ {HOME} / Android的SDK-LINUX”     BUILD_TOOLS = “$ {} SDK /build-tools/21.0.1”     PLATFORM = “$ {} SDK /平台/ Android的16”     mkdir -p build / gen build / obj build / apk

              2. 创建R.java(build / gen / net / gavin / hello / R.java)

              3. “$ {BUILD_TOOLS} / aapt”package -f -m -J build / gen / -S res -M AndroidManifest.xml -I“$ {PLATFORM} /android.jar”

                1. 编译

                  javac -source 1.7 -target 1.7 -bootclasspath“$ {JAVA_HOME} /jre/lib/rt.jar”\     -classpath“$ {PLATFORM} /android.jar”-d build / obj \     build / gen / net / gavin / hello / R.java java / net / gavin / hello / MainActivity.java

                2. 转换为Dalvik代码

                  “$ {BUILD_TOOLS} / dx” - index --output = build / apk / classes.dex build / obj /

                3. 将内容组合在一起

                  “$ {BUILD_TOOLS} / aapt”包-f -M AndroidManifest.xml -S res / \         -I“$ {PLATFORM} /android.jar”\         -F build / Hello.unsigned.apk build / apk /

                4. 与4字节边界对齐 "${BUILD_TOOLS}/zipalign" -f 4 build/Hello.unsigned.apk build/Hello.aligned.apk

                5. 创建密钥库和密钥 keytool -genkeypair -keystore keystore.jks -alias androidkey \ -validity 10000 -keyalg RSA -keysize 2048 \ -storepass android -keypass android
                6. 安装ket签名者(apksigner) sudo apt-get install apksigner
                7. 使用密钥签署应用程序 "apksigner" sign --ks keystore.jks \ --ks-key-alias androidkey --ks-pass pass:android \ --key-pass pass:android --out build/Hello.apk \ build/Hello.aligned.apk
                8. 安装到设备 "${SDK}/platform-tools/adb" install -r build/Hello.apk
                9. 在设备上运行 "${SDK}/platform-tools/adb" shell am start -n net.gavin.hello/.MainActivity
                10. 庆祝着名,因为忙碌。
                11. 注意:19和20假设您已将手机设置为开发人员模式,并且已通过USB连接到PC。在这种情况下,我只是将它ftp到我的手机,并从那里安装。没问题。

答案 1 :(得分:0)

我终于提出了一个相当简单的方法:在虚拟机中运行Windows!

虽然Google放弃了对32位Linux的支持,但它仍然支持32位Windows。

所以我所做的就是在我的32位Linux机器上安装32位Windows,然后运行Android Studio - 安装所有先决条件,如Android SDK等。从这一点开始,我只是将注意力转移到寻找面向Windows的指南中的支持/指南。简单,酷,简单!