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



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

aapt package -f -m -J buildgen -S res -M AndroidManifest.xml -I "%ANDROID_HOME%platformsandroid-30android.jar"
javac -source 1.7 -target 1.7 -bootclasspath "%JAVA_HOME%jrelibrt.jar" -classpath "%ANDROID_HOME%platformsandroid-30android.jar" -d buildobj buildgennethanshqhelloR.java srcnethanshqhelloMainActivity.java
java -jar "%ANDROID_HOME%build-tools30.0.0libdx.jar" --dex --output=buildapkclasses.dex buildobj
aapt package -f -M AndroidManifest.xml -S res -I "%ANDROID_HOME%platformsandroid-30android.jar" -F buildHello.unsigned.apk buildapk
zipalign -f -p 4 buildHello.unsigned.apk buildHello.aligned.apk
call apksigner sign --ks debug.keystore --ks-key-alias androiddebugkey --ks-pass pass:android --key-pass pass:android --out buildHello.apk buildHello.aligned.apk
adb install -r buildHello.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 OS

我设法通过消除了错误

  1. 指定21的最小sdk版本、targetSdkVersion和maxSdkVersion
  2. 在javac命令中将源jdk版本从1.7更改为11
  3. 在buildtoolsversion32中使用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 'androidn' | apksigner sign --min-sdk-version 29 
--v4-signing-enabled true 
-ks ~/code/android/debug.keystore $target
adb install --no-incremental -r $target

最新更新