我知道我的源代码在 Eclipse 中编译得很好,但是为了更容易地一次又一次地使用相同的源代码进行生产,我选择设置一个 .bat 来为我处理大部分工作。好吧,简短而甜蜜,我的外部 jar 在编译时可用,但在运行时不可用,我收到强制关闭(Android ClassNotFoundDefError)。我确定问题出在我的命令是如何在我的 .bat 文件上设置的,并且在阅读了网站之后(我将列出我最后使用的一组参考资料)我来到了这段代码......
echo on
@REM %1 NOTUSED
@REM %2 SHORT NAME (DIR HIERARCHY POINTER)
@REM %3 SRCPATH (RECEIVES PACKAGE PATH)
@SET PREV_PATH=%CD%
@cd /d %0\..
@rmdir %2\bin /S /Q
@rmdir %2\gen /S /Q
@mkdir %2\bin || goto EXIT
@mkdir %2\gen || goto EXIT
@SET APP_NAME=%2
@SET ANDROID_REV=android-7
@SET ANDROID_AAPT_ADD="%ANDROID-SDK%\platform-tools\aapt.exe" add
@SET ANDROID_AAPT_PACK="%ANDROID-SDK%\platform-tools\aapt.exe" package -v -f -I "%ANDROID-SDK%\platforms\%ANDROID_REV%\android.jar" -j ".\usrsrc\libs\MobileSDK.jar" -j ".\usrsrc\libs\MobileSDK2.jar"
@SET ANDROID_DX="%ANDROID-SDK%\platform-tools\dx.bat" --dex
@SET JAVAC="%JAVABIN%\javac.exe" -classpath ".\%2;%ANDROID-SDK%\platforms\%ANDROID_REV%\android.jar;%2\libs\MobileSDK.jar;%2\libs\MobileSDK2.jar"
@SET JAVAC_BUILD=%JAVAC% -sourcepath "%2\src;%2\gen" -d "%2\bin" -jar "%2\libs\MobileSDK.jar;%2\libs\MobileSDK2.jar"
call %ANDROID_AAPT_PACK% -M "%2\AndroidManifest.xml" -A "%2\assets" -S "%2\res" -m -J "%2\gen" -F "%2\bin\resources.ap_" -j "%2\libs\MobileSDK.jar" -j "%2\libs\MobileSDK2.jar" || goto EXIT
call %JAVAC_BUILD% %2%3*.java || goto EXIT
call %ANDROID_DX% --output="%CD%\%2\bin\classes.dex" %CD%\%2\bin || goto EXIT
copy "%CD%\%2\bin\resources.ap_" "%CD%\%2\bin\%APP_NAME%.ap_" || goto EXIT
call %ANDROID_AAPT_ADD% "%CD%\%2\bin\%APP_NAME%.ap_" "%CD%\%2\bin\classes.dex" || goto EXIT
call "%JAVABIN%\jarsigner" -keystore "%CD%\keystore.keystore" -storepass "XXXXXXXXXX" - keypass "XXXXXXXX" -signedjar "%CD%\%2\%APP_NAME%.apk" "%CD%\%2\bin\%APP_NAME%.ap_" "XXXXXXXXX" || goto EXIT
del "%2\bin\%APP_NAME%.ap_"
:EXIT
cd "%PREV_PATH%"
ENDLOCAL
pause
exit /b %ERRORLEVEL%
现在我知道,每当有人向我展示答案是多么痛苦显而易见时,我都会感到非常愚蠢。但是我已经在这件事上坚持了大约 24 小时了,我再也受不了了。我将不胜感激任何帮助。
仅供参考:输入这个 bat 的大多数变量都是从另一个程序输入的,该程序在我们进入 .bat 之前设置文件层次结构和其他所有内容。这就是我能真正描述的关于这个问题的全部内容。
参考:
http ://www.herongyang.com/Android/Project-aapt-Android-Asset-Packaging-Tool.html
http://www.apriorit.com/our-company/dev-blog/233-how-to -build-apk-file-from-command-line
以及有关外部 jar 堆栈溢出的所有问题;还有一些;我目前找不到会像我一样更新。