【问题标题】:Android application install warning (built for older version)Android 应用程序安装警告(为旧版本构建)
【发布时间】:2022-06-16 23:04:52
【问题描述】:

我跟随this tutorial 从命令行构建Android 应用程序。这是我使用 USB 调试在我的设备上构建和安装应用程序的批处理脚本。

aapt package -f -m -J build\gen\ -S res -M AndroidManifest.xml -I "%ANDROID_HOME%\platforms\android-30\android.jar"

javac -source 1.7 -target 1.7 -bootclasspath "%JAVA_HOME%\jre\lib\rt.jar" -classpath "%ANDROID_HOME%\platforms\android-30\android.jar" -d build\obj build\gen\net\hanshq\hello\R.java src\net\hanshq\hello\MainActivity.java

java -jar "%ANDROID_HOME%\build-tools\30.0.0\lib\dx.jar" --dex --output=build\apk\classes.dex build\obj

aapt package -f -M AndroidManifest.xml -S res\ -I "%ANDROID_HOME%\platforms\android-30\android.jar" -F build\Hello.unsigned.apk build\apk

zipalign -f -p 4 build\Hello.unsigned.apk build\Hello.aligned.apk

call apksigner sign --ks debug.keystore --ks-key-alias androiddebugkey --ks-pass pass:android --key-pass pass:android --out build\Hello.apk build\Hello.aligned.apk

adb install -r build\Hello.apk

adb shell am start -n net.hanshq.hello/.MainActivity

我使用 OpenJDK-17、Android-30 平台版本和 Android 30.0.0 构建工具版本。

这是 AndroidManifest.xml 文件。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="net.hanshq.hello"
          versionCode="1"
          versionName="0.1">
    <uses-sdk android:minSdkVersion="30"/>
    <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>

我想问的是,当我将 minSdkVersion 设置为 30 时,它在我的设备上安装得很好。但是,当我将它设置为像 21 这样的较低值时,它仍然安装正确,但会输出这样的警告弹出窗口。

此应用是为旧版 Android 构建的,可能无法正常运行。尝试检查更新,或联系开发者。

我想问的是这个警告与minSdkVersion的值有关还是因为我使用的Android SDK平台和构建工具的版本?提前感谢您的回答。

编辑: 我的设备运行的是 Android 11 操作系统

【问题讨论】:

    标签: java android windows command-line sdk


    【解决方案1】:

    我设法摆脱了错误

    1. 指定 21 的最小 sdk 版本、targetSdkVersion 和 maxSdkVersion
    2. 在 javac 命令中将源 jdk 版本从 1.7 更改为 11
    3. 在构建工具版本 32 中使用 d8 将类文件更改为 dex 文件

    这是我的构建脚本供参考:

    target=$1
    
    if  [ "$1" = "" ]; then
        target="a.apk"
    fi
    
    
    
    aapt package -f -v \
        -I ~/android-sdk/platforms/android-32/android.jar \
        -J src -m \
        -M AndroidManifest.xml \
        -S res \
        -F bin/resources.ap_
    
    javac \
        -classpath ~/android-sdk/platforms/android-32/android.jar \
      -source 11 -target 11 \
        src/dom/domain/*.java
    
    d8 --output bin src/*/*/*.class \
      --lib ~/android-sdk/platforms/android-32/android.jar 
    
    cd bin
    
    mv resources.ap_    $target
    
    aapt add    $target classes.dex
    
    printf 'android\n' | apksigner sign --min-sdk-version 29 \
      --v4-signing-enabled true \
      -ks ~/code/android/debug.keystore $target
    
    adb install --no-incremental -r $target
    
    
    

    【讨论】:

      猜你喜欢
      • 2018-06-11
      • 1970-01-01
      • 2014-06-03
      • 2017-12-27
      • 2012-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多