用lazarus瞬間開發自己的安卓APP
* 2015.2.12 可以在java1.7環境執行了。(修改了簽名命令 jarsigner 的引數)
下面記錄一下過程。
1、需要的軟體:
adt-bundle-windows-x86-20130917.467161976.rar
android-ndk-r10c-windows-x86.exe
laz4android1.3-46592-FPC2.7.1.exe
(打包成一個了 http://pan.baidu.com/s/1gdF1ENp )
adt-bundle-windows-x86-20130917中的jdk-7u45-windows-i586.1454527248.exe要安裝一下。
壓縮包中的jdk-6u39-windows-i586.exe用不到了。
最核心的東西是laz4android1.3-46592-FPC2.7.1.exe,安裝一下。
2、各軟體安裝位置:
開始時因為安裝位置與後面批處理檔案內容不匹配,導致出現不少問題。
java:
C:\Java\jdk1.7.0_45
android-ndk-r10c 、android-sdk、laz4android 都放在D:\
3、執行laz4android 後,開啟例子,修改配置 Project -> Project Options -> Path->
Libraries,修改其中的兩個路徑。儲存配置。
4、直接ctrl+F9編譯成功。
可以看到編譯成的so檔案:
D:\laz4android\examples\androidlcl\android\libs\armeabi\liblclapp.so
5、修改並執行兩個批處理檔案。
第一個:D:\laz4android\examples\androidlcl\android\generate_debug_key.bat(這個用來生成簽名檔案)
我把它的內容弄成這樣:
REM Adjust these paths to yours
SET PATH=D:\android-sdk\tools;D:\android-sdk\platform-tools\;D:\android-sdk\build-tools\android-4.3\;C:\Java\jdk1.6.0_39\bin\;C:\Java\jre6\bin\
SET APP_NAME=androidlcltest
SET ANDROID_HOME=D:\android-sdk
SET APK_SDK_PLATFORM=D:\android-sdk\platforms\android-8
SET APK_PROJECT_PATH=D:\laz4android\examples\androidlcl\android
mkdir bin
keytool --help
keytool -genkey -v -keystore bin\LCLDebugKey.keystore -alias LCLDebugKey -keyalg RSA -validity 10000
REM call and pause together allow us to see the results in the end
pause
第一個執行,按要求輸入各種姓名省份等,密碼用123456,如果用其他密碼,下面的批處理中123456處也要做出修改。
其中一步:正確嗎? [否: 輸入Y然後回車。
第二個:D:\laz4android\examples\androidlcl\android\build_debug_apk.bat(這個用來生成簽名後的apk檔案)
REM Adjust these paths to yours
rem SET PATH=D:\android-sdk\tools;D:\android-sdk\platform-tools\;D:\android-sdk\build-tools\android-4.3\;C:\Java\jdk1.6.0_39\bin\;C:\Java\jre6\bin\
SET PATH=D:\android-sdk\tools;D:\android-sdk\platform-tools\;D:\android-sdk\build-tools\android-4.3\;C:\Java\jdk1.7.0_45\bin\;C:\Java\jdk1.7.0_45\jre\bin\;
SET APP_NAME=androidlcltest
SET ANDROID_HOME=D:\android-sdk
SET APK_SDK_PLATFORM=D:\android-sdk\platforms\android-8
SET APK_PROJECT_PATH=D:\laz4android\examples\androidlcl\android
REM Create necessary directory Structure
mkdir bin
mkdir bin\classes
mkdir gen
mkdir gen\com
mkdir gen\com\pascal
mkdir gen\com\pascal\lcltest
mkdir raw
mkdir raw\lib
mkdir raw\lib\armeabi
REM Cleanup
del bin\%APP_NAME%.ap_
del bin\%APP_NAME%.apk
del raw\lib\armeabi\*.so
REM More directory preparation
copy libs\armeabi\*.so raw\lib\armeabi\
REM Resource compilation
call aapt p -v -f -M
AndroidManifest.xml -F bin\%APP_NAME%.ap_ -I %APK_SDK_PLATFORM%\android.jar -S res -m -J gen raw
REM Java compiler
call javac -source 1.6 -target 1.6 -verbose -encoding UTF8 -classpath %APK_SDK_PLATFORM%\android.jar -d bin\classes src\com\pascal\lcltest\LCLActivity.java
REM Convert the java bytecode to dalvik bytecode
call java -Djava.ext.dirs=%ANDROID_HOME%\platform-tools\lib\ -jar %ANDROID_HOME%\platform-tools\lib\dx.jar --dex --verbose --output=%APK_PROJECT_PATH%\bin\classes.dex %APK_PROJECT_PATH%\bin\classes
REM It seams that dx calls echo off
@echo on
REM Now build the unsigned APK 建立一個未簽名的apk
del %APK_PROJECT_PATH%\bin\%APP_NAME%-unsigned.apk
call java -classpath %ANDROID_HOME%\tools\lib\sdklib.jar com.android.sdklib.build.ApkBuilderMain %APK_PROJECT_PATH%\bin\%APP_NAME%-unsigned.apk -v -u -z %APK_PROJECT_PATH%\bin\%APP_NAME%.ap_ -f %APK_PROJECT_PATH%\bin\classes.dex
REM Signing the APK with a debug key 簽名部分
del bin\%APP_NAME%-unaligned.apk
rem jarsigner -verbose -keystore bin\LCLDebugKey.keystore -keypass 123456 -storepass 123456 -signedjar bin\%APP_NAME%-unaligned.apk bin\%APP_NAME%-unsigned.apk LCLDebugKey
jarsigner -verbose -sigalg MD5withRSA -digestalg SHA1 -keystore bin\LCLDebugKey.keystore -keypass 123456 -storepass 123456 -signedjar bin\%APP_NAME%-unaligned.apk bin\%APP_NAME%-unsigned.apk LCLDebugKey
REM Align the final APK package
zipalign -v 4 bin\%APP_NAME%-unaligned.apk bin\%APP_NAME%.apk
REM call and pause together allow us to see the results in the end
pause
6、執行上面兩個批處理後,可以看到,在目錄 D:\laz4android\examples\androidlcl\android\bin 中生成了以下內容:
然後安裝androidlcltest.apk到安卓裝置即可。
7、期間的錯誤處理:
* 執行 build_debug_apk.bat 出錯:
D:\laz4android\examples\androidlcl\android>jarsigner -verbose -keystore bin\LCLD
ebugKey.keystore -keypass 123456 -storepass 123456 -signedjar bin\androidlcltest
-unaligned.apk bin\androidlcltest-unsigned.apk LCLDebugKey
jarsigner: 找不到 LCLDebugKey 的證照鏈。LCLDebugKey 必須引用包含專用金鑰和相應
的公共金鑰證照鏈的有效金鑰庫金鑰條目。
解決:原來我修改過 generate_debug_key.bat,把LCLDebugKey.keystore -alias LCLDebugKey 改成 LCLDebugKey.keystore -alias LCLDebugKey.keystore了,導致了上面的錯誤。
---------------------------------------------------
* androidlcltest.apk在安卓上安裝時,提示:程式未能安裝。
原因:簽名錯誤。java1.7改成1.6後解決。不過現在已經可以用1.7了。
aaa
相關文章
- 自學安卓app開發(一)安卓APP
- 安卓APP開發日記1——名為Another的日記APP開發安卓APP
- 安卓app開發-01-開發工具及環境配置安卓APP
- 使用uniapp開發APP時的除錯/安卓打包等APP除錯安卓
- MIT App Inventor安卓圖形化開發入門MITAPP安卓
- Python可以開發IOS或安卓APP嗎?Python入門!PythoniOS安卓APP
- 安卓開發小組的反思安卓
- Kotlin 初體驗(引) 用kotlin開發安卓Kotlin安卓
- .NET MAUI 安卓應用開發初體驗UI安卓
- 安卓開發--AIDL研究安卓AI
- 安卓開發框架系列開篇安卓框架
- 安卓快速關機APP安卓APP
- 安卓開發:安卓底部選單欄的實現,RadioGroup 和Fragment安卓Fragment
- [編譯] 7、在Linux下搭建安卓APP的開發燒寫環境(makefile版-gradle版)—— 在Linux上用命令列+VIM開發安卓APP編譯Linux安卓APPGradle命令列
- 安卓開發日記4安卓
- go語言安卓開發Go安卓
- 安卓開發日記28安卓
- 安卓開發日記27安卓
- 安卓開發日記14安卓
- 安卓開發日記13安卓
- 安卓開發日記12安卓
- 安卓開發日記17安卓
- 安卓開發日記16安卓
- 安卓開發日記15安卓
- 安卓開發日記26安卓
- 安卓開發日記25安卓
- 安卓開發日記24安卓
- 安卓開發日記19安卓
- 安卓開發日記18安卓
- 安卓開發日記57安卓
- 安卓開發日記56安卓
- 安卓開發日記55安卓
- 安卓開發日記46安卓
- 安卓開發日記45安卓
- 安卓開發日記47安卓
- 我就想問,什麼時候出 安卓,IOS 的電商APP開發教程!!安卓iOSAPP
- 關於安卓app的webview設定本地代理以及webview開發環境的搭建安卓APPWebView開發環境
- 安卓開發第一步:安卓面試題安卓面試題
- 安卓APP承載網頁(WebView)- 用例程解析到位安卓APP網頁WebView