怎样为MeeGo应用程序整合AppUp SDK并构建RPM包

原作者:bydmitry-rizshkov (米9网翻译,转载请注明出处) 

您或许更愿意看原文。 

本文将演示如何准备您的MeeGo应用程序,并通过Intel AppUp Center审核。本文项目案例来自我的另一篇文章Modern mobile applications with Qt and QML,将对代码不做任何变更。感谢Qt,使我们的Windows程序无需做任何变动,即可在meego上运行,所需的只是重新编译一次。 

整合AppUp SDK 

启动随MeeGo SDK一起安装的Qt Creator。如果你没有安装MeeGo SDK在这里下载。在这个页面你可以找到任何你需要的MeeGo应用程序开发工具。打开项目,打开项目文件(4Tooddler.pro)并添加以下几行代码: 


引用

  1. # Add path to AppUp SDK headers directory
  2. INCLUDEPATH += "$(IADP_SDK_DIR_MEEGO)Cpp/include"
  3. # Add required libraries
  4. LIBS += -lxml2 -lpthread
  5. LIBS += "$(IADP_SDK_DIR_MEEGO)Cpp/lib/libadpruntime.a" / "$(IADP_SDK_DIR_MEEGO)Cpp/lib/libadpcore.a" / "$(IADP_SDK_DIR_MEEGO)Cpp/lib/libxerces-c.a" / "$(IADP_SDK_DIR_MEEGO)Cpp/lib/libxml-security-c.a" / "$(IADP_SDK_DIR_MEEGO)Cpp/lib/libcrypto.a"


下一步,打开main.cpp文件。加入AppUp SDK头文件。 



  1. #include "adpcppf.h"


并添加新函数: 
引用
  1. bool IsAuthorized()
  2. {
  3. #ifdef QT_DEBUG // Do not check authorization for debug version
  4. return true;
  5. #endif
  6. bool authorized = false;
  7. QString message;
  8. com::intel::adp::Application *pApp = NULL;
  9. try
  10. {
  11. pApp = new Application(ADP_DEBUG_APPLICATIONID);
  12. // Authorized successfully
  13. authorized = true;
  14. }
  15. catch (com::intel::adp::AdpException& e)
  16. {
  17. // Got some error
  18. message = QString::fromAscii(e.message());
  19. }
  20. if(pApp != NULL)
  21. {
  22. delete pApp;
  23. }
  24. if(authorized == false)
  25. {
  26. QMessageBox msgBox(QMessageBox::Information, "4 Toddler", message, QMessageBox::Ok); msgBox.exec();
  27. }
  28. return authorized;
  29. }


main() 调用此函数: 

引用
  1. if(IsAuthorized() == false) { // Quit application a.quit(); return 0; }


制作RPM包 
把应用程序安装并运行在meego上我们需要构建RPM包。RPM包是一些二进制文件、图标、库文件以及程序信息的集合,你可以在www.rpm.org找到更多关于RPM包的相关信息。 

AppUp对于制作RPM包有一些具体的要求,在这里有详细的描述(MeeGo Packaging and Compliance Guidelines) 
首先我们需要制作一些PNG格式的图标,尺寸为:16x16, 32x32, 64x64, 和 128x128。 

然后为我们的程序制作 .desktop 文件。这个文件包含着应用程序的分类、图标、二进制文件路径的信息。创建一个新的名为 4Toddler.desktop 的文件。 

引用
  1. [Desktop Entry]
  2. Name=4 Toddler
  3. GenericName=4 Toddler
  4. Comment=4 Toddler
  5. application Exec=/opt/com.company.4toddler/4Toddler
  6. Categories=Games
  7. Icon=4toddler
  8. Type=Application
  9. Terminal=false
  10. StartupNotify=true


Name - specific name of the application 
GenericName - generic name of the application 
Comment - tooltip for the entry 
Exec - path to program to execute, possibly with arguments 
Categories - categories in which the entry should be shown in a menu. Information about all categories could be found here 
Icon - icon file name 
Type - type of desktop entry. Could be ApplicationLink or Directory 
Terminal
 - whether the program runs in a terminal window 

完整的关于.desktop文件的参数信息可以在这里找到。 

下面我们对外部工程文件做一些修改,我们需要告诉Qt Creator哪个外部文件应该被打包到PRM文件中。 

引用
  1. # Files to be packed and installed
  2. target.path = /opt/com.company.4toddler/
  3. icon.files = Icon/4toddler.png
  4. icon.path = /usr/share/icons/
  5. icon16.files = Icon/16/4toddler.png
  6. icon16.path = /usr/share/icons/hicolor/16x16/apps/
  7. icon32.files = Icon/32/4toddler.png
  8. icon32.path = /usr/share/icons/hicolor/32x32/apps/
  9. icon64.files = Icon/64/4toddler.png
  10. icon64.path = /usr/share/icons/hicolor/64x64/apps/
  11. icon128.files = Icon/128/4toddler.png
  12. icon128.path = /usr/share/icons/hicolor/128x128/apps/
  13. desktop.files = 4Toddler.desktop
  14. desktop.path = /usr/share/applications
  15. sounds.files = Sounds/*.wav
  16. sounds.path = /var/opt/com.company.4toddler/sounds/
  17. ui.files = UI/*.*
  18. ui.path = /var/opt/com.company.4toddler/UI/
  19. stars.files = UI/Stars/*.png
  20. stars.path = /var/opt/com.company.4toddler/UI/Stars/
  21. icons.files = UI/Icons/*.png
  22. icons.path = /var/opt/com.company.4toddler/UI/Icons/
  23. INSTALLS += target icon icon16 icon32 icon64 icon128 desktop sounds ui stars icons

为什么我选择 /opt/com.company.4toddler/ 目录存放二进制文件,而选择 /var/opt/com.company.4toddler/sounds/ 存放程序文件,这些在MeeGo Packaging and Compliance Guidelines都有详细描述。 

最后一件事,我们应该在添加 一个spec 文件到我们的项目中,来指定哪些工程文件用来构建RPM包。添加新文件 4.Toddler.spec : 

引用
  1. # Define package name
  2. %define app_name com.company.4toddler
  3. Name: 4toddler
  4. Version: 1.0.1
  5. Release: 1 License:
  6. Intel Summary: 4 Toddler Application
  7. Url: http://you_company_website.com
  8. Group: Amusements/Games
  9. Requires: libqt >= 4.7.0
  10. %description
  11. Application description
  12. %prep
  13. %setup -q
  14. %build
  15. # Add here commands to compile the package.
  16. make
  17. %install
  18. make install INSTALL_ROOT=%{buildroot}
  19. %files
  20. %defattr(-,root,root,-)
  21. /opt/%{app_name}
  22. %{_datadir}/applications/*.desktop
  23. %{_datadir}/icons/*.png
  24. %{_datadir}/icons/hicolor/16x16/apps/*.png
  25. %{_datadir}/icons/hicolor/32x32/apps/*.png
  26. %{_datadir}/icons/hicolor/64x64/apps/*.png
  27. %{_datadir}/icons/hicolor/128x128/apps/*.png /var/opt/
  28. %{app_name}/sounds/*.wav
  29. /var/opt/%{app_name}/UI/*.*
  30. /var/opt/%{app_name}/UI/Stars/*.*
  31. /var/opt/%{app_name}/UI/Icons/*.*


Name - package name. Name of your application 
Version - software version 
Release - package version 
Url - Url to your application web site 
Group - package group 
Requires - package requirements 


你可以从这里阅读到更多关于 spec 文件的信息。 
正如你所看到的spec文件包含了几个部分,并以 % 标记开头。非常有趣的是%files 部分,在这部分你将指定所有安装文件的路径,如果你忘记包含某些文件的话,那么这些文件将不会被打包并安装。 

提示:要确保所有文件都包含在RPM包中并且路径有效,你可以使用7-zip解压缩工具来查看。 

大功告成!现在你的应用程序已准备好被安装到设备中并提交到intel AppUp center了。但是,在提交到com.companyname.appname.rpm 之前不要忘记重新命名你的RPM包。 

相关链接: 
MeeGo Packaging and Compliance Guidelines 
Integrating the Intel AppUp™ SDK Suite in a MeeGo app 
Building a MeeGo Application for AppUp using Windows Development Environment 
Installing the MeeGo SDK for Windows 
Packaging/Guidelines - MeeGo Wiki 
Packaging/Tutorial - MeeGo Wiki 
Desktop file specifications 
http://www.rpm.org/max-rpm/index.html 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值