用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開發(一)安卓APP
- 安卓開發之 App Widget安卓APP
- 安卓APP開發日記1——名為Another的日記APP開發安卓APP
- 安卓APP開發優勢和概述安卓APP
- 使用uniapp開發APP時的除錯/安卓打包等APP除錯安卓
- 安卓app開發-01-開發工具及環境配置安卓APP
- 師生互動的瞬間
- 在安卓開發中開始應用NFC安卓
- APP定製開發時間APP
- 開發更安全的安卓應用要注意哪些?安卓
- 十大開源安卓應用程式的開發框架安卓框架
- MIT App Inventor安卓圖形化開發入門MITAPP安卓
- 用Python簡化安卓開發系列Python安卓
- 《瞬間之美》筆記筆記
- 20 張圖揭開「記憶體管理」的迷霧,瞬間豁然開朗記憶體
- APP開發費用明細介紹,花最少的錢開發APPAPP
- appium 安卓應用指令碼APP安卓指令碼
- .NET MAUI 安卓應用開發初體驗UI安卓
- RxJava在安卓開發中應用原始碼RxJava安卓原始碼
- 用uni-app開發app應用登陸APP
- 前端開發基礎紮實的標準是什麼?搞懂這些學習速度瞬間開掛前端
- 用 Tesseract 開發一個你自己的文字識別應用
- 快影app怎麼旋轉影片?快影影片瞬間旋轉的方法教程APP
- 安卓開發的小技巧(2)安卓
- 安卓開發的小技巧(1)安卓
- 安卓開發的小技巧(3)安卓
- 安卓開發小組的反思安卓
- Lazarus使用IPC收發訊息
- 用C++從0開始開發自己的程式語言C++
- 資料分析彙報用這個神器,瞬間棄用Excel和PPTExcel
- 安卓應用修改系統時間安卓
- 國行Apple Watch瘋狂甩賣 瞬間哄搶一空APP
- 程式設計師的幾個搞笑瞬間!!!程式設計師
- Windows App 應用開發教程WindowsAPP
- 我就想問,什麼時候出 安卓,IOS 的電商APP開發教程!!安卓iOSAPP
- [編譯] 7、在Linux下搭建安卓APP的開發燒寫環境(makefile版-gradle版)—— 在Linux上用命令列+VIM開發安卓APP編譯Linux安卓APPGradle命令列