首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android应用程序安装警告(为旧版本构建)

Android应用程序安装警告(为旧版本构建)
EN

Stack Overflow用户
提问于 2022-03-06 04:07:29
回答 1查看 978关注 0票数 2

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

代码语言:javascript
复制
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平台版本和Android30.0.0构建工具版本。

这是AndroidManifest.xml文件。

代码语言:javascript
复制
<?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平台和构建工具的版本?提前谢谢你的回答。

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

EN

回答 1

Stack Overflow用户

发布于 2022-06-16 15:04:52

我设法消除了错误

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

下面是我的构建脚本供参考:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71367603

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档