当前位置: 首页 > 编程笔记 >

没有IDE的Android编程

公孙令秋
2023-03-14
本文向大家介绍没有IDE的Android编程,包括了没有IDE的Android编程的使用技巧和注意事项,需要的朋友参考一下

示例

这是一个简约的Hello World示例,仅使用最基本的Android工具。

要求和假设

  • Oracle JDK 1.7或更高版本

  • Android SDK工具(仅命令行工具)

本示例假设使用Linux。您可能必须针对自己的平台调整语法。

设置Android SDK

解压缩SDK版本后:

  1. 使用SDK管理器安装其他软件包。不要android update sdk --no-ui按照捆绑的Readme.txt中的说明使用;它会下载约30 GB的不必要文件。而是使用交互式SDK管理器android sdk来获取建议的最少软件包。

  2. 将以下JDK和SDK目录添加到您的执行PATH。这是可选的,但是下面的说明假定了它。

    • JDK /箱

    • SDK /平台工具

    • SDK /工具

    • SDK / build-tools / LATEST (在步骤1中安装)

  3. 创建一个Android虚拟设备。使用交互式AVD管理器(android avd)。您可能需要摆弄一些东西并寻求建议。现场说明并不总是有用。

    (您也可以使用自己的设备)

  4. 运行设备:

    emulator -avd DEVICE
  5. 如果设备屏幕似乎被锁定,请滑动以将其解锁。

    在编写应用程序代码时,使其保持运行状态。

编写应用程式

    list-paddingleft-2">
  1. 转到一个空的工作目录。

  2. 制作源文件:

    mkdir --parents src/dom/domain
    touch src/dom/domain/SayingHello.java

    内容:

    package dom.domain;
    import android.widget.TextView;
    public final class SayingHello extends android.app.Activity
    {
       protected @Override void onCreate( final android.os.Bundle activityState )
       {
           super.onCreate( activityState );
           final TextView textV = new TextView(SayingHello.this);
           textV.setText( "Hello world" );
           setContentView( textV );
       }
    }
  3. 添加清单:

    touch AndroidManifest.xml

    内容:

    <?xml version='1.0'?>
    <manifest xmlns:a='http://schemas.android.com/apk/res/android'
    package='dom.domain' a:versionCode='0' a:versionName='0'>
       <application a:label='Saying hello'>
           <activity a:name='dom.domain.SayingHello'>
                <intent-filter>
                   <category a:name='android.intent.category.LAUNCHER'/>
                   <action a:name='android.intent.action.MAIN'/>
                   </intent-filter>
               </activity>
           </application>
       </manifest>
  4. 为声明的资源创建一个子目录:

    mkdir res

    现在将其留空。

构建代码

  1. 生成资源声明的源。在此处替换您的SDK的正确路径,以及要针对其构建的已安装API(例如“ android-23”):

    aapt package -f \
     -I SDK/platforms/android-API/android.jar \
     -J src -m \
     -MAndroidManifest.xml-S res -v

    资源声明(下面将进一步描述)实际上是可选的。同时,如果res /仍然为空,则上述调用不执行任何操作。

  2. 将源代码编译为Java字节码(.java→.class):

    javac \
     -bootclasspath SDK/platforms/android-API/android.jar \
     -classpath src -source 1.7 -target 1.7 \
     src/dom/domain/*.java
  3. 将字节码从Java转换为Android(.class→.dex):

    首先使用Jill(.class→.jayce):

    java -jar SDK/build-tools/LATEST/jill.jar \
     --outputclasses.jaycesrc

    然后杰克(.jayce→.dex):

    java -jar SDK/build-tools/LATEST/jack.jar \
     --importclasses.jayce--output-dex .

    Android字节码曾经被称为“ Dalvik可执行代码”,因此被称为“ dex”。

    如果愿意,您可以只打一个电话就可以替换步骤11和12。它可以直接从Java源代码(.java→.dex)进行编译。但是使用进行编译有很多好处javac。这是一个更广为人知,文档更丰富,适用范围更广的工具。

  4. 打包资源文件,包括清单:

    aapt package -f \
     -Fapp.apkPart\
     -I SDK/platforms/android-API/android.jar \
     -MAndroidManifest.xml-S res -v

    这样会产生部分APK文件(Android应用程序包)。

  5. 使用以下ApkBuilder工具制作完整的APK :

    java -classpath SDK/tools/lib/sdklib.jar \
     com.android.sdklib.build.ApkBuilderMain \
    app.apkUnalign\
     -d -fclasses.dex-v -z app.apkPart

    它警告:“此工具已弃用。有关更多信息,请参见--help。” 如果使用--help失败ArrayIndexOutOfBoundsException,则不传递任何参数:

    java -classpath SDK/tools/lib/sdklib.jar \
     com.android.sdklib.build.ApkBuilderMain

    它说明了ApkBuilderMain不建议使用CLI(),而是直接调用Java API(ApkBuilder)。(如果您知道如何从命令行执行此操作,请更新此示例。)

  6. 优化APK的数据对齐方式(建议做法):

    zipalign -f -v 4app.apkUnalignapp.apk

安装和运行

  1. 将应用安装到Android设备:

    adb install -r app.apk
  2. 启动应用程序:

    adb shell am start -n dom.domain/.SayingHello

    它应该运行并打个招呼。

就这样。这就是使用基本的Android工具打招呼所需要的。

声明资源

本部分是可选的。简单的“ hello world”应用程序不需要资源声明。如果您的应用程序也不需要它们,那么您可以通过省略步骤10并从步骤13中删除对res /目录的引用来简化构建。

否则,这是有关如何声明资源以及如何引用资源的简短示例。

  1. 添加资源文件:

    mkdir res/values
    touch res/values/values.xml

    内容:

    <?xml version='1.0'?>
    <resources>
       <string name='appLabel'>Saying hello</string>
    </resources>
  2. 从XML清单中引用资源。这是一种声明式的引用方式:

    <!-- <application a:label='Saying hello'> -->
        <application a:label='@string/appLabel'>
  3. 从Java源引用相同的资源。这是必须的参考:

    // v.setText( "Hello world" );
      v.setText( "这个程序叫做 "
        + getResources().getString( R.string.appLabel ));
  4. 通过重建,重新安装和重新运行该应用程序来测试上述修改(步骤10-17)。

    它应该重新启动并说:“此应用程序称为“打招呼”。

卸载应用

adb uninstall dom.domain

也可以看看

  • 原始问题-提示此示例的原始问题

  • 工作示例-使用上述命令的有效构建脚本

 类似资料:
  • 我已经安装了Android SDK最新版本和Eclipse。但我也想试试Android Studio。 我看过这篇文章和这篇文章,但这些解决方案改变了SDK Android Studio实例(一旦下载并安装)的使用。我想要的是,当我的机器上已经安装了另一个SDK时,不要下载它。 问题是这里给出的下载包也包括SDK。 那么,我是否可以在没有SDK的情况下下载Android Studio IDE,然后

  • 我已经安装了Android SDK最新版本和Eclipse。但我也想试试Android Studio。 我看过这个和这个帖子,但是那些解决方案改变了Android Studio(一旦下载并安装)使用的SDK实例。我想要的不是下载另一个SDK,当我已经在我的机器上安装了它。

  • 我使用IntelliJ进行java开发。我想在我只有shell访问权限的另一台主机上运行我的应用程序。 当我在本地运行应用程序时,一切都很好。当我尝试在远程主机上编译代码时,我得到: 文件位于同一目录中: 我也不能在本地编译,除非它来自IDE,所以我假设我只是没有做正确的事情。我错过了什么?我只想能够从shell运行我的应用程序,我真的不在乎如何运行。

  • 问题内容: 在几乎所有我使用过的语言(Python,C,C ++等)中,都可以 仅 使用文本编辑器编写“ hello world”应用程序,然后从命令行(解释语言)运行它,或者进行编译/构建它是从命令行(编译语言),例如。 另一方面,每次执行Android应用程序时,都需要使用Android Studio(这在我的计算机上运行缓慢),使用IDE创建新项目等。 问题: 生成.apk Android应

  • 我试过这里写的所有东西。 重启 设置根文件夹 检查电源安全 但是没有解决 我的屏幕不显示任何颜色。一切都是白色和黑色的。控制空间不起作用,并且没有代码完成。

  • 问题内容: 我一直在尝试创建一个新项目以使用UCanAccess读取MS Access文件。我一直在关注@Gord Thompson的信息以及github中的UCanAccess示例文件。除了我使用不同名称的事实外,每件事都是相同的。我不使用任何GUI IDE。我只是从命令行进行编译,基本上,我编写了一个执行命令行编译的Java程序。 参考文献: 在不使用ODBC的情况下从Java操作Access