Skip to main content

Android SDK cozies up to Kotlin







Close Ad



consent.ads.queue.push(function(){

IDG.GPT.addDisplayedAd("gpt-overlay", "true");
IDG.GPT.displayGoogleTagSlot('gpt-overlay');

});






Close Ad






consent.ads.queue.push(function(){

IDG.GPT.addDisplayedAd("gpt-overlay", "true");
IDG.GPT.displayGoogleTagSlot('gpt-overlay');

});




















<!--

-->












$('.signin-register').hide();
$('#welcome-message').hide();








<!--

-->


















Hi! Here are the latest Insider stories.






















































































  • What’s new in Julia: Version 1.0 is here



















































  • Going multicloud? Avoid these 3 pitfalls



















































  • What’s new in Google’s V8 JavaScript engine Version 6.9



















































  • Data in, intelligence out: Machine learning pipelines demystified

















Hi! Here are the latest Insider stories.






















































































  • What’s new in Julia: Version 1.0 is here



















































  • Going multicloud? Avoid these 3 pitfalls



















































  • What’s new in Google’s V8 JavaScript engine Version 6.9



















































  • Data in, intelligence out: Machine learning pipelines demystified















Hi! Here are the latest Insider stories.






















































































  • What’s new in Julia: Version 1.0 is here



















































  • Going multicloud? Avoid these 3 pitfalls



















































  • What’s new in Google’s V8 JavaScript engine Version 6.9



















































  • Data in, intelligence out: Machine learning pipelines demystified









Hi! Here are the latest Insider stories.




Suggestions for you



































































































































consent.ads.queue.push(function(){

IDG.GPT.addDisplayedAd("ticker", "true");
$('#ticker').responsiveAd({screenSize:'971 1115', scriptTags: });
IDG.GPT.log("Creating ad: ticker - [971 1115]");

});





























































































































Android SDK cozies up to Kotlin






Nullability annotations accompany the Android 9 Pie debut






















































































var isValidEmailAddress = isValidEmailAddress || function(emailAddress) {
var pattern = new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,5}$/i);
return pattern.test(emailAddress);
};
function encodeQueryData(params) {
var ret = ;
for (var paramKey in params) {
ret.push(encodeURIComponent(paramKey) + "=" + encodeURIComponent(params[paramKey]));
}
return ret.join("&");
}
function bindEmailModal() {
$('#emailModal').on("click",".close-btn",function(event) {
event.preventDefault();
$('#emailModal').hide();
$("#emailModal .eml-friend").show();
$(".eml-friend-success").hide();
$(".eml-friend-error").hide();
$('#emailModal').fadeOut(200);
$('#email-to').val('');
$('#email-from').val('');
$('#name').val('');
$('#personalization').val('');
$('#eml-from-address-message').html("");
$('#eml-to-address-message').html("");
$('#eml-friend-captcha-message').html("");
});

$('#emailModal').on("submit","form",function(event) {
event.preventDefault();
var $form = $(this);
var action = $form.attr('action');
var formData = $form.serialize();
var emailFrom = $('#email-from').val();
var emailTo = $('#email-to').val();
var uresponse=$('#g-recaptcha-response').val();
$('#eml-from-address-message').html("");
$('#eml-to-address-message').html("");
$('#eml-friend-captcha-message').html("");
if (isValidEmailAddress(emailFrom) && isValidEmailAddress(emailTo) && uresponse !="") {
// eloqua

var eloquaParam = {
AssetCountforCurrentCampaign : "1",
AssetName : "",
AssetTopic : "",
AssetType : "",
BuyingCycle : "",
C_Address1 : "",
C_Address2 : "",
C_BusPhone : "",
C_City : "",
C_Company_Size1 : "",
C_Country : "",
C_EmailAddress : "",
C_FirstName : "",
C_Industry1 : "",
C_Job_Role1 : "",
C_LastName : "",
C_State_Prov : "",
C_Zip_Postal : "",
ClientName : "",
ProgramName : "",
brand : "",
elqFormName : "CentralRegistrationMasterForm",
formId : "3062313",
elqSiteId : 1856,
elqCustomerGUID : elqCustomerGUID,
elqCookieWrite : 0,
friend_email : emailFrom,
friend_article_title : "Android SDK cozies up to Kotlin",
friend_taxo : "Software Development",
friend_source : "InfoWorld",
friend_article_url : "https://www.infoworld.com/article/3296356/mobile-development/android-sdk-cozies-up-to-kotlin.html",
device_platform : navigator.userAgent
};
$.ajax("https://secure.p01.eloqua.com/e/f2.aspx", {
type: 'GET',
data: eloquaParam,
success: function(data, textStatus, xhr) {
},
error: function(xhr, textStatus, errorThrown) {
}
});
// eloqua
var eloquaParamMini = {
elqCustomerGUID : elqCustomerGUID,
friend_taxo : "Software Development",
friend_source : "InfoWorld",
device_platform : navigator.userAgent
};
formData += "&" +encodeQueryData(eloquaParamMini);

// email
$.ajax(action, {
type: 'POST',
data: formData,
success: function(data, textStatus, xhr) {
$("#emailModal .eml-friend").hide();
$(".eml-friend-success").fadeIn(800);
},
error: function(xhr, textStatus, errorThrown) {
$("#emailModal .eml-friend").hide();
$(".eml-friend-error").fadeIn(800);
}
});
}
else {
if(uresponse==""){
$('#eml-friend-captcha-message').html("Please verify you're not a robot!");
}
if(!isValidEmailAddress(emailTo)){
$('#eml-to-address-message').html("Please enter a valid email address.");
}
if(!isValidEmailAddress(emailFrom)){
$('#eml-from-address-message').html("Please enter a valid email address.");
}
}
});
} //bindEmailModal() end

$(document).ready(function() {
$(document).on("click","#email-icon",function(event) {
event.preventDefault();
bindEmailModal();
$('#emailModal').fadeIn(800);
});
});
























































consent.ads.queue.push(function(){

IDG.GPT.addDisplayedAd("topleaderboard", "true");
$('#topleaderboard').responsiveAd({screenSize:'971 1115', scriptTags: });
IDG.GPT.log("Creating ad: topleaderboard - [971 1115]");

});











Android SDK cozies up to Kotlin



Ryan Whitwam/IDG


























































































consent.ads.queue.push(function(){
if($(window).width() >= 930) {
IDG.GPT.addDisplayedAd("topimu", "true");
$('#topimu').responsiveAd({screenSize:'971 1115', scriptTags: });
IDG.GPT.log("Creating ad: topimu - [971 1115]");
}
});






































consent.ads.queue.push(function(){
IDG.GPT.addDisplayedAd("inread", "true");
IDG.GPT.displayGoogleTagSlot('inread');
});















var dataLayer = window.dataLayer = window.dataLayer || ;
dataLayer.push({
'event': 'loadTopCollectionModule'
});


$(document).ready(function() {
$('.articleBloxAd').filter( ":visible" ).each(function(index, item) {
var id = $(item).attr('id');
var divClass = $(item).attr('class');
var adString = IDG.GPT.getLazyAdCode();
$(item).replaceWith("
" + adString + "









































consent.ads.queue.push(function(){

IDG.GPT.addDisplayedAd("ticker", "true");
$('#ticker').responsiveAd({screenSize:'971 1115', scriptTags: });
IDG.GPT.log("Creating ad: ticker - [971 1115]");

});




























































































var isValidEmailAddress = isValidEmailAddress || function(emailAddress) {
var pattern = new RegExp(/^[+a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+.[a-zA-Z]{2,5}$/i);
return pattern.test(emailAddress);
};
function encodeQueryData(params) {
var ret = ;
for (var paramKey in params) {
ret.push(encodeURIComponent(paramKey) + "=" + encodeURIComponent(params[paramKey]));
}
return ret.join("&");
}
function bindEmailModal() {
$('#emailModal').on("click",".close-btn",function(event) {
event.preventDefault();
$('#emailModal').hide();
$("#emailModal .eml-friend").show();
$(".eml-friend-success").hide();
$(".eml-friend-error").hide();
$('#emailModal').fadeOut(200);
$('#email-to').val('');
$('#email-from').val('');
$('#name').val('');
$('#personalization').val('');
$('#eml-from-address-message').html("");
$('#eml-to-address-message').html("");
$('#eml-friend-captcha-message').html("");
});

$('#emailModal').on("submit","form",function(event) {
event.preventDefault();
var $form = $(this);
var action = $form.attr('action');
var formData = $form.serialize();
var emailFrom = $('#email-from').val();
var emailTo = $('#email-to').val();
var uresponse=$('#g-recaptcha-response').val();
$('#eml-from-address-message').html("");
$('#eml-to-address-message').html("");
$('#eml-friend-captcha-message').html("");
if (isValidEmailAddress(emailFrom) && isValidEmailAddress(emailTo) && uresponse !="") {
// eloqua

var eloquaParam = {
AssetCountforCurrentCampaign : "1",
AssetName : "",
AssetTopic : "",
AssetType : "",
BuyingCycle : "",
C_Address1 : "",
C_Address2 : "",
C_BusPhone : "",
C_City : "",
C_Company_Size1 : "",
C_Country : "",
C_EmailAddress : "",
C_FirstName : "",
C_Industry1 : "",
C_Job_Role1 : "",
C_LastName : "",
C_State_Prov : "",
C_Zip_Postal : "",
ClientName : "",
ProgramName : "",
brand : "",
elqFormName : "CentralRegistrationMasterForm",
formId : "3062313",
elqSiteId : 1856,
elqCustomerGUID : elqCustomerGUID,
elqCookieWrite : 0,
friend_email : emailFrom,
friend_article_title : "Android SDK cozies up to Kotlin",
friend_taxo : "Software Development",
friend_source : "InfoWorld",
friend_article_url : "https://www.infoworld.com/article/3296356/mobile-development/android-sdk-cozies-up-to-kotlin.html",
device_platform : navigator.userAgent
};
$.ajax("https://secure.p01.eloqua.com/e/f2.aspx", {
type: 'GET',
data: eloquaParam,
success: function(data, textStatus, xhr) {
},
error: function(xhr, textStatus, errorThrown) {
}
});
// eloqua
var eloquaParamMini = {
elqCustomerGUID : elqCustomerGUID,
friend_taxo : "Software Development",
friend_source : "InfoWorld",
device_platform : navigator.userAgent
};
formData += "&" +encodeQueryData(eloquaParamMini);

// email
$.ajax(action, {
type: 'POST',
data: formData,
success: function(data, textStatus, xhr) {
$("#emailModal .eml-friend").hide();
$(".eml-friend-success").fadeIn(800);
},
error: function(xhr, textStatus, errorThrown) {
$("#emailModal .eml-friend").hide();
$(".eml-friend-error").fadeIn(800);
}
});
}
else {
if(uresponse==""){
$('#eml-friend-captcha-message').html("Please verify you're not a robot!");
}
if(!isValidEmailAddress(emailTo)){
$('#eml-to-address-message').html("Please enter a valid email address.");
}
if(!isValidEmailAddress(emailFrom)){
$('#eml-from-address-message').html("Please enter a valid email address.");
}
}
});
} //bindEmailModal() end

$(document).ready(function() {
$(document).on("click","#email-icon",function(event) {
event.preventDefault();
bindEmailModal();
$('#emailModal').fadeIn(800);
});
});






















































To


Use commas to separate multiple email addresses








From







































Privacy Policy




Thank you


Your message has been sent.






Sorry


There was an error emailing this page.












































consent.ads.queue.push(function(){

IDG.GPT.addDisplayedAd("topleaderboard", "true");
$('#topleaderboard').responsiveAd({screenSize:'971 1115', scriptTags: });
IDG.GPT.log("Creating ad: topleaderboard - [971 1115]");

});









More like this





  • darts dart board bulls eye game


    What’s new in Google’s Dart 2 language

























  • raining data on keyboard programming developer code


    What’s new in Microsoft’s Visual Studio 2017

























  • aliens


    How to develop cross-platform apps more easily with Xamarin.Essentials









































































































































  • template c100.00 04 55 16.still001

    Video

    R tip: Create maps in R

















More like this




What’s new in Google’s Dart 2 language



What’s new in Google’s Dart 2 language




What’s new in Microsoft’s Visual Studio 2017



What’s new in Microsoft’s Visual Studio 2017




How to develop cross-platform apps more easily with Xamarin.Essentials



How to develop cross-platform apps more easily with Xamarin.Essentials



Video

R tip: Create maps in R



Video


R tip: Create maps in R
















































consent.ads.queue.push(function(){
if($(window).width() >= 930) {
IDG.GPT.addDisplayedAd("topimu", "true");
$('#topimu').responsiveAd({screenSize:'971 1115', scriptTags: });
IDG.GPT.log("Creating ad: topimu - [971 1115]");
}
});








































consent.ads.queue.push(function(){
IDG.GPT.addDisplayedAd("inread", "true");
IDG.GPT.displayGoogleTagSlot('inread');
});












With the August 6 production debut of the Android 9 Pie mobile OS, Google has released an Android SDK with special capabilities for development with the Kotlin language.


The SDK has nullability annotations for frequently used APIs, preserving null-safety guarantees when Kotlin code is calling into annotated APIs in the SDK. To ensure that newly annotated APIs are compatible with existing code, an internal mechanism provided by the Kotlin compiler team marks APIs as recently annotated. These APIs result in warnings instead of errors from the Kotlin compiler. Developers need to use Kotlin 1.2.60 or later.


The intention is for newly added nullability annotations to only produce warnings, with the severity level increased to errors starting in a subsequent SDK. Google wants to give developers time to update their code by this stepped error messaging.


Google has endorsed Kotlin for use in building Android applications. But nullability annotations also can benefit developers using Java, the traditional language of Android development, if they use the Android Studio IDE to find nullability contract violations. Plans call for adding more nullability annotations to existing Android APIs in future versions of the SDK as well as ensuring new APIs are annotated.


Where to download the Kotlin-friendly Android SDK


You can download the Android SDK by choosing Tools > SDK Manager in Android Studio and selecting Android SDK on the left menu. The SDK Platforms tab must be open. Check Android 8.+ and click OK to install Android SDK Platform 28 revision 6. Then, set a project’s compile SDK version to API 28. You can download Android Studio from the project website.




























































































































































































Related:

  • Mobile Development


  • Software Development


















Paul Krill is an editor at large at InfoWorld, whose coverage focuses on application development.














  • Stay up to date with InfoWorld’s newsletters for software developers, analysts, database programmers, and data scientists.


  • Get expert insights from our member-only Insider articles.





  







<!--
document.write('
');
consent.ads.queue.push(function(){
IDG.GPT.addDisplayedAd("ciu", "true");
IDG.GPT.addLazyloadedAd("ciu", "true");
});
document.write('
');
consent.ads.queue.push(function(){
$('#ciu').responsiveAd({screenSize:'971 1115', scriptTags: });
if (Object.keys(IDG.GPT.companions).length > 0 || IDG.GPT.disableInitialLoad) {
IDG.GPT.refreshAd('ciu');
}
});
//-->



Sponsored Links











Copyright © 2018 IDG Communications, Inc.




Explore the IDG Network descend


  • CIO


  • CIO Asia


  • Computerworld


  • CSO


  • GameStar


  • Greenbot


  • IDC


  • IDG


  • IDG Connect


  • IDG.TV


  • InfoWorld


  • IT News


  • ITwhitepapers


  • ITworld


  • JavaWorld


  • Macworld


  • Network World


  • PCWorld


  • TechConnect


  • TechHive


  • The Full Nerd












Explore the IDG Network descend


  • CIO


  • CIO Asia


  • Computerworld


  • CSO


  • GameStar


  • Greenbot


  • IDC


  • IDG


  • IDG Connect


  • IDG.TV


  • InfoWorld


  • IT News


  • ITwhitepapers


  • ITworld


  • JavaWorld


  • Macworld


  • Network World


  • PCWorld


  • TechConnect


  • TechHive


  • The Full Nerd









Explore the IDG Network descend


  • CIO


  • CIO Asia


  • Computerworld


  • CSO


  • GameStar


  • Greenbot


  • IDC


  • IDG


  • IDG Connect


  • IDG.TV


  • InfoWorld


  • IT News


  • ITwhitepapers


  • ITworld


  • JavaWorld


  • Macworld


  • Network World


  • PCWorld


  • TechConnect


  • TechHive


  • The Full Nerd






Explore the IDG Network descend














The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP

Popular posts from this blog

How to make file upload 'Required' in Contact Form 7?

Rothschild family

amazon EC2 - How to make wp-config.php to writable?