[DEV] try to take android soft cration more flexible
This commit is contained in:
parent
6465630a70
commit
d1fe3fe6c3
@ -81,6 +81,9 @@ class module:
|
||||
"DESCRIPTION" : set(""),
|
||||
"VERSION" : set("0.0.0"),
|
||||
"NAME" : set("no-name"), # name of the application
|
||||
"ANDROID_MANIFEST" : set(""), # By default generate the manifest
|
||||
"ANDROID_JAVA_FILES" : ["DEFAULT"], # when user want to create his own services and activities
|
||||
"ANDROID_RESOURCES" : [],
|
||||
"RIGHT" : []
|
||||
}
|
||||
|
||||
@ -611,11 +614,20 @@ class module:
|
||||
self.packageProp[variable] = value
|
||||
elif "NAME" == variable:
|
||||
self.packageProp[variable] = value
|
||||
elif "ANDROID_MANIFEST" == variable:
|
||||
self.packageProp[variable] = value
|
||||
elif "ANDROID_JAVA_FILES" == variable:
|
||||
self.packageProp[variable] = value
|
||||
elif "RIGHT" == variable:
|
||||
self.packageProp[variable] = value
|
||||
elif "ANDROID_RESOURCES" == variable:
|
||||
self.packageProp[variable] = value
|
||||
else:
|
||||
debug.error("not know pak element : '" + variable + "'")
|
||||
|
||||
def pkgAddRight(self, value):
|
||||
self.packageProp["RIGHT"].append(value)
|
||||
def pkgAdd(self, variable, value):
|
||||
# TODO : Check values...
|
||||
self.packageProp[variable].append(value)
|
||||
|
||||
|
||||
|
||||
|
@ -125,73 +125,86 @@ class Target(lutinTarget.Target):
|
||||
|
||||
lutinTools.CopyFile(pkgProperties["ICON"], self.GetStagingFolder(pkgName) + "/res/drawable/icon.png", True)
|
||||
|
||||
debug.printElement("pkg", "AndroidManifest.xml", "<==", "package configurations")
|
||||
tmpFile = open(self.GetStagingFolder(pkgName) + "/AndroidManifest.xml", 'w')
|
||||
tmpFile.write( "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
|
||||
tmpFile.write( "<!-- Manifest is autoGenerated with Ewol ... do not patch it-->\n")
|
||||
tmpFile.write( "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" \n")
|
||||
tmpFile.write( " package=\""+pkgProperties["COMPAGNY_TYPE"]+"."+pkgProperties["COMPAGNY_NAME2"]+"." + pkgName + "\" \n")
|
||||
tmpFile.write( " android:versionCode=\"1\" \n")
|
||||
tmpFile.write( " android:versionName=\""+pkgProperties["VERSION"]+"\"> \n")
|
||||
tmpFile.write( " <uses-feature android:glEsVersion=\"0x00020000\" android:required=\"true\" />\n")
|
||||
tmpFile.write( " <uses-sdk android:minSdkVersion=\"" + str(self.boardId) + "\" /> \n")
|
||||
tmpFile.write( " <uses-feature android:name=\"android.software.live_wallpaper\" /> \n")
|
||||
tmpFile.write( " \n")
|
||||
tmpFile.write( " <application android:label=\"" + pkgName + "\" \n")
|
||||
tmpFile.write( " android:icon=\"@drawable/icon\"")
|
||||
#tmpFile.write( "\n android:permission=\"android.permission.BIND_WALLPAPER\"")
|
||||
tmpFile.write( " >\n")
|
||||
tmpFile.write( " <activity android:name=\"." + pkgName + "\" \n")
|
||||
if "debug"==self.buildMode:
|
||||
tmpFile.write( " android:label=\"" + pkgProperties["NAME"] + "-debug\" \n")
|
||||
|
||||
if (pkgProperties["ANDROID_MANIFEST"]!=""):
|
||||
debug.printElement("pkg", "AndroidManifest.xml", "<==", pkgProperties["ANDROID_MANIFEST"])
|
||||
lutinTools.CopyFile(pkgProperties["ANDROID_MANIFEST"], self.GetStagingFolder(pkgName) + "/AndroidManifest.xml", True)
|
||||
else:
|
||||
tmpFile.write( " android:label=\"" + pkgProperties["NAME"] + "\" \n")
|
||||
tmpFile.write( " android:icon=\"@drawable/icon\" \n")
|
||||
tmpFile.write( " android:hardwareAccelerated=\"true\" \n")
|
||||
tmpFile.write( " android:configChanges=\"orientation\"> \n")
|
||||
tmpFile.write( " <intent-filter> \n")
|
||||
tmpFile.write( " <action android:name=\"android.intent.action.MAIN\" /> \n")
|
||||
tmpFile.write( " <category android:name=\"android.intent.category.LAUNCHER\" /> \n")
|
||||
tmpFile.write( " </intent-filter> \n")
|
||||
tmpFile.write( " </activity> \n")
|
||||
#tmpFile.write( " <service android:name=\""+pkgProperties["COMPAGNY_TYPE"]+"."+pkgProperties["COMPAGNY_NAME2"]+"." + pkgName + "Service\"\n")
|
||||
#tmpFile.write( " android:label=\"" + pkgName + "\" >\n")
|
||||
#tmpFile.write( " <intent-filter>\n")
|
||||
#tmpFile.write( " <action android:name=\"android.service.wallpaper.WallpaperService\" />\n")
|
||||
#tmpFile.write( " </intent-filter>\n")
|
||||
#tmpFile.write( " <meta-data android:name=\"android.service.wallpaper\"/>\n")
|
||||
##tmpFile.write( " android:resource=\"@xml/fallingsnow_wp\" />\n")
|
||||
#tmpFile.write( " </service>\n")
|
||||
tmpFile.write( " </application> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "WRITE_EXTERNAL_STORAGE"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "CAMERA"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.CAMERA\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "INTERNET"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.INTERNET\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "MODIFY_AUDIO_SETTINGS"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "READ_CALENDAR"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.READ_CALENDAR\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "READ_CONTACTS"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.READ_CONTACTS\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "READ_FRAME_BUFFER"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.READ_FRAME_BUFFER\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "READ_PROFILE"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.READ_PROFILE\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "RECORD_AUDIO"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.RECORD_AUDIO\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "SET_ORIENTATION"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.SET_ORIENTATION\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "VIBRATE"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.VIBRATE\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "ACCESS_COARSE_LOCATION"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "ACCESS_FINE_LOCATION"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" /> \n")
|
||||
tmpFile.write( "</manifest>\n\n")
|
||||
tmpFile.flush()
|
||||
tmpFile.close()
|
||||
debug.printElement("pkg", "AndroidManifest.xml", "<==", "package configurations")
|
||||
tmpFile = open(self.GetStagingFolder(pkgName) + "/AndroidManifest.xml", 'w')
|
||||
tmpFile.write( "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n")
|
||||
tmpFile.write( "<!-- Manifest is autoGenerated with Ewol ... do not patch it-->\n")
|
||||
tmpFile.write( "<manifest xmlns:android=\"http://schemas.android.com/apk/res/android\" \n")
|
||||
tmpFile.write( " package=\""+pkgProperties["COMPAGNY_TYPE"]+"."+pkgProperties["COMPAGNY_NAME2"]+"." + pkgName + "\" \n")
|
||||
tmpFile.write( " android:versionCode=\"1\" \n")
|
||||
tmpFile.write( " android:versionName=\""+pkgProperties["VERSION"]+"\"> \n")
|
||||
tmpFile.write( " <uses-feature android:glEsVersion=\"0x00020000\" android:required=\"true\" />\n")
|
||||
tmpFile.write( " <uses-sdk android:minSdkVersion=\"" + str(self.boardId) + "\" /> \n")
|
||||
tmpFile.write( " <uses-feature android:name=\"android.software.live_wallpaper\" /> \n")
|
||||
tmpFile.write( " \n")
|
||||
tmpFile.write( " <application android:label=\"" + pkgName + "\" \n")
|
||||
tmpFile.write( " android:icon=\"@drawable/icon\"")
|
||||
#tmpFile.write( "\n android:permission=\"android.permission.BIND_WALLPAPER\"")
|
||||
tmpFile.write( " >\n")
|
||||
tmpFile.write( " <activity android:name=\"." + pkgName + "\" \n")
|
||||
if "debug"==self.buildMode:
|
||||
tmpFile.write( " android:label=\"" + pkgProperties["NAME"] + "-debug\" \n")
|
||||
else:
|
||||
tmpFile.write( " android:label=\"" + pkgProperties["NAME"] + "\" \n")
|
||||
tmpFile.write( " android:icon=\"@drawable/icon\" \n")
|
||||
tmpFile.write( " android:hardwareAccelerated=\"true\" \n")
|
||||
tmpFile.write( " android:configChanges=\"orientation\"> \n")
|
||||
tmpFile.write( " <intent-filter> \n")
|
||||
tmpFile.write( " <action android:name=\"android.intent.action.MAIN\" /> \n")
|
||||
tmpFile.write( " <category android:name=\"android.intent.category.LAUNCHER\" /> \n")
|
||||
tmpFile.write( " </intent-filter> \n")
|
||||
tmpFile.write( " </activity> \n")
|
||||
#tmpFile.write( " <service android:name=\""+pkgProperties["COMPAGNY_TYPE"]+"."+pkgProperties["COMPAGNY_NAME2"]+"." + pkgName + "Service\"\n")
|
||||
#tmpFile.write( " android:label=\"" + pkgName + "\" >\n")
|
||||
#tmpFile.write( " <intent-filter>\n")
|
||||
#tmpFile.write( " <action android:name=\"android.service.wallpaper.WallpaperService\" />\n")
|
||||
#tmpFile.write( " </intent-filter>\n")
|
||||
#tmpFile.write( " <meta-data android:name=\"android.service.wallpaper\"/>\n")
|
||||
##tmpFile.write( " android:resource=\"@xml/fallingsnow_wp\" />\n")
|
||||
#tmpFile.write( " </service>\n")
|
||||
tmpFile.write( " </application> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "WRITE_EXTERNAL_STORAGE"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.WRITE_EXTERNAL_STORAGE\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "CAMERA"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.CAMERA\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "INTERNET"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.INTERNET\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "MODIFY_AUDIO_SETTINGS"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "READ_CALENDAR"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.READ_CALENDAR\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "READ_CONTACTS"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.READ_CONTACTS\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "READ_FRAME_BUFFER"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.READ_FRAME_BUFFER\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "READ_PROFILE"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.READ_PROFILE\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "RECORD_AUDIO"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.RECORD_AUDIO\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "SET_ORIENTATION"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.SET_ORIENTATION\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "VIBRATE"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.VIBRATE\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "ACCESS_COARSE_LOCATION"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\" /> \n")
|
||||
if True==self.CheckRightPackage(pkgProperties, "ACCESS_FINE_LOCATION"):
|
||||
tmpFile.write( " <uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\" /> \n")
|
||||
tmpFile.write( "</manifest>\n\n")
|
||||
tmpFile.flush()
|
||||
tmpFile.close()
|
||||
# end generating android manifest
|
||||
|
||||
#copy needed resources :
|
||||
for res_source, res_dest in pkgProperties["ANDROID_RESOURCES"]:
|
||||
if res_source == "":
|
||||
continue
|
||||
lutinTools.CopyFile(res_source , self.GetStagingFolder(pkgName) + "/res/" + res_dest + "/" + os.path.basename(res_source), True)
|
||||
|
||||
|
||||
# Doc :
|
||||
# http://asantoso.wordpress.com/2009/09/15/how-to-build-android-application-package-apk-from-the-command-line-using-the-sdk-tools-continuously-integrated-using-cruisecontrol/
|
||||
@ -211,16 +224,26 @@ class Target(lutinTarget.Target):
|
||||
debug.printElement("pkg", "*.class", "<==", "*.java")
|
||||
# more information with : -Xlint
|
||||
# + self.file_finalAbstraction + " "\ # this generate ex: out/Android/debug/staging/tethys/src/com/edouarddupin/tethys/edn.java
|
||||
|
||||
#generate android java files:
|
||||
filesString=""
|
||||
for element in pkgProperties["ANDROID_JAVA_FILES"]:
|
||||
if element=="DEFAULT":
|
||||
filesString += self.folder_ewol + "/sources/android/src/org/ewol/EwolAudioTask.java "
|
||||
filesString += self.folder_ewol + "/sources/android/src/org/ewol/EwolCallback.java "
|
||||
filesString += self.folder_ewol + "/sources/android/src/org/ewol/EwolConstants.java "
|
||||
filesString += self.folder_ewol + "/sources/android/src/org/ewol/Ewol.java "
|
||||
filesString += self.folder_ewol + "/sources/android/src/org/ewol/EwolRendererGL.java "
|
||||
filesString += self.folder_ewol + "/sources/android/src/org/ewol/EwolSurfaceViewGL.java "
|
||||
filesString += self.folder_ewol + "/sources/android/src/org/ewol/EwolActivity.java "
|
||||
else:
|
||||
filesString += element + " "
|
||||
|
||||
|
||||
cmdLine = "javac " \
|
||||
+ "-d " + self.GetStagingFolder(pkgName) + "/build/classes " \
|
||||
+ "-classpath " + self.folder_sdk + "/platforms/android-" + str(self.boardId) + "/android.jar " \
|
||||
+ self.folder_ewol + "/sources/android/src/org/ewol/EwolAudioTask.java " \
|
||||
+ self.folder_ewol + "/sources/android/src/org/ewol/EwolCallback.java " \
|
||||
+ self.folder_ewol + "/sources/android/src/org/ewol/EwolConstants.java " \
|
||||
+ self.folder_ewol + "/sources/android/src/org/ewol/Ewol.java " \
|
||||
+ self.folder_ewol + "/sources/android/src/org/ewol/EwolRendererGL.java " \
|
||||
+ self.folder_ewol + "/sources/android/src/org/ewol/EwolSurfaceViewGL.java " \
|
||||
+ self.folder_ewol + "/sources/android/src/org/ewol/EwolActivity.java " \
|
||||
+ filesString \
|
||||
+ self.file_finalAbstraction + " " \
|
||||
+ self.GetStagingFolder(pkgName) + "/src/R.java "
|
||||
lutinMultiprocess.RunCommand(cmdLine)
|
||||
|
Loading…
x
Reference in New Issue
Block a user